iText ライブラリのいくつかの例を調べました。私が見た典型的な例では、ドキュメントの作成について混乱しています:
Document document = new Document(PageSize.A4, 50, 50, 50, 50);
PdfWriter.getInstance(document, new FileOutputStream(PATH));
document.open();
//document.addSomeContent();
document.close();
ドキュメントが最初からファイル/出力ストリームにバインドされているのはなぜですか? ドキュメントを作成し、それが完成したら保存して、file/output_stream に送信することは可能ですか?
ソースを調べたところ、 getInstance() は次のとおりです。
public static PdfWriter getInstance(final Document document, final OutputStream os)
throws DocumentException {
PdfDocument pdf = new PdfDocument();
document.addDocListener(pdf);
PdfWriter writer = new PdfWriter(pdf, os);
pdf.addWriter(writer);
return writer;
}
繋がり:
Document < --- > PdfDocument
Λ
|
|
V
PdfWriter < ---- > OutputStream
Document の作成直後に PdfWriter と OutputStream でバインドされます。次のようなことが考えられます。
Document document = new Document(PageSize.A4, 50, 50, 50, 50);
// document.addSomeContent();
document.save(someOutputStreamObject);
ファイルと永続性を取り除き、ドキュメントの論理構造の作成に集中したいと考えています。後で、Document オブジェクトを他のモジュールに渡したいと思います。このモジュールは、ドキュメントをファイルに保存したり、http 応答などとして送信したりします。