Les projets changent, les exigences changent et les programmeurs immuables tapent toujours sur les claviers ...
Une fois le PDF généré, vous devez parfois ajouter un autre contenu au PDF, tel que du texte, des images ...
Après plusieurs tentatives infructueuses, j'ai finalement obtenu la bonne façon d'écrire le code.
Ce dossier et résumer, afin que la prochaine fois que vous serez inchangé et que vous vous adaptez aux modifications, veuillez passer à: générer un guide complet PDF
Pdfreader reader = new Pdfreader ("e: //a.pdf"); PdfStAmper Stamper = new PdfStamper (Reader, new FileOutputStream ("e: //b.pdf")); PdfContentByte OverContent = Stamper.getOverContent (1);Le code ci-dessus est considéré comme le code de base qui ajoute du contenu au PDF d'origine. Le processus spécifique est le suivant
• Si le lecteur est suffisamment prudent, le code consiste à lire le A.PDF d'origine, à l'écrire sur B.PDF, puis à fonctionner B.PDF.
• Certains lecteurs peuvent dire que la lecture A, puis l'écrire dans A n'est certainement pas possible. A a été chargé et ne peut pas être modifié lors de la lecture.
• Je n'aime pas cela car les informations du PDF d'origine sont déjà stockées dans la base de données, y compris le chemin du serveur du PDF, le vieux nom, le nouveau nom, le type ...
• Cela entraînera une opération de changement de base de données supplémentaire, car le nom PDF doit être modifié ici, et les gens savent comment les exigences suivantes changent.
• Il est urgent d'ajouter du contenu au PDF ici, et rien d'autre ne change, donc j'ai légèrement ajusté le code.
FileUtil.FileChannelCopy (a.pdf, a + "tmp" .pdf)); Pdfreader leader = new pdfreader (a + "tmp" .pdf); PdfStamper Stamper = new PdfStamper (Reader, new FileOutputStream (a.pdf)); PdfContentByte OverContent = Stamper.getOverContent (1);
Le flux de code devient comme ça
Ici, nous introduisons le fichier de copie du pipeline, copiez A, lisons la copie, puis écrivons au PDF A d'origine, et bien sûr, vous devez supprimer le fichier de copie.
À ce stade, peu importe comment les exigences suivantes changent, les autres propriétés du PDF restent inchangées et vous pouvez les faire face calmement.
Le code de copie du pipeline est le suivant:
PubPC static void fileChannelCopy (Sources de fichiers, fichier dest) {try {fileInputStream inputStream = new FileInputStream (sources); FileOutputStream outputStream = new FileOutputStream (dest); FileChannel FileChannAnpn = inputStream.getChannel (); // Obtenez le canal de fichier correspondant FileChannel FileChannelout = outputStream.getChannel (); // Obtenez le canal de fichier correspondant FileChannAnpn.Transferto (0, LireChannAnpn.Size (), FilEchannelout); // Connect Two Chansal, Lire à partir du canal dans le canal dans le canal dans le canal dans le canal dans le canal dans le canal dans le canal de l'out; FileChannAnpn.Close (); outputStream.close (); filechannelout.close (); } catch (exception e) {e.printStackTrace (); }}Le code de contenu PDF complet est le suivant:
FileUtil.fileChannelCopy (nouveau fichier ("e: //a.pdf"), nouveau fichier ("e: // a +" tmp ".pdf")); Pdfreader leader = new pdfreader ("e: // a +" tmp ".pdf"); PdfStAmper Stamper = new PdfStamper (Reader, new FileOutputStream ("e: //a.pdf")); PdfContentByte OverContent = Stamper.getOverContent (1); // Ajouter du texte BaseFont font = BaseFont.CreateFont ("Stsong-pght", "UnigB-UCS2-H", BaseFont.Not_EmbedDed); overContent.begIntext (); OverContent.SetFontandSize (Font, 10); OverContent.SeTTextMatrix (200, 200); overContent.showTextapGned (élément.apgn_center, "texte à ajouter", 580,530,0); overContent.endText (); // Ajouter une image pdfdictionary pdfdictionary = reader.getPagen (1); PdfObject pdfObject = pdfdictionary.get (new pdfname ("mediabox")); PdfArray pdfArray = (pdfArray) pdfObject; Image image = image.getInstance ("d: //1.jpg"); Image.SetAbsolutepos (100 100); overContent.addimage (image); // Ajouter un cercle rouge OverContent.SetrGBColorStroke (0xff, 0x00, 0x00); OverContent.SetPnewidth (5F); OverContent.Elppse (250, 450, 350, 550); OverContent.stroke (); Stamper.Close ();Le guide complet ci-dessus pour générer des PDF est la méthode d'implémentation pour ajouter du contenu aux PDF existants. L'éditeur partage tout le contenu avec vous. J'espère que vous pourrez vous faire référence et j'espère que vous pourrez soutenir Wulin.com plus.