用什么代替iText7中的PdfWriter.AddToBody?

时间:2016-12-07 21:07:20

标签: c# itext itext7

PdfWriter和派生类中的AddToBody方法似乎在iText7中消失了。我本以为要将这些功能迁移到PdfDocument类,但我不清楚该类或底层编写器是否有类似的东西。我正在尝试将键/值对添加到字典中,其中值是对PdfStream的间接引用。我的itext 5代码看起来像这样:

dict.Put(new PdfName("IndexerReportNames"), writer.AddToBody(new PdfStream(GetReportNames(reports))).IndirectReference);

问题是,如何将此端口以及类似的代码移植到iText7?

1 个答案:

答案 0 :(得分:2)

将键/值对添加到字典中,其中值是对PdfStream 的间接引用,您不需要实际将对象写入结果流,你只需要在给定的PdfDocument中间接使用它。

在iText 7中,对于给定的PdfDocument pdfDocument,给定的目标PdfDictionary pdfDictionary和给定的PdfStream pdfStream,您可以这样做:

pdfStream.MakeIndirect(pdfDocument);
pdfDictionary.Put(new PdfName("IndexerReportNames"), pdfStream);

如果您还希望尽早将其写入结果流,则可以立即致电Flush

pdfStream.Flush();

你也可以更紧凑地写出来:

pdfDictionary.Put(new PdfName("IndexerReportNames"), new PdfStream(...).MakeIndirect(pdfDocument));