【问题标题】:Executing Ghostscript on a 64 bit command shell from Excel VBA从 Excel VBA 在 64 位命令 shell 上执行 Ghostscript
【发布时间】:2014-03-26 14:10:17
【问题描述】:

我的 Excel VBA 宏创建了一个包含以下行的 gs.cmd 文件:

"C:\Program Files\gs\gs9.10\bin\gswin64c.exe" @gsparams
echo %ProgramFiles%
pause

然后执行Shell "gs.cmd"

Ghostscript 生成的 PDF 文件缺少一些链接,控制台显示 C:\Program Files (x86)

如果我从“开始”菜单启动cmd.exe 并执行相同的gs.cmd 脚本,则生成的PDF 文件是正确的并且控制台显示C:\Program Files

它包含许多 36"x24" CAD 图纸的 PDF 文件,其中大部分是矢量内容和一些大位图,在 pdfmarks 文件中定义了数百个书签和数千个链接。

我看到的执行之间的唯一区别是一个似乎是 32 位,另一个似乎是 64 位。

我不明白为什么 Ghostscript 在 64 位实例中可以完美地完成工作,但在 32 位实例中可以正确完成大部分工作,只是错过了大约 5% 的链接的创建。我希望它要么失败要么工作。

我搜索了一下是否可以让Shell 在 64 位环境中运行,但没有找到解决方案。

我该如何解决这个问题?

【问题讨论】:

  • @yms:我也不明白这个问题。我只是想列出测试和运行环境之间的差异。我尝试了Shell "gs.cmd"Shell "cmd /c gs.cmd",结果是一样的。也许 Ghostscript 使用了一些环境变量?
  • 有趣...确实可能是这样。

标签: excel vba pdf cmd ghostscript


【解决方案1】:

如何创建第二个 .cmd 文件来启动您想要的 cmd 版本?

它可能看起来像这样:

launcher.cmd:

%SYSTEMROOT%\System32\cmd.exe /c c:\temp\gs.cmd

32 位版本的 cmd.exe 将在 64 位系统上的 %SYSTEMROOT%\Syswow64\ 内。在 32 位系统上,我猜脚本将使用唯一可用的 cmd.exe (%SYSTEMROOT%\System32\cmd.exe),所以没有问题。

【讨论】:

  • 谢谢!我添加了/c
猜你喜欢
  • 2018-05-25
  • 2011-06-15
  • 1970-01-01
  • 1970-01-01
  • 2011-01-18
  • 1970-01-01
  • 2014-04-21
  • 2014-01-22
相关资源
最近更新 更多