2016-12-07 2 views
0

Les méthodes AddToBody dans PdfWriter et les classes dérivées semblent avoir disparu dans iText7. Je m'attendais à ce que cette fonctionnalité ait été migrée vers la classe PdfDocument, mais il n'était pas clair pour moi si cette classe ou l'auteur sous-jacent avait quelque chose de similaire. J'essaye d'ajouter une paire clé/valeur à un dictionnaire où la valeur est une référence indirecte à un PdfStream. Mon itext code à 5 regardé quelque chose comme ceci:Que utiliser à la place de PdfWriter.AddToBody dans iText7?

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

La question est, comment dois-je le port, et un code similaire à iText7?

Répondre

2

Pour ajouter une paire clé/valeur à un dictionnaire où la valeur est une référence indirecte à un PdfStream, vous n'avez pas besoin d'écrire en fait déjà l'objet au flux de résultats, vous devez simplement faire indirecte un donné PdfDocument.

En iText 7, vous pouvez le faire comme ça pour une donnée PdfDocument pdfDocument, une cible donnée PdfDictionary pdfDictionary, et donné PdfStream pdfStream:

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

Si vous voulez aussi à écrire dans le flux de premier résultat, vous peut immédiatement appeler Flush:

pdfStream.Flush(); 

Vous pouvez également écrire plus compacte:

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