Créer des multi-document d'une page dynamiquement à l'aide de PDFBox
Je tente de créer un fichier PDF à partir d'un jeu de résultats Java. Si le rapport a été qu'une seule page, je n'aurais aucun problème ici. Le problème vient du fait que le rapport pourrait être n'importe où de un à dix pages. Pour l'instant j'ai ceci pour créer un document d'une page:
PDDocument document = new PDDocument();
PDPage page = new PDPage(PDPage.PAGE_SIZE_LETTER);
document.addPage(page);
PDPageContentStream content = new PDPageContentStream(document,page);
Donc ma question est, comment puis-je créer des pages dynamiquement comme ils sont nécessaires. Est-il orienté objet réponse me regarder en face et je ne vois pas?
Quel est si mauvais (dans le contexte de la très faible niveau PDFBox la création de la page de l'API) sur
oui, je vous remercie! Comme je m'y attendais, la réponse était couchée juste sous mon nez.
page = new PDPage
, document.addPage(page)
, et content = new PDPageContentStream
à chaque fois que votre page est pleine?oui, je vous remercie! Comme je m'y attendais, la réponse était couchée juste sous mon nez.
OriginalL'auteur LiquidDrummer | 2014-02-24
Vous devez vous connecter pour publier un commentaire.
Comme je m'y attendais, la réponse a été de me regarder droit dans les yeux, j'ai juste besoin de quelqu'un à point pour moi.
Grâce à @mkl pour la réponse.
Lors de l'utilisation de cet exemple, j'ai reçu un avertissement "pdmodel.PDPageContentStream.<init>: Vous êtes remplacement d'un contenu, vous devez utiliser le mode append" et seule la dernière page du document PDF a été écrit dans le fichier". Je l'ai résolu en utilisant le constructeur avec 2 paramètres booléens: contenu = new PDPageContentStream(doc, page, true, true);
OriginalL'auteur LiquidDrummer
Pour Créer des Multi Page PDF Document à l'aide de PDFBox:
(a) Créer une nouvelle page, nouveau flux de contenu, Déplacer vers le Haut à Gauche, commencez à écrire. Lors de l'écriture de chaque mot de vérifier si l'espace nécessaire est de ne pas traverser la mediabox largeur. Si les croix, les passer à la prochaine ligne de gauche et de commencer à écrire. Continuer à écrire jusqu'à la dernière ligne de la page.
(b) Fermer le contentStream et ajouter la page en cours sur le document lors de l'opération d'écriture est arrivée à la dernière ligne de la page courante,
(c) Répéter les étapes (a) et (b) jusqu'à ce que le dernier enregistrement/ligne/ligne est écrite.
Astuce: l'Utilisation de la Police des paramètres comme la taille ou de la hauteur et des médias hauteur de la zone pour déterminer la dernière ligne de la page.
OriginalL'auteur AVA