我正在尝试使用PHP exec()调用将PDF转换为JPG,如下所示:
convert page.pdf -resize 716x716 page.jpg由于某些原因,尽管PDF在Acrobat和Mac Preview中看起来很好,但JPG还是会显示出简陋的文本。这是原始的PDF:
http://whit.info/dev/conversion/page.pdf
下面是janktastic的输出:
http://whit.info/dev/conversion/page.jpg
服务器是一个带有PHP5和ImageMagick 6.2.8的LAMP堆栈。
你能帮助这个被难住的极客吗?
提前谢谢你,
白色
发布于 2011-03-11 12:35:49
ImageMagick只需调用Ghostscript将此PDF转换为图像。如果你在pdf上运行gs,你会得到同样的错误间隔的输出。
我怀疑Ghostscript没有很好地处理PDF的嵌入式TrueType字体。如果您可以将输出更改为嵌入Type1字体或使用“核心”PostScript字体,您将获得更好的结果。
发布于 2011-03-12 09:40:06
我怀疑这是编码/宽度问题。这两个都有点差,尽管我不知道为什么。
以下是一些疑点:
First
文本流在UTF-16 LE中定义。charNULLcharNULL,使用正常的字符串绘制命令语法:
(some text) Tj
有一种方法可以将任何旧字符值转义为()字符串。你也可以这样定义十六进制的字符串:
<203245> Tj
这两种方法都没有使用,只有可疑的内联空值。这可能会在GS中导致一个问题,如果它试图使用指向没有关联长度的字符的指针。
第二个
宽度数组是无用的。您可以按如下方式定义组的宽度:
[ 32 [450 525 500] 37 [600 250] 40 [0] ]
这定义了
32: 450
33: 525
34: 500
37: 600
38: 250
40: 0
这些字体在单个数组中定义了它们的连续宽度。不是非法的,但绝对是浪费/愚蠢的,如果GS被编码为期望数组之间的间隙,它可能会导致错误。
数组中还有一些非常可疑的值。32到126是连续定义的,但随后它开始遍历:...126 [600] 8364 [500] 8216 [222] 402 [500] 8222 [389]. 8230 [1000] 8224 [444]..。然后返回到从160到255的连续。
就是很奇怪。
Third
我甚至不能确定,但是CIDToGIDMap流包含了大量的空值。
底线
这些字体很可疑。我从来没听说过“钟花图书”或"UFPDF 0.1“
那个版本号让我很难堪。这应该也会让你退缩。
在谷歌上搜索"UFPDF“,我发现了作者的这句话:
注释:我写UFPDF是一个实验,而不是一个成品。如果您在使用它时遇到问题,请不要纠缠我以获得支持。虽然补丁是受欢迎的,但我没有太多的时间来维护它。
UFPDF是一个建立在FPDF之上的PHP库。0.1。快跑吧。
https://stackoverflow.com/questions/5268909
复制相似问题