我正在使用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文档合并为一个并保留所有标签/辅助功能?