美好的一天,我已经阅读了有关“PDF到SVG”,“PDF到PNG,PNG到SVG”的所有问题和答案,并且没有成功完成我的任务。
我有一张大约10mb的PDF(来自archiCAD的蓝图),并且在使用pdf2svg转换为SVG后,SVG大约为70mb。转换需要14秒,但由于SVG的大小,网页加载大约需要150秒。
我的问题是 - 我如何将PHP中的PDF转换为具有适当大小的Web的SVG,而不会丢失质量并且不会丢失它?
此代码将PDF转换为70MB的SVG:
$fileName = 'in.pdf';
$targetName = 'out.svg';
exec("pdf2svg ".escapeshellarg($fileName)." ".escapeshellarg($targetName));
这个版本将PDF转换为500kb SVG,导致质量损失,路径丢失,文本丢失等。
exec("convert -density 200 ".escapeshellarg($fileName)." middle.png");
exec("inkscape middle.png --export-plain-svg=".escapeshellarg($targetName));
我尝试过imagemagick,autotrace,potrace,inkscape,pdf2svg。 我尝试了“convert pdf to svg”的答案。其他问题(关于SO)甚至都不是我所需要的。
我几乎阅读了Google上的每个链接,几乎每个主题都完成了我的任务,但它们都是以小尺寸PDF开头,所以它无法解决我的问题。
答案 0 :(得分:1)
为什么你想要绝对的SVG? 如果使用Ghostscript缩小PDF,图像将保持原样,只需更改分辨率。
我用ghostscript转换小尺寸的PDF。它比转换(imagick)更容易,更快。
我认为你可以在http://www.ghostscript.com/doc/current/Use.htm中找到答案的某些部分。
我用它来减少“电子书”质量的PDF:
exec('gs -sDEVICE=pdfwrite -dCompatibilityLevel=1.4 -dPDFSETTINGS=/ebook -dNOPAUSE -dBATCH -sOutputFile='.$outfile.' '.$file.' ',$output, $return_var);