2016-11-18 5 views
0

Also versuche ich, diese Funktion so einzustellen, anstatt eine neue PDF-Datei mit dem neuen Feldwert zu erstellen, dann neue Datei dem Benutzer anzuzeigen und dann beim Beenden zu löschen. , um vielleicht nur ein Stream oder Byte-Array dieser Vorlage mit den neuen Feldern Wert zu erstellen und nur für den Benutzer anzuzeigen .. ist es möglich?PDF anzeigen ohne zu speichern?

private void fillPDFForm() 
{ 
    string formFile = @"C:\fw4.pdf"; 
    string newFile = @"C:\New_fw4.pdf"; 

    PdfReader reader = new PdfReader(formFile); 

    using (PdfStamper stamper = new PdfStamper(reader, new FileStream(newFile, FileMode.Create))) 
    { 
     AcroFields fields = stamper.AcroFields; 

     // set form fields 
     fields.SetField("name", "John Doe"); 
     fields.SetField("address", "xxxxx, yyyy"); 
     fields.SetField("postal_code", "12345"); 
     fields.SetField("email", "[email protected]"); 

     // flatten form fields and close document 
     stamper.FormFlattening = true; 
     stamper.Close(); 
    } 
} 

Antwort

0

Ja Of-Kurs ist es möglich, durch die Verwendung MemoryStream statt FileStream damit Ihr Code würde wie folgt aussehen:

using (MemoryStream memStream = new MemoryStream()) 
{ 
    using (PdfStamper stamper = new PdfStamper(reader, memStream, '\0', true)) 
    { 
     AcroFields fields = stamper.AcroFields; 

     // set form fields 
     fields.SetField("name", "John Doe"); 
     fields.SetField("address", "xxxxx, yyyy"); 
     fields.SetField("postal_code", "12345"); 
     fields.SetField("email", "[email protected]"); 

     // flatten form fields and close document 
     stamper.FormFlattening = true; 
     stamper.Close(); 
    } 
    return memStream.ToArray(); 
} 
+0

Große schnelle Antwort! Vielen Dank –

0

Haben Sie versucht, den Inhaltstyp für die Antwort auf application/pdf zu setzen?

using (PdfStamper stamper = new PdfStamper(reader, new FileStream(newFile, FileMode.Create))) 

zu

using (PdfStamper stamper = new PdfStamper(reader, new FileStream(newFile, FileMode.Create), "application/pdf")) 

using (PdfStamper stamper = new PdfStamper(reader, new FileStream(newFile, FileMode.Create))) 

    private void fillPDFForm() 
    { 
     string formFile = @"C:\fw4.pdf"; 
     string newFile = @"C:\New_fw4.pdf"; 

     PdfReader reader = new PdfReader(formFile); 

     using (PdfStamper stamper = new PdfStamper(reader, new FileStream(newFile, FileMode.Create), "application/pdf")) 
     { 
      AcroFields fields = stamper.AcroFields; 

      // set form fields 
      fields.SetField("name", "John Doe"); 
      fields.SetField("address", "xxxxx, yyyy"); 
      fields.SetField("postal_code", "12345"); 
      fields.SetField("email", "[email protected]"); 

      // flatten form fields and close document 
      stamper.FormFlattening = true; 
      stamper.Close(); 
     } 
    } 
Verwandte Themen