尝试将 pdfstamper 中的内存流获取到 pdfreader 中,但得到:“未找到 PDF startxref”

2023-12-29

我正在用 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);
}

当你这样做时ms.ToArray()无需先关闭stamper,您的 PDF 不完整。 PDF 开头为%PDF-,但是没有%%EOF,没有预告片,没有目录。无法阅读不完整的 PDFPdfReader.

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

尝试将 pdfstamper 中的内存流获取到 pdfreader 中,但得到:“未找到 PDF startxref” 的相关文章

随机推荐