GhostScript在发生字体错误时创建额外页面

问题描述 投票:0回答:2

我有一个进程,需要将多个postscript和pdf文件写入一个postcript文件生成,并将继续通过word interop VB代码进行修改。每次调用ghostscript都会产生一个额外的空白页面。我正在使用GhostScript 9.27。

由于这里有几种技术和因素,我将其缩小了:通过将postscript文件转换为postscript然后通过命令行转换为pdf可以证明问题。直接从postscript到pdf不会发生问题。这是一个示例和错误的示例。

C:\>"C:\Program Files (x86)\gs\gs9.27\bin\gswin32c.exe" -dNOPAUSE -dBATCH -sDEVICE=ps2write -sOutputFile=C:\testfont.ps C:\smallexample.ps
C:\>"C:\Program Files (x86)\gs\gs9.27\bin\gswin32c.exe" -dNOPAUSE -dBATCH -sDEVICE=pdfwrite -sOutputFile=C:\testfont.pdf C:\testfont.ps

Can't find (or can't open) font file %rom%Resource/Font/TimesNewRomanPSMT.
Can't find (or can't open) font file TimesNewRomanPSMT.
Can't find (or can't open) font file %rom%Resource/Font/TimesNewRomanPSMT.
Can't find (or can't open) font file TimesNewRomanPSMT.
Querying operating system for font files...
Didn't find this font on the system!
Substituting font Times-Roman for TimesNewRomanPSMT.

我开始假设字体错误是额外页面的原因(如果只是为了排除,我知道它不确定)。由于我的ps-> pdf测试没有出现这个问题而我的ps-> ps-> pdf确实存在,我认为ghostscript不会将原始postscript文件中的字体数据写入它正在创建的文件中。我正在寻找一种在生成的postscript文件中保留/重新创建它的方法。或者如果那是不可能的,我需要一种方法来告诉ghostscript如何使用这些字体。我没有成功尝试包含它们,如GS文档中所述:https://www.ghostscript.com/doc/current/Use.htm#CIDFontSubstitution

任何帮助表示赞赏。

pdf ghostscript postscript
2个回答
0
投票

我已经做出了这个答案,尽管我知道它没有回答这个问题,因为它不适合作为评论。

我认为你假设丢失的字体导致你的问题是有缺陷的。许多PDF文件没有嵌入他们需要的所有字体,我见过很多这样的例子,他们不会发出额外的页面。

你对自己所做的事情的描述并不完全清楚。您描述了两个过程,一个从PostScript到PDF,一个从PostScript开始到PostScript(WHY?)然后再到PDF。

您尚未描述将PostScript处理为PostScript文件的原因。

特别是您还没有提供要查看的示例文件。没有它,就没有办法判断你的经历是否正确。

例如;完全有可能你设置/ Duplex为true并且文件中有奇数页。这将导致发出额外的空白页(非常正确),因为双面打印需要偶数页。

您链接到的文档用于CIDFont替换,它与字体替换无关,CIDFonts和Fonts在PDF和(更具体地说)PostScript中是不同的。但老实说,我怀疑这是你的问题。

我建议你把(至少)'smallexample.ps'放在公共场所并在这里发布URL,这样我们至少可以遵循你正在做的相同步骤。这样我们就可以告诉你发生了什么。解释你为什么这样做也很有用,我通常强烈建议你不要做这样的额外步骤;每一步都有以某种方式降低输出的风险。


0
投票

感谢您的答复。由于评论长度限制,我也发布了答案:

我认为你对字体的假设是错误的是正确的。我在第二个ps文件中找到了额外的页面,并且在第二次转换之前没有遇到字体错误。

我有一个使用VB MSWord Interop库的过程,使用设置了ghostscript和redmon的虚拟打印机将多个文档打印到单个ps文件。我正在添加功能以混合pdf文件。它有效,但会产生额外的页面。为了缩小实际问题的位置,我通过命令行尝试了更简单的测试用例来识别问题。当ghostscript将ps转换为ps时,我只获得了额外的页面(无论是否还有pdf)。将ps转换为pdf我没有得到额外的页面。有趣的是,我可以通过将ps转换为pdf然后将两个pdf转换回ps来解决此问题。这是一个较慢的,但不应该是必要的,所以我想确定并解决额外的页面问题。我无法分享该特定文件。我会看看我是否可以创建一个我可以分享的例子,它也会出现问题。在此期间,我可以确认源ps文件是六页,双工设置如下。在生成的ps文件中有额外页面的双工定义。我可以在源ps中检查一些其他常见的罪魁祸首吗?谢谢。

featurebegin{
%%BeginFeature: *DuplexUnit NotInstalled

%%EndFeature
}featurecleanup

featurebegin{
%%BeginFeature: *Duplex None

    <</Duplex false /Tumble false>> setpagedevice
%%EndFeature
}featurecleanup
© www.soinside.com 2019 - 2024. All rights reserved.