Modifier pdf page à l'aide de pdfbox
Comment puis-je modifier une page pdf avec java et pdfbox par écrit, dans une position spécifique qui, je le sais déjà en pixels ?
J'ai essayé cela, mais il remplace :
PDDocument document = null;
try {
document = PDDocument.load(new File("/x/x/x/mypdf.pdf"));
PDPage page = (PDPage) document.getDocumentCatalog().getAllPages().get(0);
PDFont font = PDType1Font.HELVETICA_BOLD;
PDPageContentStream contentStream = new PDPageContentStream(document, page);
page.getContents().getStream();
contentStream.beginText();
contentStream.setFont(font, 12);
contentStream.moveTextPositionByAmount(100, 100);
contentStream.drawString("Hello");
contentStream.endText();
contentStream.close();
document.save("/x/x/x/mypdf.pdf");
document.close();
} catch (IOException e) {
e.printStackTrace();
} catch (COSVisitorException e) {
e.printStackTrace();
}
Merci.
OriginalL'auteur Monssef | 2013-07-16
Vous devez vous connecter pour publier un commentaire.
Vous pourriez avoir utilisé PDFBox, tout ce que vous manque, c'est l'ajout de la page. Il suffit de changer cette ligne:
:
À partir de PDFBox 2.0, le
boolean
appendContent
a été remplacé par leAppendMode
APPEND
tels que l'équivalent du code précédent est maintenant:OriginalL'auteur Anita Kulkarni
Je l'ai trouver comment le faire, au lieu d'utiliser pdfbox j'ai utilisé iTextpdf, c'est le code java que j'ai utilisé :
OriginalL'auteur Monssef
Anita est correct. En fait, il fonctionne très bien. Je voudrais ajouter que la ligne
est peut-être superflu, et PDPage est amorti en faveur de PDPageable dans les versions plus récentes (et est principalement utilisé pour l'impression), mais le code fonctionne pour votre but, sans aller au détriment de la bibliothèque iText (et après tout, ce que vous demandiez PDFBox).
N'oubliez pas d'inclure le correctif Anita a donné à créer des bits supplémentaires dans la création de contentstream:
Vous devez également vous rappeler que vous serez probablement de la création et de fermeture de flux pour chaque section de l'impression que vous placez sur le dessus de la pdf vous sont superposition de texte. Vous devrez assurez-vous de fermer le flux et le document de sorte que les tampons sont écrites, sinon vous ne verrez pas vos modifications.
Aussi, pour ceux qui essaient de tout ça, il y a plusieurs options de téléchargement des bibliothèques de apache pour pdfbox. Le plus simple à utiliser, je pense, est (pour l'instant) le nom de pdfbox-app-1.8.10.jar (que je suis actuellement en utilisant la même dans mon JSF apps). Il comprend déjà les autres bibliothèques qui sont câblés en pdfbox que vous aussi, vous avez besoin de télécharger de faire quelque chose de valable.
PDPageContentStream
constructeur avec trois paramètres booléens est un meilleur choix. Il essaie de vous assurer qu'au début de la nouvelle ruisseau de l'état graphique est dans un état par défaut.Je suis d'accord avec cela. Pas obligatoire, mais il est agréable de connaître l'état de la carte graphique est quand vous faites chaque chose que vous devez faire. Il est dommage que l'OP a répondu à sa propre question en ignorant le rôle qu'il a écrit qui dit "avec java et pdfbox" pour donner un itext réponse qu'il a ensuite accepté. Anita lui a donné une réponse qui a travaillé et s'adapter à la question.
OriginalL'auteur FreedomRings