プロジェクトが変化し、要件が変化しており、変化のないプログラマーは常にキーボードでタイピングしています...
PDFが生成された後、テキスト、写真など、PDFに他のコンテンツを追加する必要がある場合があります...
いくつかの試みに失敗した後、私はついにコードを書く正しい方法を得ました。
このレコードと要約。次回変更されて変更に適応するように、PDFフルガイドを生成してください。
pdfreader reader = new Pdfreader( "e://a.pdf"); pdfstamper stamper = new pdfstamper(reader、new fileoutputStream( "e://b.pdf")); pdfcontentbyte overcontent = stamper.getoverContent(1);
上記のコードは、元のPDFにコンテンツを追加するコアコードと見なされます。特定のプロセスは次のとおりです
•読者が十分に注意している場合は、コードが元のA.PDFを読み取り、B.PDFに書き込み、B.PDFを操作することです。
•一部の読者は、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、new fileoutputStream(a.pdf)); pdfcontentbyte overcontent = stamper.getoverContent(1);
コードフローはこのようになります
ここでは、パイプラインのコピーファイルを紹介し、コピーA、コピーを読み取り、元のPDF Aに書き戻します。もちろん、コピーファイルを削除する必要があります。
この時点で、その後の要件がどのように変化しても、PDFの他のプロパティは変更されておらず、冷静に向かうことができます。
パイプラインコピーコードは次のとおりです。
pubpc static void filechannelcopy(file sources、file dest){try {fileinputStream inputstream = new fileinputStream(sources); fileoutputStream outputStream = new fileoutputStream(dest); FileChannel fileChannepn = inputstream.getChannel(); //対応するファイルチャネルFileChannel fileChannelout = outputStream.getChannel(); //対応するファイルチャネルFileChannepn.Transferte(0、fileChannepn.size()、FileChannelout); inputstream.close(); filechannepn.close(); outputStream.close(); filechannelout.close(); } catch(Exception e){e.printstacktrace(); }}完全なPDF他のコンテンツコードは次のとおりです。
fileutil.filechannelcopy(new file( "e://a.pdf")、new file( "e:// a+" tmp ".pdf")); pdfreader reader = new Pdfreader( "e:// a+" tmp ".pdf"); pdfstamper stamper = new pdfstamper(reader、new fileoutputStream( "e://a.pdf")); pdfcontentbyte overcontent = stamper.getoverContent(1); //テキスト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、 "テキストを追加する"、580,530,0); overcontent.endtext(); //画像pdfdictionary pdfdictionary = reader.getPagen(1); pdfobject pdfobject = pdfdictionary.get(new pdfname( "mediabox")); pdfarray pdfarray =(pdfarray)pdfobject; Image image = image.getInstance( "d://1.jpg"); image.setabsoluteposition(100,100); overcontent.addimage(画像); // Red Circle overContent.setRgBColorStroke(0xff、0x00、0x00)を追加します。 overcontent.setpnewidth(5f); overcontent.elppse(250、450、350、550); overcontent.stroke(); stamper.close();
PDFを生成するための上記の完全なガイドは、既存のPDFにコンテンツを追加する実装方法です。編集者は、すべてのコンテンツをあなたと共有します。参照を提供できることを願っています。wulin.comをもっとサポートできることを願っています。