使用ITextSharp组合两个PDF-a文档

时间:2014-07-31 09:14:31

标签: merge itextsharp pdfa

希望有人能够看到我的代码中的缺陷,使用ITextSharp合并为PDF文档。目前,它抱怨缺少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的文件的文档目录字典应包含 元数据键

我希望'文档目录字典'也会被复制,但我猜'新文档()'会创建一个空的不合格文档或其他东西。

谢谢!希望你能帮忙

的Wouter

1 个答案:

答案 0 :(得分:2)

您需要添加以下行:

copy.CreateXmpMetadata();

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

copy.XmpMetadata = myMetaData;

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

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