2016-11-18 71 views
0

所以我试图调整这个功能,所以不是用新的字段值创建一个新的PDF文件,而是显示新的文件给用户,然后在退出时删除。 只需创建此模板的流或字节数组与新的字段值,并只显示它的用户..是否有可能?显示pdf而不保存?

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(); 
    } 
} 

回答

0

是中,当然也可以通过使用MemoryStream代替FileStream因此您的代码将是这样的:

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

大快回答!非常感谢 –

0

你尝试设置为响应应用程序/ PDF格式的内容类型?

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

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(); 
     } 
    }