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

Merge 使用ITextSharp组合两个PDF-a文档,merge,itextsharp,pdfa,Merge,Itextsharp,Pdfa,希望有人能看到我使用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

希望有人能看到我使用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一致性文件的文件目录字典应包含 元数据密钥

我希望“文档目录词典”也能被复制,但我猜“newdocument()”会创建一个空的不一致文档或其他东西

谢谢!希望你能帮忙


Wouter

您需要添加此行:

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

copy.XmpMetadata = myMetaData;
其中
myMetaData
是包含正确XMP流的字节数组


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

我们应该在什么时候称之为元数据?在一些特别行动之前,还是相反的在之后?还是没关系?(假设它只用于与pdfa相关的元数据)