PDFTron。将注释转换为 svg

PDFTron. Convert annotations to svg

我需要扫描 pdf 文档,从注释中提取一些元数据,获取它的 svg 表示,并将其保存到数据库中。我正在使用 PDFTron 和 .NET 进行 pdf 处理。

在我的研究过程中,我找到了两种方法:

  1. 从初始文档中提取 fdf 数据。让我们将其命名为 in_pdf
  2. 创建空的 pdf 文件并将其与 fdf 文档合并。所以我只能得到带有注释的pdf。让我们将其命名为 temp_pdf
  3. temp_pdf 转换为 svg。
  4. 打开in_pdf,尝试为每个注释找到对应的svg标签。但是我不知道,如何找到对应的标签

第二种方式:

  1. 从每个注释的初始文档中提取 fdf 数据。事实上,为每个注释制作单独的fdf
  2. 将它与空 temp_pdf 合并。事实上,为每个注释制作单独的 pdf
  3. 将每个 temp_pdf 转换为 svg。使用这种方式,给我每个注释和它的 svg 字符串之间的映射。但是会导致创建很多临时文件。

如果我有一些工具可以直接转换 svg 中的每个注释,而不是整个文档,那么所有的东西都会简单得多。有没有办法做到这一点,使用 PDFTron?

您可以将注释的外观导出到 PDF 页面,然后将该页面转换为 SVG。

此论坛 post 展示了如何为图像呈现特定注释。 https://groups.google.com/d/msg/pdfnet-sdk/s8eeLmyNuGc/b_0gA02He3IJ

要根据您的用例自定义该代码,以下内容应该很有效。 对于 SVG 生成,您可以执行以下操作。

Page temp_page = doc.PageCreate();
temp_page.AnnotPushBack(annot);
annot.Flatten(temp_page); // move annotation content stream into page content stream, and remove the annotation
temp_page.SetMediaBox(temp_page.GetVisibleContentBox())
Convert.ToSvg(temp_page, "out_path", svg_options);

从这里您可以使用标准 XML 工具将此 SVG 内容合并到您的目标 SVG 文件中。

要定位注释和大小,您可以调用

annot.GetRect()

x1,y1 值给你底部 左角,x2,y2 给你右上角。

生成的 SVG 输出与 PDF 具有相同的比例,因此您可以按原样使用这些值。