Proyek berubah, persyaratan berubah, dan pemrogram yang tidak berubah selalu mengetik di keyboard ...
Setelah PDF dihasilkan, kadang -kadang Anda perlu menambahkan beberapa konten lain ke PDF, seperti teks, gambar ...
Setelah beberapa upaya yang gagal, saya akhirnya mendapatkan cara yang benar untuk menulis kode.
Catatan ini dan meringkas, sehingga lain kali Anda tidak akan berubah dan beradaptasi dengan perubahan, silakan pindah ke: menghasilkan panduan lengkap PDF
PDFreader Reader = new Pdfreader ("e: //a.pdf"); PDFStamper stamper = PDFStamper baru (pembaca, FileOutputStream baru ("e: //b.pdf")); PDFContentByte overcontent = stamper.getOvercontent (1);Kode di atas dianggap sebagai kode inti yang menambahkan konten ke PDF asli. Proses spesifiknya adalah sebagai berikut
• Jika pembaca cukup hati -hati, kodenya adalah membaca A.PDF asli, maka tulislah ke B.PDF, lalu beroperasi B.PDF.
• Beberapa pembaca mungkin mengatakan bahwa membaca A dan kemudian menulisnya ke A jelas tidak mungkin. A telah dimuat dan tidak dapat dimodifikasi saat membaca.
• Saya tidak suka ini karena informasi PDF asli sudah disimpan dalam database, termasuk jalur server PDF, nama lama, nama baru, ketik ...
• Ini akan menyebabkan operasi perubahan basis data tambahan, karena nama PDF perlu diubah di sini, dan orang -orang tahu bagaimana persyaratan selanjutnya akan berubah.
• Sangat mendesak untuk menambahkan konten ke PDF di sini, dan tidak ada lagi yang berubah, jadi saya sedikit menyesuaikan kode.
Fileutil.filechannelcopy (a.pdf, a + "tmp" .pdf)); PDFreader Reader = new Pdfreader (A + "TMP" .pdf); PDFStamper stamper = PDFStamper baru (pembaca, FileOutputStream baru (a.pdf)); PDFContentByte overcontent = stamper.getOvercontent (1);
Aliran kode menjadi seperti ini
Di sini kami memperkenalkan file salinan pipa, salin, baca salinannya, dan kemudian tulis kembali ke PDF asli A, dan tentu saja, Anda perlu menghapus file salinan.
Pada titik ini, tidak peduli bagaimana persyaratan selanjutnya berubah, sifat -sifat PDF lainnya tetap tidak berubah, dan Anda dapat menghadapinya dengan tenang.
Kode salinan pipa adalah sebagai berikut:
pubpc static void filechannelcopy (sumber file, file dest) {coba {fileInputStream inputStream = new FileInputStream (Sumber); FileOutputStream outputStream = new FileOutputStream (DEST); FileChannel FileChannepn = inputStream.getChannel (); // Dapatkan file file yang sesuai FileChanNelout = outputStream.getChannel (); // Dapatkan saluran file yang sesuai dengan filechannepn.Transferto (0, filechannepn. inputStream.close (); filechannepn.close (); outputStream.close (); filechannelout.close (); } catch (Exception e) {E.PrintStackTrace (); }}PDF lengkap kode konten lainnya adalah sebagai berikut:
Fileutil.filechannelcopy (file baru ("e: //a.pdf"), file baru ("e: // a+" tmp ".pdf")); Pdfreader Reader = new Pdfreader ("e: // a+" tmp ".pdf"); PDFStamper stamper = PDFStamper baru (pembaca, FileOutputStream baru ("e: //a.pdf")); PDFContentByte overcontent = stamper.getOvercontent (1); // Tambahkan teks Basefont font = basefont.createFont ("stsong-pght", "unigb-ucs2-h", basefont.not_embedded); overcontent.begintext (); overcontent.setFontAndSize (font, 10); overcontent.settextmatrix (200, 200); overcontent.showtextapgned (element.apgn_center, "teks yang akan ditambahkan", 580.530,0); overcontent.endText (); // Tambahkan gambar pdfDictionary pdfDictionary = reader.getpagen (1); PDFObject PDFObject = PDFDictionary.get (PDFName baru ("Mediabox")); Pdfarray pdfarray = (pdfarray) pdfObject; Gambar gambar = image.getInstance ("d: //1.jpg"); Image.setabsoluteposition (100.100); overcontent.addimage (gambar); // Tambahkan lingkaran merah overcontent.setrgbcolorstroke (0xff, 0x00, 0x00); overcontent.setpnewidth (5F); overcontent.elppse (250, 450, 350, 550); overcontent.stroke (); stamper.close ();Panduan lengkap di atas untuk menghasilkan PDFS adalah metode implementasi untuk menambahkan konten ke PDF yang ada. Editor membagikan semua konten dengan Anda. Saya harap Anda dapat memberi Anda referensi dan saya harap Anda dapat mendukung wulin.com lebih lanjut.