2017-09-22 4 views
0

Je souhaite ajouter du texte à un fichier PDFWriter sans remplacer chaque texte.
Si j'utilise un streamwriter, je peux seulement ajouter True, mais qu'en est-il de PDFWriter?Comment faire pour ajouter par pdfwriter dans VB.NET?

StreamWriter Code: 
System.IO.StreamWriter(FILE_NAME, True) 

My Current PDFWriter Code: 
Dim pdfWrite As PdfWriter = PdfWriter.GetInstance(pdfDoc, New FileStream("C:\Users\New folder\" + Reader.GetString(10) + Reader.GetString(9) + ".pdf", FileMode.Append)) 

pdfDoc.Open() 

pdfDoc.Add(New Paragraph(String.Format("{0}|{1}", Reader.GetString(9), Reader.GetString(17)))) 

pdfDoc.Close() 

Répondre

1

PdfWriter est une classe pour générer des fichiers PDF à partir de zéro (oui, on peut importer le contenu d'autres documents, mais fondamentalement, il est pour le nouveau contenu). Si vous souhaitez ajouter un nouveau contenu (en utilisant des mécanismes de mise en page API haut niveau iText) à un document existant, vous devez créer le nouveau contenu dans un document séparé (que vous pouvez conserver en mémoire uniquement au moyen d'un MemoryStream), créez PdfReader instances pour le document existant et votre nouveau, intermédiaire, puis combinez-les en utilisant PdfCopy.

Si vous souhaitez ajouter un nouveau contenu (en utilisant des API de haut niveau iText) à un document existant, vous pouvez utiliser un PdfStamper.


En aparté, en ce qui concerne:

PdfWriter.GetInstance(pdfDoc, New FileStream("C:\Users\New folder\" + Reader.GetString(10) + Reader.GetString(9) + ".pdf", FileMode.Append)) 

L'utilisation FileMode.Append est une mauvaise idée, le PDF est pas un format dans lequel vous pouvez simplement concaténer des fichiers pour obtenir un résultat fusionné.

+0

'Bien que Reader.Read() Dim PDFDoc Comme un nouveau document() Dim pdfwrite Comme PdfWriter = PdfWriter.GetInstance (PDFDoc, New FileStream (" C: \ Users \ it.administrator \ sources repo \ examples \ WindowsApp6 \ WindowsApp6 \ Nouveau dossier \ "+ Reader.GetString (10) + Reader.GetString (9) +" .pdf ", FileMode.Create)) pdfDoc.Open() pdfDoc.Add (Nouveau paragraphe (String.Format (" { 0} | {1} ", Reader.GetString (9), Reader.GetString (17)))) pdfDoc.Close() Fin While'' Ce code prendra toujours la première ligne de données de ma base de données. Je souhaite obtenir toutes les données de lignes sous le même PDF. Essayer avec vos suggestions mais toujours collé dessus. –

+0

Vous voulez que toutes les données soient dans le même PDF, par contre le nom de fichier du PDF dépend de l'ensemble de données. Cette combinaison n'a pas de sens. – mkl

+0

Mais actuellement le système écrira uniquement les premières données relatives au code client dans le pdf au lieu de toutes les données connexes. –