You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

.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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.13 12:43:13