我有一个过程,需要将多个postscript和pdf文件写入由word interop VB代码生成的单个postscript文件,并将继续对其进行修改。每次调用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所述,尝试包含它们没有成功。
感谢您的帮助。
答案 0 :(得分:0)
我已经回答了这个问题,尽管我知道它不能回答问题,因为它不适合作为评论。
我认为您关于缺少字体导致问题的假设是错误的。许多PDF文件并未嵌入它们所需的所有字体,我已经看过许多这样的示例,并且它们不会发出多余的页面。
您对自己正在做的事情的描述还不是很清楚。您描述了两个过程,一个过程从PostScript到PDF,另一个过程从PostScript到PostScript(WHY?),然后到PDF。
您尚未说明为什么要将PostScript处理为PostScript文件。
尤其是您没有提供示例文件来查看。没有这些,就无法判断您的经验是否正确。
例如;您完全有可能将/ Duplex设置为true,并且文件中的页面数为奇数。这将导致额外的空白页(正确退出),因为双面打印需要偶数页。
链接到的文档用于CIDFont替换,它与Font替换无关,CIDFonts和Fonts在PDF中(尤其是PostScript)是不同的。但老实说,我怀疑这是您的问题。
我建议您(至少)将“ smallexample.ps”放置在公共位置,然后在此处发布URL,这样我们至少可以遵循与您相同的步骤。这样我们就可以告诉您发生了什么。对为什么要这样做的解释也很有用,我通常强烈建议您不要做这样的额外步骤。每个步骤都有以某种方式破坏输出的风险。
答案 1 :(得分: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