Los proyectos están cambiando, los requisitos están cambiando y los programadores sin cambios siempre están escribiendo en los teclados ...
Después de generar el PDF, a veces debe agregar algún otro contenido al PDF, como texto, imágenes ...
Después de varios intentos fallidos, finalmente obtuve la forma correcta de escribir el código.
Este registro y resumido, de modo que la próxima vez que no cambie y se adapte a los cambios, muévete a: Generar una guía completa en PDF
PDFreader Reader = nuevo PDFreader ("e: //a.pdf"); PDFStamper Stamper = new PDFStamper (lector, new FileOutputStream ("e: //b.pdf")); PDFContentByte OverContent = Stamper.getOverContent (1);El código anterior se considera como el código central que agrega contenido al PDF original. El proceso específico es el siguiente
• Si el lector es lo suficientemente cuidadoso, el código es leer el A.PDF original, luego escribirlo en B.PDF y luego operar B.PDF.
• Algunos lectores pueden decir que leer A y luego escribirla en A definitivamente no es posible. A se ha cargado y no se puede modificar al leer.
• No me gusta esto porque la información del PDF original ya está almacenada en la base de datos, incluida la ruta del servidor del PDF, antiguo nombre, nuevo nombre, tipo ...
• Esto causará una operación de cambio de base de datos adicional, porque el nombre de PDF debe cambiarse aquí, y las personas saben cómo cambiarán los requisitos posteriores.
• Es urgente agregar contenido al PDF aquí, y nada más cambia, por lo que ajusté ligeramente el código.
FileUtil.filechannelCopy (A.pdf, a + "tmp" .pdf)); PDFreader Reader = nuevo PDFreader (a + "tmp" .pdf); PDFStamper Stamper = new PDFStamper (lector, nuevo FileOutputStream (a.pdf)); PDFContentByte OverContent = Stamper.getOverContent (1);
El flujo de código se vuelve así
Aquí presentamos el archivo de copia de la tubería, copiamos A, lee la copia y luego volvemos a escribir al PDF A, y, por supuesto, debe eliminar el archivo de copia.
En este punto, no importa cómo cambien los requisitos posteriores, las otras propiedades de PDF permanecen sin cambios, y puede enfrentarlos con calma.
El código de copia de la tubería es el siguiente:
PUBPC static void filechannelCopy (fuentes de archivo, archivo dest) {try {fileInputStream inputStream = new FileInputStream (fuentes); FileOutputStream OutputStream = new FileOutputStream (Dest); FileChannel fileChanNepn = inputStream.getChannel (); // Obtenga el canal de archivo correspondiente fileChannel fileChannelout = outputStream.getChannel (); // Obtenga el canal de archivo correspondiente FilechanNepn.transferto (0, fileChanNepn.size (), fileNelEut); // conectar dos canales, lea desde el canal en el canal y el canal de inicio en el canal; filechanNepn.close (); outputStream.close (); fileChannelout.close (); } catch (Exception e) {E.PrintStackTrace (); }}El PDF completo de otro código de contenido es el siguiente:
FileUtil.filechannelCopy (nuevo archivo ("e: //a.pdf"), nuevo archivo ("e: // a+" tmp ".pdf")); PDFreader lector = new PDFreader ("E: // a+" tmp ".pdf"); PDFStamper Stamper = new PDFStamper (lector, nuevo FileOutputStream ("e: //a.pdf")); PDFContentByte OverContent = Stamper.getOverContent (1); // Agregar texto Basefont Font = BoorFont.CreateFont ("Stsong-Pght", "Unigb-UCS2-H", Basefont.not_embedded); OverContent.BeGIntext (); overcontent.setFontandSize (fuente, 10); OverContent.SetTextMatrix (200, 200); overcontent.showTextApgned (element.apgn_center, "texto a agregar", 580,530,0); OverContent.endText (); // Agregar imagen PDFDICCIONARY PDFDICCIONARY = Reader.getPagen (1); PDFObject PDFObject = PDFDictionary.get (nuevo PDFNAME ("MediaBox")); PDFArray PDFArray = (PDFArray) PDFObject; Imagen imagen = image.getInstance ("d: //1.jpg"); Image.SetAbSolutePosition (100,100); overcontent.addimage (imagen); // Agregar un círculo rojo overcontent.setRGBColorStroke (0xff, 0x00, 0x00); overcontent.setpnewidth (5f); overcontent.elppse (250, 450, 350, 550); OverContent.Stroke (); Stamper.Close ();La guía completa anterior para generar PDF es el método de implementación para agregar contenido a los PDF existentes. El editor comparte todo el contenido con usted. Espero que pueda darle una referencia y espero que pueda apoyar más a Wulin.com.