IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

NetBeans Java Discussion :

[OpenSuSE / NetBeans 7.0.1] Impression d'un fichier PDF


Sujet :

NetBeans Java

  1. #1
    Membre averti

    Homme Profil pro
    Enseignant
    Inscrit en
    Septembre 2012
    Messages
    313
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : Septembre 2012
    Messages : 313
    Points : 354
    Points
    354
    Par défaut [OpenSuSE / NetBeans 7.0.1] Impression d'un fichier PDF
    Bonjour,

    Je voudrais savoir si il existe une solution pour pouvoir imprimer un fichier PDF (un exemplaire de bulletin) qui a été généré dans microsoft Word.
    Ce qui m'intéresserait ce serait de pouvoir inclure des champs bien précis dans le fichier Word et l'exporter en PDF et dans mon Applet java pouvoir remplir/modifier ces champs avant d'imprimer le contenu.
    Est-ce possible ?
    Y a-t-il possibilité de se servir de l'image du fichier PDF comme une image de fond pour l'impression et d'y poser les données par dessus (en avant plan).
    Le fichier fait évidemment plusieurs pages (multiple page document)...

    Si vous avez des idées ou des conseils n"hésitez pas à m'en faire part, là je suis dépité du travail à faire pour tracer les lignes/cadres pour refaire le bulletin à l'identique (plus ou moins) au pixel près.

    Merci d'avance !

  2. #2
    Expert éminent sénior
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 481
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 481
    Points : 48 806
    Points
    48 806
    Par défaut
    Personellement, j'ai déjà eu un PDF "à remplir" par le passé. Au lieu de se casser la nénette à le reproduire, on a utilisé itext et ses possibilité d'overlay pour ajouter une surcouche de text sur une page existante. Le plus gros du boulot à été de positionner correctement le texte sur l'image de fond, et même là c'est pas parfait, ca donne l'impression d'un document qu'on a mis dans une machine à écrire pour remplir les blancs: y a des décalages.

    Mais ça vaut le coup d'essayer.


    Sinon, en général, pour réaliser des PDF à partir de document word, en général j'utilise openoffice + jodreports coté serveur.

  3. #3
    Membre averti

    Homme Profil pro
    Enseignant
    Inscrit en
    Septembre 2012
    Messages
    313
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : Septembre 2012
    Messages : 313
    Points : 354
    Points
    354
    Par défaut
    Je me disais bien qu'enacceptant ce "petit service" ça allait me faire perdre du temps ^^

    Merci de m'aiguiller, je vais me renseigner sur les logiciels/technologies que vous avez déjà utlisé... voir ce que je pourrais faire...

  4. #4
    Membre averti

    Homme Profil pro
    Enseignant
    Inscrit en
    Septembre 2012
    Messages
    313
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : Septembre 2012
    Messages : 313
    Points : 354
    Points
    354
    Par défaut
    Ca semble bien parti au niveau du code java en tout cas, maintenant techniquement j'ai un soucis: je sauvegarde un fichier test dans lequel j'ai tapé des champs de type texte, via libreOffice. Ces champs ont un nom et le type défini est texte.
    Je l'exporte au format pdf certes mais en utilisant FDF (form data format)
    Dans la classe AcroFields je devrais récupérer ces champs mais à mon grand malheur la taille du champs Fields reste désespérément à 0 et le test de la méthode setField() retourne faux ce qui signifie en gros: j'ai pas trouvé le champs ou j'ai pas su le changer (moi j'opte pour la première proposition).

    La seule solution trouvé est de préférer FdfReader à PdfReader...
    Mais là j'ai une exception avec un message "FDF header not found", comme si libreOffice n'exportait pas du vrai FDF...

    Au secours !!

  5. #5
    Membre confirmé
    Avatar de deletme
    Homme Profil pro
    Inscrit en
    Janvier 2011
    Messages
    257
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Indre et Loire (Centre)

    Informations professionnelles :
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2011
    Messages : 257
    Points : 519
    Points
    519
    Par défaut
    Bonjour,

    Si j'ai bien tout compris, tu souhaite remplir un formulaire PDF généré à partir de LibreOffice.

    J'ai effectué cette opération lors d'un précédent projet et voici quelques indications :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    reader = new PdfReader(TonFichierSource); // Création d'un reader lié au pdf Source 
     
    // Création d'un Stamper qui scan le reader
    PdfStamper stamp = new PdfStamper(reader, new FileOutputStream(TonFichierRempli));
     
    // Récupération des champs dynamiques du formulaire
    AcroFields form = stamp.getAcroFields();
     
    /**** REMPLISSAGE DES CHAMPS *****/
     
    form.setField("TonChampTexte", "valeur");
     
     stamp.setFormFlattening(true); // Minimisation de la mémoire tampon
     stamp.close();
    Il faut bien t'assurer que ton fichier PDF générer soit un formulaire (je te conseille de passer par un tableur c'est plus simple à faire) et que le nom de l'objet du formulaire soit le même que lorsque tu appelles la méthode setField.

    A partir de là tout devrait bien aller.

    Bon courage
    "Always code as if the guy who ends up maintaining your code will be a violent psychopath who knows where you live."
    - Martin Golding
    Traduction obligatoire : "Toujours écrire du code en gardant en tête que le mec qui en assurera la maintenance est un psychopathe violent qui connait votre adresse"

  6. #6
    Membre averti

    Homme Profil pro
    Enseignant
    Inscrit en
    Septembre 2012
    Messages
    313
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : Septembre 2012
    Messages : 313
    Points : 354
    Points
    354
    Par défaut
    C'est plus galère que ce que je n'imaginais...
    Effectivement le fichier source en odt ou doc n'est pas un formulaire.
    Même si le pdf résultant est sauvegardé au format FDF, il manque probablement des informations propres aux formulaires façon Adobe.
    Les champs que j'ai ajouté dans le fichier ne sont que des champs certes utiles dans leur contexte mais pour FDF (format propriétaire à Adobe) ça ne suffit pas.
    Il n'y a pas de miracles ^^
    Je suis condamné à utiliser un logiciel bien cher (pas encore trouvé équivalent en open source) pour prendre un fichier odt ou doc et nommer chaque champs puis sauvegarder en pdf/fdf.
    La seule solution que j'aie envisagé c'est le PdfStamper, mais là il faut calculer nous mêmes au pixel près la position de la zone texte, je ne sais pas ce qui est le plus galère ^^
    iText est une librairie magnifique mais là où ça coince c'est FDF... je pensais que c'était plus simple à utiliser...

  7. #7
    Membre expérimenté
    Avatar de azerr
    Homme Profil pro
    Ingénieur Etude JEE/Eclipse RCP
    Inscrit en
    Avril 2006
    Messages
    942
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Drôme (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur Etude JEE/Eclipse RCP
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Avril 2006
    Messages : 942
    Points : 1 464
    Points
    1 464
    Par défaut
    Bonjour hurukan,

    Mon mesage arrive surement trop tard, mais peut etre que XDocReport pourrait t'intereser.

    Avec XDocReport tu crees ton rapport avec LibreOffice ou MS WOrd (docx ou odt) et tu utilises des champs de fusion avec une syntaxe Velocity/Freemarker. Tu merge ensuite le rapport que tu as créés avec des données provenant d'un contexte Java. Il est possible aussi de convertir ton odt ou docx généré en PDF ou HTML.

    XDocReport est full Java, ce qui signifie que tu n'as pas besoin d'installer un LibreOffice ou MS Word sur le serveur (meme pour la conversion).

    Tu as un exemple de rapport odt qui est converti en PDF sur http://xdocreport.opensagres.cloudbe...treRelance.odt Modifies le formulaire avec des nouvelles données et le rapport se rafraichit en temps réel.

    Angelo

Discussions similaires

  1. Impression d'un fichier PDF sur une imprimante de mon choix
    Par juhel philippe dans le forum Documents
    Réponses: 2
    Dernier message: 04/11/2008, 18h10
  2. Impression dans un fichier PDF
    Par Souleyre dans le forum VB 6 et antérieur
    Réponses: 10
    Dernier message: 08/05/2008, 23h06
  3. impression d'un fichier pdf
    Par vince2005 dans le forum Langage
    Réponses: 3
    Dernier message: 26/09/2007, 00h16
  4. Impression d'un fichier PDF
    Par Orionmel dans le forum VB.NET
    Réponses: 3
    Dernier message: 28/04/2007, 22h51
  5. impression d'un fichier PDF
    Par rogger dans le forum Access
    Réponses: 6
    Dernier message: 01/01/2006, 17h31

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo