尝试将内存流从 pdfstamper 获取到 pdfreader 但得到:"PDF startxref not found"
Trying to get a memory stream from a pdfstamper into a pdfreader but getting: "PDF startxref not found"
我正在用 c# 编写一个应用程序,它可以填写一堆 pdf 表单,将它们连接起来,然后输入一些页码。我在处理 pdfstamper 的内存流结果时遇到困难。如果我将内存流更改为文件流,它可以正常工作,但我不想使用文件系统。我创建了以下重现我的错误的代码片段:
public static void TestStreams(string filepath)
{
PdfReader reader = new PdfReader(filepath);
MemoryStream ms = new MemoryStream();
PdfReader.unethicalreading = true;
PdfStamper stamper = new PdfStamper(reader, ms);
byte[] result = ms.ToArray();
//The error is in the following line
PdfReader reader2 = new PdfReader(result);
}
错误是:
iTextSharp.text.exceptions.InvalidPdfException was unhandled
HResult=-2146232800
Message=Rebuild failed: trailer not found.; Original message: PDF startxref not found.
Source=itextsharp
我该如何解决?
你忘记了一行:
public static void TestStreams(string filepath) {
PdfReader reader = new PdfReader(filepath);
MemoryStream ms = new MemoryStream();
PdfReader.unethicalreading = true;
PdfStamper stamper = new PdfStamper(reader, ms);
stamper.Close();
byte[] result = ms.ToArray();
//The error is in the following line
PdfReader reader2 = new PdfReader(result);
}
当您在未先关闭 stamper
的情况下执行 ms.ToArray()
时,您得到的 PDF 不完整。 PDF 以 %PDF-
开头,但没有 %%EOF
、没有预告片、没有目录。 PdfReader
.
无法阅读不完整的 PDF
我正在用 c# 编写一个应用程序,它可以填写一堆 pdf 表单,将它们连接起来,然后输入一些页码。我在处理 pdfstamper 的内存流结果时遇到困难。如果我将内存流更改为文件流,它可以正常工作,但我不想使用文件系统。我创建了以下重现我的错误的代码片段:
public static void TestStreams(string filepath)
{
PdfReader reader = new PdfReader(filepath);
MemoryStream ms = new MemoryStream();
PdfReader.unethicalreading = true;
PdfStamper stamper = new PdfStamper(reader, ms);
byte[] result = ms.ToArray();
//The error is in the following line
PdfReader reader2 = new PdfReader(result);
}
错误是:
iTextSharp.text.exceptions.InvalidPdfException was unhandled
HResult=-2146232800
Message=Rebuild failed: trailer not found.; Original message: PDF startxref not found.
Source=itextsharp
我该如何解决?
你忘记了一行:
public static void TestStreams(string filepath) {
PdfReader reader = new PdfReader(filepath);
MemoryStream ms = new MemoryStream();
PdfReader.unethicalreading = true;
PdfStamper stamper = new PdfStamper(reader, ms);
stamper.Close();
byte[] result = ms.ToArray();
//The error is in the following line
PdfReader reader2 = new PdfReader(result);
}
当您在未先关闭 stamper
的情况下执行 ms.ToArray()
时,您得到的 PDF 不完整。 PDF 以 %PDF-
开头,但没有 %%EOF
、没有预告片、没有目录。 PdfReader
.