2016-12-07 5 views
0

Методы AddToBody в PdfWriter и производные классы, по-видимому, исчезли в iText7. Я ожидал, что функциональность будет перенесена в класс PdfDocument, но мне было непонятно, есть ли у этого класса или основного автора что-то подобное. Я пытаюсь добавить пару ключ/значение в словарь, где значение является косвенной ссылкой на PdfStream. Мой IText 5 код выглядел примерно так:Что использовать вместо PdfWriter.AddToBody в iText7?

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

Вопрос в том, как сделать I порт этот и подобный код для iText7?

ответ

2

Для добавить пару ключ/значение в словаре, где значение является косвенной ссылкой на PdfStream, вам не нужно на самом деле уже писать объект в поток результата, вам просто нужно сделать это косвенное a 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));