c# - 如何只生成一个 PDF

标签 c# pdf itext

下面是我的代码,我正在从 ItextSharp 生成受密码保护的 pdf。

实际上有两个 pdf 正在生成并保存。

但我只想保存文件。

如果我使用相同的输入和输出,我会收到错误。

非常感谢您的帮助。

Letter1 mydoc = new Letter1();
mydoc.GenerateLetter();  
string WorkingFolder = Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments);
string InputFile = Path.Combine(WorkingFolder, "Testing1.pdf");
FileStream f = new FileStream(InputFile, FileMode.Create);
f.Write(mydoc.DocumentBytes, 0, mydoc.DocumentBytes.Length);
f.Close();
string OutputFile = Path.Combine(WorkingFolder, "TestingOut1.pdf");
using (Stream input = new FileStream(InputFile, FileMode.OpenOrCreate, FileAccess.Read, FileShare.Read))
{
    using (Stream output = new FileStream(OutputFile, FileMode.Create, FileAccess.Write, FileShare.None))
    {
        PdfReader reader = new PdfReader(input);
        PdfEncryptor.Encrypt(reader, output, true, "abc123", "secret", PdfWriter.ALLOW_SCREENREADERS);
    }
}  

最佳答案

考虑使用 MemoryStream

未经测试的代码(在浏览器中编写:)

using (MemoryStream m = new MemoryStream())
{
    m.Write(mydoc.DocumentBytes, 0, mydoc.DocumentBytes.Length);
    m.Seek(0, SeekOrigin.Origin);

    string OutputFile = Path.Combine(WorkingFolder, "TestingOut1.pdf");
    using (Stream output = new FileStream(OutputFile, FileMode.Create, FileAccess.Write, FileShare.None))
    {
        PdfReader reader = new PdfReader(m);
        PdfEncryptor.Encrypt(reader, output, true, "abc123", "secret", PdfWriter.ALLOW_SCREENREADERS);
    }
}  

关于c# - 如何只生成一个 PDF,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9943360/

相关文章:

java - 将 JPG 图像转换为 PDF,无需使用 Ghostscript 或 itext 调整图像大小

c# - 如何使用 itextsharp 将页码添加到每个 pdf 页面

c# - linq orderby 使用属性名称字符串

c# - 订阅 Window.xaml.cs 中的 PropertyChanged 事件

Java vs C# 多线程性能,为什么 Java 变慢了? (包括图表和完整代码)

c# - 如何获取测试用例描述?

java - itext PDF - 希腊字母未出现在生成的 PDF 文档中

iphone - 将多个 pdf 文档合并为单个文档不起作用

php - 如何从PDF文档中提取文本?

java - iText 添加新页面