تتغير المشاريع ، تتغير المتطلبات ، والمبرمجين غير المتغيرة يكتبون دائمًا على لوحات المفاتيح ...
بعد إنشاء PDF ، في بعض الأحيان تحتاج إلى إضافة بعض المحتوى الآخر إلى PDF ، مثل النص والصور ...
بعد عدة محاولات فاشلة ، حصلت أخيرًا على الطريقة الصحيحة لكتابة الرمز.
هذا السجل والتلخيص ، بحيث في المرة القادمة التي ستتغير فيها والتكيف مع التغييرات ، يرجى الانتقال إلى: إنشاء دليل كامل PDF
pdfreader reader = new pdfreader ("e: //a.pdf") ؛ pdfstamper stamper = new pdfstamper (reader ، fileOutputStream جديد ("e: //b.pdf")) ؛ pdfcontentbyte overcontent = stamper.getovercontent (1) ؛يعتبر الرمز أعلاه رمزًا أساسيًا يضيف محتوى إلى PDF الأصلي. العملية المحددة كما يلي
• إذا كان القارئ حريصًا بما فيه الكفاية ، فإن الكود هو قراءة A.PDF الأصلي ، ثم اكتبه إلى B.PDF ، ثم تشغيل B.PDF.
• قد يقول بعض القراء أن قراءة A ثم كتابته إلى A غير ممكن بالتأكيد. تم تحميل A ولا يمكن تعديله عند القراءة.
• لا أحب هذا لأن معلومات PDF الأصلية يتم تخزينها بالفعل في قاعدة البيانات ، بما في ذلك مسار خادم PDF ، والاسم القديم ، والاسم الجديد ، والاكتب ...
• سيؤدي ذلك إلى إجراء تغيير إضافي لتغيير قاعدة البيانات ، لأن اسم PDF يحتاج إلى تغيير هنا ، ويعرف الناس كيف ستتغير المتطلبات اللاحقة.
• من الضروري إضافة محتوى إلى PDF هنا ، ولا يوجد شيء آخر يتغير ، لذلك قمت بتعديل الكود قليلاً.
fileutil.filechannelcopy (A.PDF ، A + "TMP" .pdf)) ؛ pdfreader reader = new pdfreader (a + "tmp" .pdf) ؛ pdfstamper stamper = new pdfstamper (reader ، fileOutputStream (a.pdf)) ؛ pdfcontentbyte overcontent = stamper.getovercontent (1) ؛
يصبح تدفق الكود هكذا
نقدم هنا ملف نسخة خط الأنابيب ، نسخ A ، اقرأ النسخة ، ثم اكتب مرة أخرى إلى PDF الأصلي A ، وبالطبع ، تحتاج إلى حذف ملف النسخ.
في هذه المرحلة ، بغض النظر عن تغير المتطلبات اللاحقة ، تظل الخصائص الأخرى لـ PDF دون تغيير ، ويمكنك مواجهتها بهدوء.
رمز نسخ خط الأنابيب كما يلي:
PUBPC static void fileChannelCopy (مصادر الملفات ، ملف الملف) {try {fileInputStream inputStream = newInputStream (مصادر) ؛ FileOutputStream OutputStream = جديد fileOutputStream (dest) ؛ FILECHANNEL FILECHANNEPN = inputStream.getChannel () ؛ // احصل على قناة الملف المقابلة FILECHANNEL FILECHANNELOUT = OUTPUTSTREAM.GETCHANNEL () ؛ // احصل على قناة الملف المقابلة filechannepn.transferto (0 ، filechannepn.size () ، filechannelout) ؛/conner اثنين من القناة. filechannepn.close () ؛ outputStream.Close () ؛ filechannelout.close () ؛ } catch (استثناء e) {E.PrintStackTrace () ؛ }}رمز المحتوى الآخر الكامل PDF هو كما يلي:
fileutil.filechannelcopy (ملف جديد ("e: //a.pdf") ، ملف جديد ("e: // a+" tmp ".pdf")) ؛ pdfreader reader = new pdfreader ("e: // a+" tmp ".pdf") ؛ pdfstamper stamper = new pdfstamper (reader ، fileOutputStream جديد ("e: //a.pdf")) ؛ pdfcontentbyte overcontent = stamper.getovercontent (1) ؛ // إضافة نص pasefont font = basefont.createfont ("stsong-pght" ، "unigb-ucs2-h" ، basefont.not_embedded) ؛ overcontent.begintext () ؛ Overcontent.setFontandSize (الخط ، 10) ؛ Overcontent.settextMatrix (200 ، 200) ؛ overcontent.showtextapgned (element.apgn_center ، "text to te to te the to the to the to the the the to the to the to the the the to te overcontent.endtext () ؛ // إضافة صورة pdfdictionary pdfdictionary = reader.getPagen (1) ؛ pdfobject pdfobject = pdfdictionary.get (pdfname جديد ("MediaBox")) ؛ pdfarray pdfarray = (pdfarray) pdfobject ؛ Image Image = Image.getInstance ("d: //1.jpg") ؛ image.setabsoluteposition (100،100) ؛ overcontent.addimage (صورة) ؛ // أضف دائرة حمراء overcontent.setRgbColorStroke (0xff ، 0x00 ، 0x00) ؛ overcontent.setpnewidth (5f) ؛ Overcontent.elppse (250 ، 450 ، 350 ، 550) ؛ overcontent.stroke () ؛ stamper.close () ؛الدليل الكامل أعلاه لإنشاء PDFs هو طريقة التنفيذ لإضافة المحتوى إلى PDF الحالي. يشارك المحرر جميع المحتوى معك. آمل أن تتمكن من إعطائك مرجعًا وآمل أن تتمكن من دعم wulin.com أكثر.