PDFTron。将注释转换为 svg
PDFTron. Convert annotations to svg
我需要扫描 pdf 文档,从注释中提取一些元数据,获取它的 svg 表示,并将其保存到数据库中。我正在使用 PDFTron 和 .NET 进行 pdf 处理。
在我的研究过程中,我找到了两种方法:
- 从初始文档中提取
fdf
数据。让我们将其命名为 in_pdf
- 创建空的 pdf 文件并将其与
fdf
文档合并。所以我只能得到带有注释的pdf。让我们将其命名为 temp_pdf
- 将
temp_pdf
转换为 svg。
- 打开
in_pdf
,尝试为每个注释找到对应的svg标签。但是我不知道,如何找到对应的标签
第二种方式:
- 从每个注释的初始文档中提取
fdf
数据。事实上,为每个注释制作单独的fdf
。
- 将它与空
temp_pdf
合并。事实上,为每个注释制作单独的 pdf
。
- 将每个
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 具有相同的比例,因此您可以按原样使用这些值。
我需要扫描 pdf 文档,从注释中提取一些元数据,获取它的 svg 表示,并将其保存到数据库中。我正在使用 PDFTron 和 .NET 进行 pdf 处理。
在我的研究过程中,我找到了两种方法:
- 从初始文档中提取
fdf
数据。让我们将其命名为in_pdf
- 创建空的 pdf 文件并将其与
fdf
文档合并。所以我只能得到带有注释的pdf。让我们将其命名为temp_pdf
- 将
temp_pdf
转换为 svg。 - 打开
in_pdf
,尝试为每个注释找到对应的svg标签。但是我不知道,如何找到对应的标签
第二种方式:
- 从每个注释的初始文档中提取
fdf
数据。事实上,为每个注释制作单独的fdf
。 - 将它与空
temp_pdf
合并。事实上,为每个注释制作单独的pdf
。 - 将每个
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 具有相同的比例,因此您可以按原样使用这些值。