连接多个具有不同一致性级别的PDF / A

时间:2019-09-26 15:11:15

标签: itext pdfa

是否可以将多个pdf / a(可能具有不同的一致性级别:一些pdf / a-1b,一些pdf / a-3b ecc)连接成一个pdfa?

我当时认为可以使用最新级别(3-a或3b),但是在通过VeraPDF进行验证时出现错误: enter image description here

这是我的代码(其中:

public static byte[] CreateConformantCopy(List<byte[]> sourcePdfs)
    {
        var version = PdfVersion.PDF_1_7;
        var type = PdfAType.PDF_A_3B;

        WriterProperties wp = new WriterProperties();
        wp.UseSmartMode();
        wp.SetPdfVersion(version.ToPdfVersion());

        PdfOutputIntent oi = new PdfOutputIntent("Custom", "", "http://www.color.org", "sRGB IEC61966-2.1", Assembly.GetExecutingAssembly().GetManifestResourceStream("xxx.Resources.sRGB_CS_profile.icm"));

        using (var mergedPdf = new MemoryStream())
        {
            var writer = new PdfWriter(mergedPdf, wp);

            using (PdfADocument newDoc = new PdfADocument(writer, type.ToPdfAConformanceLevel(), oi, new DocumentProperties() { }))
            {
                Document document = new Document(newDoc, PageSize.A4.Rotate());

                newDoc.SetTagged();

                newDoc.GetCatalog().SetLang(new PdfString(Thread.CurrentThread.CurrentUICulture.Name));

                newDoc.GetCatalog().SetViewerPreferences(
                        new PdfViewerPreferences()
                            .SetDisplayDocTitle(true)
                            .SetCenterWindow(true)
                );

                PdfMerger merger = new PdfMerger(newDoc);

                for (int k = 0; k < sourcePdfs.Count; k++)
                {
                    using (var inDoc = PdfHelper.GetDocument(sourcePdfs[k]))
                    {
                        var numberOfPages = inDoc.GetNumberOfPages();

                        merger.Merge(inDoc, 1, numberOfPages);
                    }
                }

                newDoc.Close();
            }

            return mergedPdf.ToArray();
        }
    }

1 个答案:

答案 0 :(得分:0)

PDF / A-1和PDF / A-2在要求方面有一些差异。因此,将它们合并在一起是不可能的。查看您的验证错误,我认为情况确实如此。例如,第一个关于XMP元数据。 PDF / A-2在这里更加严格,您会遇到此错误,因为您的第一个文件(可能是有效的PDF / A-1)实际上并不满足PDF / A-2规则。

但是可以将PDF / A-1文档附加到PDF / A-2。这甚至不需要使用PDF / A-3,它允许任意附件。 PDF / A-2标准确实允许附加有效的PDF / A-1(以及PDF / A-2文档)。