需求:将 LaTeX 中生成的伪代码 PDF 转换成 svg 或 emf 格式的矢量图,然后插入 Word 或 PPT 中。
1 伪代码PDF导出为矢量图
1.1 通过 Adobe Illustrator 处理
- 先新建一个空白文件,然后
文件-->置入
导入PDF;
2.选中这个图片,然后对象-->拼合透明度
,并在弹出的选择框中进行设置,将图片曲线化;
3.选中这个文件,文件-->导出-->导出为
,根据需要导出选择 svg 或者 emf 格式。
不知道为啥,感觉 Adobe Illustrator 导出 svg 的效果比导出emf图片的效果好很多。 后续如果需要 emf 格式的,可将 svg 图片插入 PPT 中,然后通过 右键-->另存为
,得到 emf 格式的图片。(使用 PPT 中图片另存为来更改图片格式,真的好用。)
1.2 通过 Inkscape 处理
注意: Win 11 上使 1.3.2 版本打开 PDF 程序会卡死,而 1.2.2 版本能正常打开 PDF 进行处理。在 Ubuntu 20.4 上使用 1.3.2 版本能正常打开 PDF 进行处理。最新 1.4 版本能正常使用。
操作参考视频:论文技巧 用overleaf latex 生成论文的算法伪代码再用inscape插入到word文档
- 通过Inkscape打开PDF文件,选择从Poppler/Cairo导入;
2. 文件-->另存为
,选择纯 svg 格式或 emf 格式即可;
关于 Win 11 系统中无法使用 Inkscape 1.3.2 打开 PDF 的补充
参考链接:1.3 and 1.3.1 are very very slow opening a small PDF file
上面链接中,帖子的 #32 楼,有大神最后说可能是系统语言的问题,如果将系统语言改为英语应该就能够打开 PDF 文件了。
但是在我们仅仅是想用它将 PDF 转换为 SVG,不想改系统语言啊。好在,帖子中同样给出了其他方法:通过 CMD 命令行的方法来调用 Inkscape 来打开 PDF,甚至是直接通过命令行,调用 Inkscape 完成 PDF 到 SVG 的转换。
(1)首先,需要将 Inkscape 的路径,添加到电脑的环境变量中;
(2)在需要转换的 PDF 所在路径,打开终端;
输入命令:inkscape .\test.pdf
如果这样做来打开 PDF 文件,记住在手动保存文件之前不要关闭 PowerShell 窗口(否则 Inkscape 窗口将一起关闭)。
(3)然后就能看到熟悉的导入文件时的设置窗口,不过是英文界面的;
(4)然后,能正常进入 Inkscape 的编辑界面,还是英文界面的;导出操作就和之前的一样了, 文件-->另存为
,选择纯 svg 格式或 emf 格式即可。
(5)也可以直接在终端中完成 PDF 到 svg 文件的转换,而不用打开 GUI 界面进行操作;
在我的测试中,下面这两个命令,都能正确导出所需的 svg 格式文件。如果需要导出 emf 格式文件的话,仅需要将命令中的 svg 修改为 emf 即可。
inkscape --export-type=svg .\test.pdf
inkscape --export-type=svg --pdf-poppler .\test.pdf
如果,需要转换的 PDF 文件含有多页,则需要再添加参数 --pages=all
。
inkscape --export-type=svg --pages=all .\test.pdf
参考链接中说,使用参数 --pdf-font-strategy=keep
或 --pdf-font-strategy=substitute
能够控制,PDF 文件在转换格式过程中,是保留还是替换导出文件中缺少的字体。但是,我在测试时,无论使用这两个参数中的哪一个,字体都会被替换。可能是自己哪里没搞对吧。所以,不不建议使用参数 --pdf-font-strategy
;但是也可以自己试一下,万一只是我自己的环境有问题导致的失败呢。
inkscape --export-type=svg --pdf-font-strategy=keep --pages=all .\test.pdf
inkscape --export-type=svg --pdf-font-strategy=substitute --pages=all .\test.pdf
1.3 通过在线工具处理
这里提供 2 种方法:一种是直接使用在线工具;另一种是先预处理一下PDF文件,然后再使用在线工具。
(1)直接使用在线的格式转换工具,将PDF转为SVG格式
推荐使用网站:
通过这些网站可将 PDF 格式的伪代码转换为 SVG 格式矢量图,且图片中的字体不会发生变换。测试的其他几个工具在转换时,图片中的字体会发生改变。
注意: 这里提供的网站仅适用于将 PDF 转换为 SVG 格式。
(2)先将 PDF 曲线化,然后再利用在线格式转换工具
通过 Adobe Illustrator 或 Inkscape 处理得到矢量图片的过程,其实也是将字体曲线化以后,再导出为矢量图片的。
先将PDF曲线化,然后再使用在线工具进行格式转换,即可避免字体的改变。
下面提供 3 种 PDF 曲线化操作(这 3 种操作基本一致,大同小异):
-
方法一:通过印前检查。操作见视频:使用Acrobat将PDF内的文字轮廓化 (转曲)
-
方法二:通过添加背景,然后拼合器预览。操作见博客:Adobe Acrobat DC 将PDF转曲步骤
-
方法三:通过添加水印,然后拼合器预览。操作见博客:pdf文件中的文字批量转曲的办法
注意:
(1)方法二和方法三,如果不先添加背景或水印,而是直接操作拼合器预览是没有效果的。
(2)有些人可能使用印刷制作中的工具时会弹出报错,这是因为没有安装相关工具。需要重新安装 Adobe Acrobat DC 软件,在安装过程中需要手动勾选安装 印前检查
组件选项。
这里提供方法一的操作步骤:
- 工具中的印刷制作;
- 印前检查;然后另存为PDF;检查结果输出(直接关掉就行);
PDF 转曲后,再使用在线格式转换工具,得到 svg 格式或 emf 格式文件。有的时候看起来 emf 图片效果不好,可以尝试将其导出 PPT 中,然后右键取消组合或右键编辑图片或右键转换为形状后(取决于图片是什么格式的,有那个选项就选哪个就好),可能图片的效果就好了,但也不一定,也可能这样处理后格式又变了。有的在线工具,就是效果不好,建议换其他的试一下。
尝试下来,感觉转 svg 的效果会更好一些。如果确实需要 emf 格式。可以将 svg 插入 PPT 中,然后选中图片右键将其导出为 emf 格式。
PDF转 svg 工具
PDF转 emf 工具
1.4 导出矢量图效果
直接从LaTex中导出的伪代码PDF效果。

如果矢量化的方式不合适,会导致字体的变化。
![]() 与原PDF一致 | ![]() 字体发生了改变 |
2 对于 PDF 中矢量格式示意图提取
有时看到论文中好看的矢量图,想提取出来保存或修改使用。
一些参考教程,如下:
- 通过 Adobe Illustrator 软件将图片提取到 PPT 处理操作过程,可见微信文章:如何用PPT编辑他人论文的原图?
- 对于使用Inkscape导出矢量图片的过程可参见视频:分享一个从PDF提取矢量图的方法
2.1 通过 PPT 处理
通过将 PDF 另存或导出为 PPT 格式,即可在 PPT 获取到论文中的矢量图。需要选中图片以后,多次取消组合,才能进行编辑。
优点: 方便,且文档的整体排版和原文档相比,保留较好。
缺点: 存在图形部分分解不彻底,部分不能编辑的情况。
2.2 通过 Adobe Illustrator 或 Inkscape 处理
在软件中 Adobe Illustrator 中,打开 PDF 文件,通过多次的释放剪切蒙版和取消编组就能够进行编辑了。
优点: 对矢量图像保留的较好。
缺点: 除了图形以外的文字,由于字体缺失等原因和原来的文档有较大出入。
2.3 通过 Adobe Acrobat DC 软件处理
使用 Adobe Acrobat DC 中的编辑功能,可以直接框选图片,然后将其复制粘贴到 PPT 或 Adobe Illustrator 等软件中进行处理。
或在 Adobe Acrobat DC 中将所需图片单独复制到一个空白 PDF 上,并导出。然后利用在线格式转换工具,得到该图片的 svg 文件。 操作过程的大致过程,可参考这篇文章:如何提取PDF里的矢量图?。虽然这篇文章中使用的是福昕,但 Adobe Acrobat DC 中的操作也是类似的。
3 一些额外说明
-
将 PDF 导出为 PPT,图片另存为 emf 格式,插入 word,并将文档导出为 PDF。此 PPT 图片中的文字仍然能被选中,说明其为文字。但其他方法得到的 SVG 图片,由于字体的缺失(文字已经曲线化了,不再试文字),最终的 PDF 文件选中这些文字。
-
如果 PDF 的字体本机是存在的,则用 Adobe Illustrator 导出 SVG 文件时不用曲线化,可以得到文字仍然是文字的 SVG 图片。
-
将 PDF 导出为 PPT 真的好用,文档的格式能得到很大程度的保留。
-
将图片插入 PPT 然后再另存为其他格式的操作也真的好用。