itext7 pdfMerger不保留标签

时间:2019-07-04 15:26:33

标签: c# pdf itext itext7

我正在使用iText7(dotnet版本)将多个PDF / UA文档合并为一个。

源文档已完全标记并且可以访问(使用PAC3工具进行检查)。但是合并的PDF存在几个可访问性问题,最显着的H1和H2标签已在合并文档中删除。

作者@ bruno-lowagie在评论here中指出,iText7应该支持这一点,我已经遍历了所有可以找到的示例/教程,但是找不到合并和合并的方法。保留所有标签。

这是我的示例代码:

public static void CombineMultiplePDFs(string[] fileNames, string outFile)
        {
            var writerProperties = new WriterProperties()
                .AddUAXmpMetadata()
                .AddXmpMetadata();

            PdfDocument pdf = new PdfDocument(new PdfWriter(outFile, writerProperties));
            pdf.SetTagged();
            pdf.GetCatalog().SetLang(new PdfString("en-US"));

            var viewerPreferences = new PdfViewerPreferences().SetDisplayDocTitle(true);
            pdf.GetCatalog()
                .SetViewerPreferences(viewerPreferences);

            PdfDocumentInfo info = pdf.GetDocumentInfo();
            info.SetTitle("iText7 PDF/UA example");
            info.SetCreator("A Creator").SetAuthor("An Author");


            var merger = new PdfMerger(pdf, false, false);
            merger.SetCloseSourceDocuments(true);
            var srcPdfs = new List<PdfDocument>();
            foreach (var fileName in fileNames)
            {
                PdfDocument srcPdf = new PdfDocument(new PdfReader(fileName));
                srcPdfs.Add(srcPdf);
                merger.Merge(srcPdf, 1, srcPdf.GetNumberOfPages());
            }

            merger.Close();
            pdf.Close();
        }

请不要,我已经尝试过直到结束时才关闭源文件。

如何将多个PDF / UA文档合并为一个并保留所有标签/辅助功能?

0 个答案:

没有答案