我浏览了几个 iText 库的例子。我对创建文档感到困惑,在我看到的典型示例中:
Document document = new Document(PageSize.A4, 50, 50, 50, 50);
PdfWriter.getInstance(document, new FileOutputStream(PATH));
document.open();
//document.addSomeContent();
document.close();
为什么文档从一开始就绑定到文件/输出流?是否可以创建文档以及何时完成,然后保存,发送到文件/输出流?
我查看了来源, 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 响应或其他方式发送