gpt4 book ai didi

c# - iTextSharp + FileStream = 损坏的 PDF 文件

转载 作者:太空狗 更新时间:2023-10-29 18:01:48 24 4
gpt4 key购买 nike

我正在尝试使用 iTextSharp 创建一个 pdf 文件。我尝试将 pdf 的内容写入 MemoryStream,这样我就可以将结果写入文件和数据库 BLOB。该文件已创建,大小约为 21kB,用 Notepad++ 打开时看起来像 pdf。但是我的 PDF 查看器说它已损坏。这是一个小代码片段(只尝试写入文件,而不是数据库):

Document myDocument = new Document();
MemoryStream myMemoryStream = new MemoryStream();
PdfWriter myPDFWriter = PdfWriter.GetInstance(myDocument, myMemoryStream);
myDocument.Open();
// Content of the pdf gets inserted here
using (FileStream fs = File.Create("D:\\...\\aTestFile.pdf"))
{
myMemoryStream.WriteTo(fs);
}
myMemoryStream.Close();

我哪里错了?

谢谢,诺伯特

最佳答案

我认为您的问题是您没有正确地向 PDF 添加内容。这是通过 Document.Add() 方法完成的,您可以通过调用 Document.Close() 来完成。

但是,当您调用 Document.Close() 时,您的 MemoryStream 也会关闭,因此您将无法像之前那样将其写入 FileStream。您可以通过将 MemoryStream 的内容存储到字节数组来解决这个问题。

以下代码片段适用于我:

using (MemoryStream myMemoryStream = new MemoryStream()) {
Document myDocument = new Document();
PdfWriter myPDFWriter = PdfWriter.GetInstance(myDocument, myMemoryStream);

myDocument.Open();

// Add to content to your PDF here...
myDocument.Add(new Paragraph("I hope this works for you."));

// We're done adding stuff to our PDF.
myDocument.Close();

byte[] content = myMemoryStream.ToArray();

// Write out PDF from memory stream.
using (FileStream fs = File.Create("aTestFile.pdf")) {
fs.Write(content, 0, (int)content.Length);
}
}

关于c# - iTextSharp + FileStream = 损坏的 PDF 文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2186817/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com