2012-10-26 104 views
1

我有一个PDF我试图打开和略微改变(只是改变ViewerPreferences),但似乎无法解决iTextSharp的确切用法。最后保存的文件已损坏。有任何想法吗?iTextSharp修改pdf属性

 PdfReader reader = new PdfReader(@"C:\4803.pdf"); 

     using (var stream = new MemoryStream()) 
     { 
      PdfStamper stamper = new PdfStamper(reader, stream); 
      stamper.ViewerPreferences = PdfWriter.AllowPrinting | PdfWriter.PrintScalingNone; 

      stream.Position = 0; 
      byte[] output = LoadFromStream(stream); // Convert it to a byte array 
      SaveToFile(output, @"C:\4803_out.pdf"); // Save it to a file 

      stamper.Close(); 
     } 

回答

3

在将MemoryStream转换为字节数组并保存之前关闭PdfStamper。 你这样做的方式,pdf尚未完成在流中。

PS:为了防止压模的关闭从也关闭流,使用

stamper.Writer.CloseStream = false 
+0

当我该流也关闭其不是从它提取字节[]有帮助的。 – Craig

+0

这实际上现在不会出现错误,但似乎不适用PdfWriter.PrintScalingNone首选项。 – Craig