【问题标题】:Combine two PDF-a documents using ITextSharp使用 ITextSharp 合并两个 PDF-a 文档
【发布时间】:2014-07-31 09:14:30
【问题描述】:

希望有人可以看到我的代码中的缺陷,以便使用 ITextSharp 合并到 PDF-a 文档。目前它抱怨缺少 PDF-a 所需的元数据。

Document document = new Document();
MemoryStream ms = new MemoryStream();
using (PdfACopy pdfaCopy = new PdfACopy(document, ms, PdfAConformanceLevel.PDF_A_1A))
{
    document.Open();
    using (PdfReader reader = new PdfReader("Doc1.pdf"))
    {
        pdfaCopy.AddDocument(reader);
    }
    using (PdfReader reader = new PdfReader("doc2.pdf"))
    {
        pdfaCopy.AddDocument(reader);
    }
}

收到的确切错误是

未处理的异常:iTextSharp.text.pdf.PdfAConformanceException:PDF/A 符合文件的文档目录字典应包含 元数据键

我希望“文档目录字典”也会被复制,但我猜“new Document()”会创建一个空的不符合要求的文档之类的。

谢谢!希望能帮到你

沃特

【问题讨论】:

    标签: merge itextsharp pdfa


    【解决方案1】:

    你需要添加这一行:

    copy.CreateXmpMetadata();
    

    这将创建一些默认的 XMP 元数据。当然:如果您想创建自己的 XMP 文件,其中包含有关您将要合并的文档的信息,您也可以使用:

    copy.XmpMetadata = myMetaData;
    

    其中myMetaData 是一个包含正确 XMP 流的字节数组。

    希望您了解 iText 无法自动创建正确的元数据。提供元数据是需要人类关注的事情。

    【讨论】:

    • 我们什么时候应该调用这个?在某些特殊行动之前,还是相反之后?或者没关系? (假设它仅适用于 pdfa 相关的元数据)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-01-21
    • 2011-01-15
    • 2011-01-22
    • 1970-01-01
    • 2011-05-04
    • 2020-07-01
    • 2012-10-22
    相关资源
    最近更新 更多