我的ghostscript命令是:
gs
-dBATCH -dNOPAUSE
-sDEVICE=pdfwrite
-dColorConversionStrategy=/LeaveColorUnchanged
-dDownsampleMonoImages=false
-dDownsampleGrayImages=false
-dDownsampleColorImages=false
-dAutoFilterColorImages=false
-dAutoFilterGrayImages=false
-dColorImageFilter=/FlateEncode
-dGrayImageFilter=/FlateEncode
-sOutputFile=./merge.pdf
-f ./page_*.pdf
大多数命令与图像有关。
执行后,我发现字体看起来不如输入文件。
字体之间的区别如下:
输入文件之一的字体:
$ pdffonts page_3.pdf
name type encoding emb sub uni object ID
------------------------------------ ----------------- ---------------- --- --- --- ---------
NachlieliCLM-Bold Type 1 Builtin yes no yes 62 0
NachlieliCLM-Bold Type 1 Custom yes no yes 65 0
Courier10PitchBT-Bold Type 1 Builtin yes no yes 70 0
EAAAAA+LiberationSerif TrueType WinAnsi yes yes yes 27 0
NachlieliCLM-Light Type 1 Builtin yes no yes 75 0
NachlieliCLM-Light Type 1 Custom yes no yes 78 0
HAAAAA+LiberationSans-Bold TrueType WinAnsi yes yes yes 42 0
IAAAAA+DejaVuSans TrueType WinAnsi yes yes yes 47 0
JAAAAA+LMMono9-Regular Type 1 Builtin yes yes yes 52 0
KAAAAA+LMMonoProp10-Regular Type 1 Builtin yes yes yes 37 0
Courier10PitchBT-Roman Type 1 Builtin yes no yes 83 0
MAAAAA+LiberationSerif-Bold TrueType WinAnsi yes yes yes 57 0
NAAAAA+LiberationSerif-Italic TrueType WinAnsi yes yes yes 32 0
输出文件的字体:
$ pdffonts merge.pdf
name type encoding emb sub uni object ID
------------------------------------ ----------------- ---------------- --- --- --- ---------
LQRJGW+LiberationSerif-Bold TrueType WinAnsi yes yes yes 54 0
ZAZOKA+NachlieliCLM-Light Type 1C Custom yes yes yes 42 0
XFXEQZ+LiberationSerif-Italic TrueType WinAnsi yes yes yes 56 0
KBCNYY+LiberationSans-Bold TrueType WinAnsi yes yes yes 44 0
PPEMTT+DejaVuSans TrueType WinAnsi yes yes yes 46 0
FUVLBK+NachlieliCLM-Bold Type 1C Custom yes yes yes 36 0
OQFKGW+LMMono9-Regular Type 1C Custom yes yes no 48 0
ZFATCB+LMMonoProp10-Regular Type 1C Custom yes yes no 50 0
WIGEDL+Courier10PitchBT-Bold Type 1C WinAnsi yes yes no 38 0
AFLCKO+Courier10PitchBT-Roman Type 1C WinAnsi yes yes no 52 0
QNUNTR+LiberationSerif TrueType WinAnsi yes yes yes 40 0
BLSWAW+DejaVuSansMono TrueType WinAnsi yes yes yes 97 0
HQDKJN+LiberationSerif TrueType WinAnsi yes yes yes 99 0
SCAKLE+LiberationSerif-Italic TrueType WinAnsi yes yes yes 101 0
AGALJA+NachlieliCLM-Bold Type 1C Custom yes yes yes 91 0
PPEMTT+DejaVuSans TrueType WinAnsi yes yes yes 103 0
TLVEAY+LiberationSans-Bold TrueType WinAnsi yes yes yes 93 0
GLOKSW+NachlieliCLM-Light Type 1C Custom yes yes yes 95 0
部分工作的唯一方法是执行以下操作:
gs
-dBATCH -dNOPAUSE
-sDEVICE=pdfwrite
-dCompressFonts=true
-dSubsetFonts=true
-dEmbedAllFonts=false
-sOutputFile=./merge.pdf
-f ./page_*.pdf
$ pdffonts merge.pdf
name type encoding emb sub uni object ID
------------------------------------ ----------------- ---------------- --- --- --- ---------
LQRJGW+LiberationSerif-Bold TrueType WinAnsi yes yes yes 54 0
NachlieliCLM-Light Type 1 Custom no no yes 42 0
XFXEQZ+LiberationSerif-Italic TrueType WinAnsi yes yes yes 56 0
KBCNYY+LiberationSans-Bold TrueType WinAnsi yes yes yes 44 0
PPEMTT+DejaVuSans TrueType WinAnsi yes yes yes 46 0
NachlieliCLM-Bold Type 1 Custom no no yes 36 0
EVJWAP+LMMono9-Regular Type 1C Custom yes yes no 48 0
LAKFSN+LMMonoProp10-Regular Type 1C Custom yes yes no 50 0
Courier10PitchBT-Bold Type 1 WinAnsi no no no 38 0
Courier10PitchBT-Roman Type 1 WinAnsi no no no 52 0
QNUNTR+LiberationSerif TrueType WinAnsi yes yes yes 40 0
BLSWAW+DejaVuSansMono TrueType WinAnsi yes yes yes 97 0
HQDKJN+LiberationSerif TrueType WinAnsi yes yes yes 99 0
SCAKLE+LiberationSerif-Italic TrueType WinAnsi yes yes yes 101 0
NachlieliCLM-Bold Type 1 Custom no no yes 91 0
PPEMTT+DejaVuSans TrueType WinAnsi yes yes yes 103 0
TLVEAY+LiberationSans-Bold TrueType WinAnsi yes yes yes 93 0
NachlieliCLM-Light Type 1 Custom no no yes 95 0
在最后一个情况下 - 字体LMMono9
不会更改,但是字体NachlieliCLM
更清晰(可能是由于它没有嵌入...)。如您所见,有些字体未嵌入 - 这很糟糕。输出PDF旨在打印和共享,因此字体需要嵌入并高质量。
顺便说一句,我知道旗帜必须如此:
-dCompressFonts=true
-dSubsetFonts=false
-dEmbedAllFonts=true
,但是这些旗帜的字体仍然不清晰。
我已经阅读了许多SO线程和文档,但未能找到解决方案。
我怀疑我需要输出字体为类型Type 1
,而不是类型Type 1C
,但不确定。
示例:
附有两个文件:input.pdf和output.pdf。
仅在以下文本中,它们之间存在区别:
- "标题在这里(标题2)" - 字体为
Courier 10 Pitch
- 子弹"首先"到"第六" - 字体为
LM Mono 9
(请注意,子弹中其余的句子都很好 - 它不会改变。这意味着只有"第一"字数字的单词是改变的。) - 最后/底部(希伯来语)句子 - 字体为
Nachlieli CLM
区别在于,在输出文件中,文本更为总体。(输入更清晰)。为了查看差异,请将两个PDF文档并排放置,每个文件的变焦为100%。使用Ubuntu的默认Document Viewer
或Okular
,差异很明显。其余的文本相同。
确实,输入PDF文件是使用libreoffice 4.2创建的。
输出文件是使用以下命令创建的:
gs
-dBATCH -dNOPAUSE
-sDEVICE=pdfwrite
-dColorConversionStrategy=/LeaveColorUnchanged
-dDownsampleMonoImages=false
-dDownsampleGrayImages=false
-dDownsampleColorImages=false
-dAutoFilterColorImages=false
-dAutoFilterGrayImages=false
-dColorImageFilter=/FlateEncode
-dGrayImageFilter=/FlateEncode
-sOutputFile=./output.pdf
-f ./input.pdf
我正在使用GPL Ghostscript 9.10和Ubuntu 14.04。
屏幕截图显示输入(PER-GS)和输出(后GS)之间的差异。使用软件Document Viewer 3.10
(或EVINCE)。
没有字体格式不是问题。1C类型是CFF格式,它(或多或少)是1型字体的更紧凑的表示。
您不说您使用的是哪个操作系统,也不说Ghostscript。
不可能告诉您有关没有示例的事情。请在我们可以查看它的地方发布一个输入文件,然后我们可以为您提供帮助。
转换为1C型是一个简单的物质,并且不会影响字体的"清晰度",因为两者都是向量形式。您不会从pdfwrite中获得1型字体,所有类型1字体均转换为CFF(类型1C)。
nachlieliclm未嵌入的原因是设置了embedallfonts = false,它不是子集,并且使用默认编码。子集输入字体需要嵌入,因为它几乎总是使用自定义编码,因此您不能简单地使用其位置的原始字体。
i 可疑,但无法在没有看到输入的情况下证明您的问题是由于某些PDF生产应用程序使用的命名差差。该子集不是唯一的,导致名称碰撞。libreoffice在这里是已知的罪魁祸首。
最近相信这个问题(我们现在还使用PDF对象号以及字体名称),但是由于我不知道您正在使用哪种版本的ghostscript,所以我不能说这是否可能是问题。但是,通常会导致不正确的字符,而不是"清晰度"的损失,这很可能是由于呈现图像而引起的。
正如我所说,发布一个(小)示例输入文件以及您从ghostscript和pdfwrite获得的结果,并且可能会说更多。
我不知道您的问题是如何当前的导致不陈述和毫无疑问的字符。我解决了将输入使用的所有字体放在特定文件夹中的所有字体,然后用以下参数调用Ghostscript:
gs -sFONTPATH=<my_folder>
-dEmbedAllFonts=true
-sOutputFile=<my_output>.pdf
<my_input>.pdf
输入和输出PDF之后匹配!顺便说一句:我正在使用GS 9.25.0