我使用的是Spatie/pdfToImage,该文件基于幻影脚本和imagemagick构建到我的服务器上:
在我使用laravel的地方->代客,一切正常。
在我的服务器上,通过laravel使用数字海洋,伪造了多页pdf语言,该语言是瑞典语,从普通瑞典语转变为一堆随机字母和符号。
有人建议我,这可能是服务器上缺少字体的问题。 pdf中使用的字体:
<</StemV 68/FontName/PSQHMO+FoundrySans-Normal/FontFile2 216 0 R/FontStretch/Normal/FontWeight 400/Flags 32/Descent -240/FontBBox[-40 -240 960 916]/Ascent 916/FontFamily(FoundrySans-Normal)/CapHeight 667/XHeight 465/Type/FontDescriptor/ItalicAngle 0>>
<</StemV 100/FontName/MLHPWU+FoundrySans-Medium/FontFile2 217 0 R/FontStretch/Normal/FontWeight 400/Flags 32/Descent -241/FontBBox[-42 -241 1008 916]/Ascent 916/FontFamily(FoundrySans-Medium)/CapHeight 667/XHeight 470/Type/FontDescriptor/ItalicAngle 0>>
<</StemV 68/FontName/SUEECI+FoundrySans-Normal/FontFile2 218 0 R/FontStretch/Normal/FontWeight 400/Flags 4/Descent -240/FontBBox[-40 -240 960 916]/Ascent 916/FontFamily(FoundrySans-Normal)/CapHeight 667/XHeight 465/Type/FontDescriptor/ItalicAngle 0>>
<</StemV 48/FontName/KIDDUY+FoundrySans-Light/FontFile2 9 0 R/FontStretch/Normal/FontWeight 400/Flags 32/Descent -248/FontBBox[-28 -248 978 924]/Ascent 924/FontFamily(FoundrySans-Light)/CapHeight 667/XHeight 458/Type/FontDescriptor/ItalicAngle 0>>
这是imagemagick和ghostscript中的字体配置: https://www.imagemagick.org/script/resources.php
如何解决?
更新:
我现在已经在新服务器上进行了全新安装。
安装了Imagick和spatie / pdfToImage
根据KenS的建议,我参加了比赛
gs -sDEVICE = png16m -o out%d.png
终端输出
forge@Server:~/app/storage/app/public/files$ gs -sDEVICE=png16m -o test_out%d.png file.pdf
GPL Ghostscript 9.22 (2017-10-04)
Copyright (C) 2017 Artifex Software, Inc. All rights reserved.
This software comes with NO WARRANTY: see the file PUBLIC for details.
Processing pages 1 through 2.
Page 1
Page 2
文档呈现相同=错误。
我完全不知所措..不知道下一步可能是什么..
Update2:
我还运行了convert imagemagick突击队,并且img的渲染方式也相同。
因此,即使我用ghostscript独奏,imagemagick或spatie / pdfToImage进行操作,它也会提供相同的输出结果
答案 0 :(得分:1)
好吧,当前版本的Ghostscript(9.25)对我来说可以接受;那是文字似乎是正确的。所有字体都是嵌入式的,所以应该没有任何问题。
这意味着即使您确实替换了默认字体替换,也无济于事,因为Ghostscript不应使用默认字体,而是将使用PDF文件中嵌入的字体。
在不知道您正在使用哪个版本的Ghostscript(我从后面的评论中看到它的9.25)或用于启动它的命令行的情况下,我无法真正进行类似的比较。我很难看得出您如何能得到这样一个不同的结果。看来Ghostscript无法找到嵌入的字体。
您使用的任何软件包都有可能造成“不幸”的后果。 Linux上的各种软件包维护者都添加了自己的补丁程序,有时还修改了Ghostscript的构建方式。可能损坏了某些东西。
如果您能够自己构建Ghostscript,则可以尝试克隆我们的Git存储库并执行此操作。您也可以尝试从我们的网站上下载Linux二进制文件。它们不能与所有Linux发行版(不同的ABI)一起使用,但是您可以尝试,可能很幸运。
您还可以尝试直接在PDF文件上运行Ghostscript。像这样:
gs -sDEVICE = png16m -o out%d.png
应产生2个PNG文件,分别是out1.png和out2.png。它还将在终端上产生一堆东西。反向通道输出对我来说是有价值的信息,因此,如果您可以重现该问题,我也希望看到这一点。
最后一个想法;可能同时安装了多个版本的Ghostscript,可能是您当前的设置使用的是旧版本的Ghostscript。
使用ImageMagick或Spatie无法为您提供帮助,但是如果您可以将它们调试到可以用普通的Ghostscript命令行重现该问题的程度,那么我可以做进一步的研究。
答案 1 :(得分:1)
最后使它起作用。首先,我想对KenS给予真正的帮助,这确实对我有帮助,没有他,那将是行不通的。
这就是我所做的:
1-我删除了ghostscript:
sudo apt-get purge --auto-remove ghostscript
然后
wget
https://github.com/ArtifexSoftware/ghostpdl-downloads/releases/download/gs925/ghostscript-9.25.tar.gz
tar xvf ghostscript-9.25.tar.gz
输入解压缩的文件夹并执行
./configure
make
make install
然后
sudo ln -s /usr/local/bin/gs /usr/bin/gs
在上述操作之上,我做了:
sudo add-apt-repository ppa:glasen/freetype2
然后:
sudo apt update && sudo apt install freetype2-demos