Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/svg/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
将SVG文件转换为PDF后留下的白色渐变瑕疵_Pdf_Svg_Matplotlib_Inkscape - Fatal编程技术网

将SVG文件转换为PDF后留下的白色渐变瑕疵

将SVG文件转换为PDF后留下的白色渐变瑕疵,pdf,svg,matplotlib,inkscape,Pdf,Svg,Matplotlib,Inkscape,我有一个条形图的SVG文件,需要将其转换为PDF。条形图在matplotlib中制作,另存为PDF并导入Inkscape。我使用Inkscape向图中添加注释,然后将其导出回PDF以用于最终文档 这就是PDF文件进入Inkscape时的样子 在图的其他位置添加文本并保存为PDF后,我得到了与这些白线相同的绘图: 这些不是典型的PDF渲染工件,更仔细地检查会发现它们有渐变 我认为这是SVG文件的产物。我使用了一个在线SVG到PDF转换器,这些行仍然存在。此外,我使用此方法将我的所有图形、Ma

我有一个条形图的SVG文件,需要将其转换为PDF。条形图在matplotlib中制作,另存为PDF并导入Inkscape。我使用Inkscape向图中添加注释,然后将其导出回PDF以用于最终文档

这就是PDF文件进入Inkscape时的样子

在图的其他位置添加文本并保存为PDF后,我得到了与这些白线相同的绘图:

这些不是典型的PDF渲染工件,更仔细地检查会发现它们有渐变


我认为这是SVG文件的产物。我使用了一个在线SVG到PDF转换器,这些行仍然存在。此外,我使用此方法将我的所有图形、Matplotlib到Inkscape转换为PDF,并且我没有任何其他图形出现此问题

我发现Inkscape在导入具有与任何预设Inkscape图案不同的着色类型的条形图时会执行此操作。当我从R编程语言和excel导入图形时,我看到了这个问题,所以我认为它不是Matplotlib特有的。然而,我不知道根本原因,因为我经常遇到这个问题,我将分享我在遇到这个问题时通常采用的解决方法。一个不一定比另一个好,这取决于我使用的情况

选项1)在其他程序(Gimp、Photoshop、Powerpoint…)中将PDF转换为.png位图图像,然后将图像嵌入Inkscape。进行更改,然后以PDF格式从Inkscape导出。这样做的缺点是图形不再是矢量贴图。使用选项2或3将其保留为矢量贴图

选项2)将pdf导入Inkscape,解组pdf对象,删除条形图中的剥离填充,然后使用Inkscape制作的填充重新创建填充。在最糟糕的情况下,我实际上在Inkscape中创建了定制的条形图模式,以与我以前使用的模式完全匹配。这个过程很痛苦

选项3)创建覆盖工件的形状,从形状中删除边界线,并使用滴管使其与良好零件的颜色完全相同


正如我所说的,这些都不是为了避免问题而对问题的学术理解,但我希望它能帮助您完成任务。

您能提供一个最低限度的示例文件(原始PDF和SVG)吗?您可能还想查看导出包,以导出到各种矢量格式,包括本机Powerpoint格式,请参阅,谢谢,我想我可以使用选项1。我可以在python中彻底地过度构建我的.png,然后将其导出为pdf格式,以至少保存一些矢量。我将不得不看看这对我的文件大小有什么影响,但这可能是最好的选择。我将Inkscape文件保存为.png,它运行良好,但我丢失了所有的矢量化。