php – 像Verisign / Docusign一样非常快速地将PDF转换为PNG

我一直在使用PDF到PNG转换,并尝试了
ImageMagick和Ghostscript.

我有一个36页的文档,分为单独的PDF.最快的我在运行Linux的i7机器上使用8 GB内存的所有36页的转换时间大约为20秒.

我看到VeriSign / DocuSign,当然Adobe EchoSign能够在10秒内(有时大约5秒钟)将所有这些文件转换为“预览”.

有什么我想念的吗?它真的只是机器本身的全部吗?

这是我使用Ghostscript和此命令转换它们的最快速度:

gs -q -dQUIET -qNODISPLAY -dNumRenderingThreads=4 -dNOPAUSE \
   -sDEVICE=jpeg -sOutputFile=$exportPathCleaned -dJPEGQ=90 \
   -r100 -q $pdf -c quit

是不是不可能达到他们的速度?
EDIT PHP / Java平台就是我的目标

编辑2以澄清 – 希望能够这样做以开发类似的系统到VeriSign / DocuSign等,以便div和其他项目可以放在输出视图上.据我所知,你不能用直接的PDF做到这一点,这就是为什么他们将所有东西都转换为图像.

最佳答案 我使用此命令,在4 GB的MacBook Pro上使用4 GB的RAM,处理您的链接样本PDF:

$> time gs -q -sDEVICE=jpeg -o evs-%02d.jpg -dJPEGQ=90 -r100 EVS.pdf

返回11个JPEG,具有此时间信息:

real  0m1.011s
user  0m1.063s
sys   0m0.091s

即:11页~1秒.

我发现您的示例PDF没有任何性能问题.但是,您的PDF并非完全犹太,因为Ghostscript发出的此警告消息表明:

**** Warning: can't process font stream, loading font by the name.

**** This file had errors that were repaired or ignored.
**** The file was produced by: 
**** >>>> Acrobat Distiller 9.5.5 (Windows) <<<<
**** Please notify the author of the software that produced this
**** file that it does not conform to Adobe's published PDF
**** specification.

该文件包含231个图像或模板.

此外,它没有嵌入(全部)它使用的字体:

$> pdffonts Documents/pdfs/EVS.pdf

name                      type          encoding     emb sub uni object ID
------------------------- ------------- ------------ --- --- --- ---------
TimesNewRomanPSMT         TrueType      WinAnsi      no  no  no     636  0
TimesNewRomanPS-BoldMT    TrueType      WinAnsi      no  no  no     638  0
Arial-Black               TrueType      WinAnsi      no  no  no     335  0
EPBFLF+Cambria            CID TrueType  Identity-H   yes yes yes    332  0
Helvetica                 Type 1        Custom       no  no  no     511  0
ArialMT                   TrueType      WinAnsi      no  no  no     476  0
FAMLHA+Wingdings-Regular  CID TrueType  Identity-H   yes yes yes    496  0
TimesNewRomanPS-ItalicMT  TrueType      WinAnsi      no  no  no     495  0

如果嵌入了这些字体,Ghostscript就不必……

> …搜索合适的替代字体,
> …从硬盘加载替换字体,
> …在渲染为JPEG输出时应用替代字体.

即使嵌入字体的PDF更大,处理成JPEG也会更快!

我通过将字体嵌入到示例PDF并再次运行上述命令来验证我的最后一个断言:

$> time gs -q -sDEVICE=jpeg -o evs-%02d.jpg -dJPEGQ=90 -r100 EVS-emb.pdf

 real  0m0.731s
 user  0m0.642s
 sys   0m0.072s
点赞