.NET程序为带内联SVG的现有Tagged PDF添加BBox属性
Tagged PDF中内联SVG的Figure元素无边界框问题解决需求
我有一份用于无障碍访问的Tagged PDF,经PDF Accessibility Checker检测后发现,大量内联SVG存在「单页上的Figure元素无边界框」问题(归类于PDF/UA | 逻辑结构 | 结构元素 | Figures | 边界框)。
需要为这些元素添加BBox属性修复问题。原本尝试在HTML的SVG中添加viewBox属性并同步到PDF,但未成功,因此寻求基于.NET的自动化解决方案。
尝试过的工具:
- PDFBox:Java原生工具,.NET移植版功能滞后,不适用
- 免费版iText:功能不足,无法满足需求
- 当前尝试使用PdfPig
编写的测试代码如下:
byte[] pdf; // 存储PDF内容的字节数组 ... using (MemoryStream stream = new MemoryStream()) { stream.Write(pdf, 0, pdf.Length); stream.Seek(0, SeekOrigin.Begin); using (UglyToad.PdfPig.PdfDocument pdfPigDocument = UglyToad.PdfPig.PdfDocument.Open(stream)) { for (int i = 0; i < pdfPigDocument.NumberOfPages; i++) { var page = pdfPigDocument.GetPage(i + 1); foreach (var item in page.GetAnnotations()) // 也尝试过page.GetImages() { //..计算边界框并填充BBox属性.. } } } }
但GetAnnotations()返回null。我需要找到所有Role="Figure"的元素(如PAC工具显示的),并为其添加BBox属性,请问如何实现?
补充:最小复现示例
以下SVG生成Tagged PDF后,其中的每个rect都会被PAC工具标记为「单页上的Figure元素无边界框」:
<svg xmlns="http://www.w3.org/2000/svg"> <g> <rect x="0" y="0" width="50" height="50" fill="red"></rect> <rect x="100" y="0" width="50" height="50" fill="blue"></rect> </g> </svg>
内容的提问来源于stack exchange,提问作者TerrorBight
相关产品推荐
相关产品推荐

