草庐IT

windows - Ghostscript:ps2pdf 不适用于 Win 7 32 位

coder 2024-06-12 原文

我有最新的 GPL Ghostscript v9.05,我在 Win 32 位系统上运行它。在我的 XP 机器上,这两个命令

ps2pdf -v -


rungs -v (used internally by TeXLive)

Ghostscript 9.05 的报告如下:
GPL Ghostscript 9.05 (2012-02-08)
Copyright (C) 2010 Artifex Software, Inc.  All rights reserved.

在另一台 Win 7 计算机上,命令
ps2pdf -v -

在命令行是 不是 被认为是有效的 ps2pdf语法但 rungs -v 工作正常 .

我在互联网上阅读了有关在此处为 Ghostscript 设置临时目录的信息:

http://schlingel.bplaced.net/?p=54

它说基本上要编辑 gssetgs.bat lib 中的文件Ghostscript 文件夹并添加以下行:
set path=%ProgramFiles%\gs\gs9.02\lib;%ProgramFiles%\gs\gs9.02\bin;%windir%\SysWOW64
set TMP=%YOUR_TEMP%
set TEMP=%TMP%

在我的情况下,这需要通过将 9.02 替换为 9.05 来进行适当修改。现在在Win 7上,关于临时文件夹的最后两行应该如何?我可以要Set TMP如下:
set TMP=%"C:\Users\hihi\AppData\Local\Temp"%

这是正确的语法吗?

我也把tmptemp我的环境变量中的变量。

更新

A. 使用 ps2pdf ,这是我如何转换 PSPDF我的 Win 7 机器上的文件,我收到一个错误:
C:\work\misc>ps2pdf -dNOSAFER -sDEVICE=pdfwrite -r720 -dCompatibilityLevel=1.5 -dUseFlateCompression=true -dMaxSubsetPct=100 -dSubsetFonts=true -dEmbedAllFonts=true -dEPSCrop "%1.ps" "%1.pdf"


Unknown device:
Unrecoverable error: undefined in .uninstallpagedevice
Operand stack:
defaultdevice

注意:上面的命令在我的 Win XP 机器上运行良好!

B. 使用 gswin32c这是我如何转换 PSPDF我的 Win 7 机器上的文件和这个 作品 :
C:\work\misc>gswin32c.exe -o "%1.pdf" -dNOSAFER -sDEVICE=pdfwrite -r720 dCompatibilityLevel=1.5 -dUseFlateCompression=true -dMaxSubsetPct=100 -dSubsetFonts=true -dEmbedAllFonts=true -dNumRenderingThreads=2 -c "60000000 setvmthreshold" -f -dEPSCrop "%1.ps"


GPL Ghostscript 9.05 (2012-02-08)
Copyright (C) 2010 Artifex Software, Inc.  All rights reserved.
This software comes with NO WARRANTY: see the file PUBLIC for details.
Loading NimbusSanL-Regu font from %rom%Resource/Font/NimbusSanL-Regu... 2837152
1454727 4413848 3026018 1 done.
Loading Dingbats font from %rom%Resource/Font/Dingbats... 2837152 1510862 457461
6 3180865 1 done.
Loading NimbusSanL-Bold font from %rom%Resource/Font/NimbusSanL-Bold... 2857248
1553499 4655000 3251960 1 done.

注意:上面的命令在我的 Win XP 机器上也能正常工作

总结 : 我有问题 ps2pdf在我的 Win 7 机器上。

新(2012 年 5 月 9 日)

当我按照 Ken 的建议重新输入最后两行时,这就是我得到的结果:
C:\work\misc>ps2pdf -dNOSAFER -r720 -dCompatibilityLevel=1.5 -dUseFlateCompression=true -dMaxSubsetPct=100 -dSubsetFonts=true -dEmbedAllFonts=true -dEPSCrop "%1.ps" "%1.pdf"
Unrecoverable error: typecheck in .putdeviceprops
avoiding clean up

temp 文件夹包含您提到的那些临时文件。
_.at的内容:
-dCompatibilityLevel#1.4 
-dNOSAFER 
-r720 
-dCompatibilityLevel 
_.at2的内容:
-q -P- -dSAFER -dNOPAUSE -dBATCH -sDEVICE#pdfwrite 
-sOutputFile#-dUseFlateCompression 
-dCompatibilityLevel#1.4 
-dNOSAFER 
-r720 
-dCompatibilityLevel 
-c .setpdfwrite -f1.5 

5 月 11 日更新

注意:现在在我的 win 7 机器上运行良好
C:\work\misc>ps2pdf -dNOSAFER -r720 -dCompatibilityLevel#1.5 -dUseFlateCompression#true -dMaxSubsetPct#100 -dSubsetFonts#true -dEmbedAllFonts#true -dEPSCrop "defense.ps" "defense.pdf"
avoiding clean up
_.at的内容:
-dCompatibilityLevel#1.4 
-dNOSAFER 
-r720 
-dCompatibilityLevel#1.5 
-dUseFlateCompression#true 
-dMaxSubsetPct#100 
-dSubsetFonts#true 
-dEmbedAllFonts#true 
-dEPSCrop 
_.at2的内容:
-q -P- -dSAFER -dNOPAUSE -dBATCH -sDEVICE#pdfwrite 
-sOutputFile#"defense.pdf" 
-dCompatibilityLevel#1.4 
-dNOSAFER 
-r720 
-dCompatibilityLevel#1.5 
-dUseFlateCompression#true 
-dMaxSubsetPct#100 
-dSubsetFonts#true 
-dEmbedAllFonts#true 
-dEPSCrop 
-c .setpdfwrite -f"defense.ps" 

谢谢。

最佳答案

比临时文件问题更有可能的是您尝试写入目标文件的目录的权限。您引用的错误消息早在使用任何临时文件之前就出现了,但是如果您尝试写入不存在的目录或进程没有写入权限的目录,则这是一个非常常见的错误。

首先要做的是发布您正在使用的实际 gswin32 命令行。

您查询的语法不正确。 %value% 是一个 Windows 脚本操作,它表示“用命名值替换 % 符号之间的内容”。因此,如果我声明 'set VAL=c:/temp' 那么我可以说 'set NEWVAL=%VAL%/New' 这将使 NEWVAL 'c:/temp/new'。您可以在 Windows 帮助中或通过快速 Google 找到有关 Windows 脚本的更多信息。

鉴于在您的 Windows 7 机器上找不到“ps2pdf”(这是一个 Windows 脚本)(至少我认为这就是您所说的“未被识别为有效的 ps2pdf 命令”的意思)它似乎确实需要将 Ghostscript 路径添加到您的环境中。简单地更改 gssetgs.bat 本身不会做任何事情,您需要确保从您的 autoexec.bat 脚本调用此脚本文件,以便应用其他环境设置。

如果您不确定 autoexec.bat 是什么,或者不确定如何修改它,那么 Google 应该会很快为您提供帮助。

你真的安装了 Ghostscript,还是简单地复制了它?

鉴于 Ghostscript 可以正常工作,问题一定出在 shell 脚本“ps2pdf”中,或者更准确地说,Windows 7 中的某些更改导致旧脚本无法正常工作。

这个脚本(不幸的是)比我想要的更复杂(我没有写)。它实际上使用了大约三种不同的脚本来完成这项工作。您确实需要找出发送给 GS 的内容。

可能最简单的方法是编辑“ps2pdfxx.bat”。在 :end 标签上,您会看到“rem Clean up”,后面跟着两行以“if exists”开头。把 rem 放在那两个前面。添加一行,上面写着“回声避免清理”文件的结尾应该是这样的:

:结尾
rem 清理。
rem 如果存在 "%TEMP%_.at"删除 "%TEMP%_.at"
rem 如果存在 "%TEMP%_.at"2 删除 "%TEMP%_.at"2
回声避免清理

现在运行你的命令行(顺便说一下,你真的不需要在使用 ps2pdf 时放置 -sDEVICE= ......)

在您的 TEMP 目录中,您应该有名为 _.at 的文件,可能还有 _.at2 文件,这些文件将包含发送到 GS 的实际命令。

OK 文件_.at 被复制到文件.at2 中,然后.at2 被用作Ghostscript 的参数列表。评论你得到的文件:

---此行由批处理文件 ps2pdfxx.bat 添加
-q -P- -dSAFER -dNOPAUSE -dBATCH -sDEVICE#pdfwrite

---这些行来自_.at
-sOutputFile#-dUseFlateCompression
-dCompatibilityLevel#1.4
-dNOSAFER
-r720
-d兼容性级别

--此行由批处理文件ps2pdfxx.bat添加
-c .setpdfwrite -f1.5

这有很多问题:

-sOutputFile#-dUseFlateCompression

这实际上将输出文件设置为“-dUseFlateCompression”

-c .setpdfwrite -f1.5

我不完全确定这会做什么。它要么正确处理 -f 并终止 PostScript 输入,要么将其作为无法识别的开关(可能是后者)忽略。 '1.5' 应该是输入文件名,没有那个 Ghostscript 不知道要使用哪个文件......即使它知道了,它也会尝试将输出写入一个伪造的文件名。

老实说,我建议,如果您想设置所有这些开关,您只需直接调用 Ghostscript,而不是尝试使用脚本。事实上,无论如何我都建议这样做,每次看到这些脚本时,我都会更加不寒而栗。

ps2pdf 脚本所做的几乎所有事情都被您的命令行覆盖,或者一开始就不需要。

关于windows - Ghostscript:ps2pdf 不适用于 Win 7 32 位,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10371457/

有关windows - Ghostscript:ps2pdf 不适用于 Win 7 32 位的更多相关文章

  1. ruby - 在 Ruby 程序执行时阻止 Windows 7 PC 进入休眠状态 - 2

    我需要在客户计算机上运行Ruby应用程序。通常需要几天才能完成(复制大备份文件)。问题是如果启用sleep,它会中断应用程序。否则,计算机将持续运行数周,直到我下次访问为止。有什么方法可以防止执行期间休眠并让Windows在执行后休眠吗?欢迎任何疯狂的想法;-) 最佳答案 Here建议使用SetThreadExecutionStateWinAPI函数,使应用程序能够通知系统它正在使用中,从而防止系统在应用程序运行时进入休眠状态或关闭显示。像这样的东西:require'Win32API'ES_AWAYMODE_REQUIRED=0x0

  2. ruby - 在 Windows 机器上使用 Ruby 进行开发是否会适得其反? - 2

    这似乎非常适得其反,因为太多的gem会在window上破裂。我一直在处理很多mysql和ruby​​-mysqlgem问题(gem本身发生段错误,一个名为UnixSocket的类显然在Windows机器上不能正常工作,等等)。我只是在浪费时间吗?我应该转向不同的脚本语言吗? 最佳答案 我在Windows上使用Ruby的经验很少,但是当我开始使用Ruby时,我是在Windows上,我的总体印象是它不是Windows原生系统。因此,在主要使用Windows多年之后,开始使用Ruby促使我切换回原来的系统Unix,这次是Linux。Rub

  3. ruby-on-rails - Prawn PDF : I need to generate nested tables - 2

    我需要一个表,其中行实际上是2行表,一个嵌套表是..我怎样才能在Prawn中做到这一点?也许我需要延期..但哪一个? 最佳答案 现在支持子表:Prawn::Document.generate("subtable.pdf")do|pdf|subtable=pdf.make_table([["sub"],["table"]])pdf.table([[subtable,"original"]])end 关于ruby-on-rails-PrawnPDF:Ineedtogeneratenested

  4. Vscode+Cmake配置并运行opencv环境(Windows和Ubuntu大同小异) - 2

    之前在培训新生的时候,windows环境下配置opencv环境一直教的都是网上主流的vsstudio配置属性表,但是这个似乎对新生来说难度略高(虽然个人觉得完全是他们自己的问题),加之暑假之后对cmake实在是爱不释手,且这样配置确实十分简单(其实都不需要配置),故斗胆妄言vscode下配置CV之法。其实极为简单,图比较多所以很长。如果你看此文还配不好,你应该思考一下是不是自己的问题。闲话少说,直接开始。0.CMkae简介有的人到大二了都不知道cmake是什么,我不说是谁。CMake是一个开源免费并且跨平台的构建工具,可以用简单的语句来描述所有平台的编译过程。它能够根据当前所在平台输出对应的m

  5. 深度学习部署:Windows安装pycocotools报错解决方法 - 2

    深度学习部署:Windows安装pycocotools报错解决方法1.pycocotools库的简介2.pycocotools安装的坑3.解决办法更多Ai资讯:公主号AiCharm本系列是作者在跑一些深度学习实例时,遇到的各种各样的问题及解决办法,希望能够帮助到大家。ERROR:Commanderroredoutwithexitstatus1:'D:\Anaconda3\python.exe'-u-c'importsys,setuptools,tokenize;sys.argv[0]='"'"'C:\\Users\\46653\\AppData\\Local\\Temp\\pip-instal

  6. ruby-on-rails - CarrierWave - PDF - 只选择第一页 - 2

    我的Rails应用程序中安装了carrierwave。但是,当用户上传多页pdf时,我只希望应用程序获取文档中的第一页并将其转换为jpeg。这可能吗?用什么命令?这是我的uploader。#encoding:utf-8classImageUploader[200,300]##defscale(width,height)##dosomething#end#Createdifferentversionsofyouruploadedfiles:version:thumbdoprocess:resize_to_fill=>[150,210]process:convert=>:jpgdefful

  7. ruby - 如何在 Ruby 中执行 Windows CLI 命令? - 2

    我在目录“C:\DocumentsandSettings\test.exe”中有一个文件,但是当我用单引号编写命令时`C:\DocumentsandSettings\test.exe(我无法在此框中显示),用于在Ruby中执行命令,我无法这样做,我收到的错误是找不到文件或目录。我尝试用“//”和“\”替换“\”,但似乎没有任何效果。我也使用过系统、IO.popen和exec命令,但所有的努力都是徒劳的。exec命令还使程序退出,这是我不想发生的。提前致谢。 最佳答案 反引号环境就像双引号,所以反斜杠用于转义。此外,Ruby会将空格解

  8. u盘安装系统(win10为例) - 2

    下载微PE工具箱进入官网下载微PE工具箱-下载 安装好后,打开微PE工具箱客户端,选择安装PE到U盘 PE壁纸可选择自己喜欢的壁纸,勾选上包含DOS工具箱,个性化盘符图标 下载原版系统进入网站下载镜像NEXT,ITELLYOU如果没有账号,注册一下就好进入选择开始使用选择win10 这里我们选择消费者版,用迅雷把BT种子下载下来 下面的两个盘符,是PE工具箱安装进U盘后,分成的盘符,注意EFI的盘符,这里面不能删东西,也不能添东西,另一个盘符可以当做正常的U盘空间使用,我们现在需要把下载下来的景象文件复制到正常的U盘空间中去 这个时候我们的系统U盘就只做好了 安装系统我们将U盘插入电脑,开机,

  9. ruby - 错误 : Failed to build gem native extension on Windows - 2

    我在安装“redcarpet”gem时遇到以下错误。它在我friend的机器上安装没有问题。(我想安装它来运行yard)ruby版本:1.9.3命令输出:D:\Learning\Common_POM_FW\SampleProjects>yard[error]:Missing'redcarpet'gemforMarkdownformatting.Installitwith`geminstallredcarpet`D:\Learning\Common_POM_FW\SampleProjects>geminstallredcarpetTemporarilyenhancingPATHtoinc

  10. ruby - 从 Ruby 连接到适用于 Windows Phone 8 的 Microsoft 推送通知服务 - 2

    我们正在开发一个需要推送通知的WP8应用程序。为了测试它,我们使用CURL命令行运行推送通知POST请求,确保它实际连接,使用客户端SSL证书进行身份验证并发送正确的数据。我们确实知道,当我们收到对设备的推送时,这项工作是有效的。这是我们一直用于测试目的的CURL命令:curl--certclient_cert.pem-v-H"Content-Type:text/xml"-H"X-WindowsPhone-Target:Toast"-H"X-NotificationClass:2"-XPOST-d"MytitleMysubtitle"https://db3.notify.live.ne

随机推荐