我正在使用 Ghostscript ( ) 附带的 Windows postscript 打印驱动程序lib/ghostpdf.inf从打印作业生成 postscript 文件。
但是 postscript 驱动程序没有经过数字签名,因此 Windows 8 和 Windows Server 2012 不允许在不启动进入“允许未签名驱动程序”模式的情况下安装它。
您知道是否有任何签名版本可与最新的 Windows 版本一起使用?
如果情况并非如此,我可以自己编译和签名,但是我无法在http://git.ghostscript.com/ghostpdl.git上提供的 git 存储库中找到 postscript 打印驱动程序的源代码。因为我不熟悉构建驱动程序,所以我可能只是监督它。
有人可以给我一个提示,我可以在哪里找到 postscript 驱动程序文件来自己编译它吗?
编辑: .INF 文件如何告诉 Windows 驱动程序二进制文件所在的位置?我已经研究过“ClassGUID”,但它对于所有驱动程序都是相同的,并且注册表项说明了有关C:\Windows\System32\ntprint.dll. 我认为这对于这个问题来说并不重要,是吗?
这个问题的目的是从编程的角度更好地理解 PostScript。下面描述的目标只是用于说明的示例。
在PostScript语言中,我可以定义一个过程来设置当前图形颜色,如下所示:
/cRED { 1 0 0 setrgbcolor } def % define a procedure to set the color to red.
Run Code Online (Sandbox Code Playgroud)
我想知道是否有一种方法可以定义一个可以定义其他颜色过程的过程。假设cdef定义了这样一个名为的过程。我可以按如下方式使用它:
/cRED 1 0 0 cdef
Run Code Online (Sandbox Code Playgroud)
这应该与之前的 cRED 定义具有相同的效果。问题是我似乎无法弄清楚如何在传递给 的过程中“捕获”堆栈上项目的字面值def。
我尝试了以下方法:
/cdef { /B exch def /G exch def /R exch def { R G B setrgbcolor } bind def } def
/cRED 1 0 0 cdef
/cGRN 0 1 0 cdef
/cBLU 0 0 1 cdef
Run Code Online (Sandbox Code Playgroud)
我的期望是通过使用和bind的值可以按字面意思捕获。即我期望上面的代码与此等效:R GB
/cRED { …Run Code Online (Sandbox Code Playgroud) 我们的打印团队将光栅图像保存为.eps文件.我们需要将大约11000个.eps转换为.jpg.我们在Linux上使用ImageMagick(使用Ghostprint).转换发生但生成的.jpg与源的大小不同.eps - 大约是1/2的大小.可能是将矢量转换为栅格的问题.有办法解决这个问题吗?
我已经在网上彻底搜索了这个问题的答案; 但是,大多数答案都说明了使用showpage.我知道您可以使用showpage将多个页面打印到打印机,但我想在我的计算机上查看多个页面.我想看看像Evince这样的程序中的所有页面.
我听说过使用标准注释打印多个页面,但我不知道它们是如何工作的.
任何有用的评论将不胜感激.谢谢!
当我使用ghostsview将postscript文件转换为tiff时,我使用格式72,但是如果我想在使用ghostscript时使用相同的格式,我应该使用哪种分辨率?例如
gswin32c.exe -q -dNOPAUSE -sDEVICE=tiffg4 -r????? -sOutputFile=a.tif a.ps
Run Code Online (Sandbox Code Playgroud)
好像是这样
gswin32c.exe -q -dNOPAUSE -sDEVICE=tiffg4 -r600 -sOutputFile=a.tif a.ps
Run Code Online (Sandbox Code Playgroud)
但这不完全正确.
编辑:我的意思是在ghostsview中,这是ghostscript的gui版本,我可以设置分辨率让我们说"tiffcrl"为72,96,204x196和204x98.我想要的是获得与ghostview中将分辨率设置为72时相同的输出,就像我使用Ghostsript gswin32c.exe时一样
gsview中的默认设置是什么,所以我可以直接将它们传输到命令行提示符,以便输出结果相同?
EDIT2:gsview的版本是4.9,ghostscript的安装版本是9.01,我的操作系统是windows 7 32bit,我只安装了一个ghostscript版本.
我所做的是用gsview打开一个Postscript文件,然后按"文件"下的"转换".之后我选择设备tiffcrle和分辨率72.所有其他选项都是默认的(我没有搞砸它们可以这么说).我这样做的文件的分辨率为4958x7017.
当我用ghostscript做的时候
gswin32c.exe -q -dNOPAUSE -sDEVICE=tiffcrle -r72 -sOutputFile=a.tif a.ps
我得到一个更小的文件(kb明智),分辨率为595x842,具有完全蹩脚的分辨率.
我也尝试了相同的命令,但使用-r600,它给了我一个与gsview make文件具有相同分辨率的文件,但它有不同的大小(kb明智).
当我尝试命令时,你提供了@pipitas:
gswin32c.exe -o nul -sDEVICE=tiffcrle -c "currentpagedevice {exch ==only ( ) print == } forall" | findstr /i resolution
我得到了结果
/.MarginsHWResolution [204.0 196.0]
/HWResolution [204.0 196.0]
当我在-r204x196下尝试该分辨率时,它仍然不会给出相同的输出.
最好的祝福!
打印机驱动程序有什么作用?例如,当我打开word文档时,使用File- > Print打印文档:打印机驱动程序有什么作用?它会将.doc文档转换为PostScript,附加一些打印机命令,然后发送到打印机吗?
另一个问题是如何拦截打印机驱动程序使用软件在Windows或*nix下发送到打印机的数据/命令.
我想从postscript中获取StandardEncoding向量(PLRM的附录E.6中有一个图形版本,但没有文本).我正在寻找[/ A/B/C/D]行的东西,但实际上我可以将编码向量中的位置与字符命令相关联的任何东西都是好的.
我试过了
(%stdout)
(w)
file
/StandardEncoding
writestring
Run Code Online (Sandbox Code Playgroud)
但它(显然)不起作用/ StandardEncoding不是字符串.如何将这样的矢量打印到标准输出?
我有一个postscript文件.如何使用Visual C++将其发送到打印机?这似乎应该很简单.
我正在使用postscript绘制一个简单的矩形,如下所示
1 -1 scale
0 -300 translate
newpath
88.9 117.25 moveto
131.6 117.25 lineto
88.9 259.75 lineto
closepath fill
88.9 117.25 moveto
111.4 94.75 lineto
154.1 94.75 lineto
131.6 117.25 lineto
closepath fill
131.6 117.25 moveto
154.1 94.75 lineto
154.1 237.25 lineto
131.6 259.75 lineto
closepath fill
%%EndDocument
Run Code Online (Sandbox Code Playgroud)
结果是一个3D矩形.
但是当我添加以下代码时,矩形会以某个角度倾斜.
[ 0.9999999 0 -1 1 261 0 ] concat
Run Code Online (Sandbox Code Playgroud)
我可以理解,这种行为是由于与CTM连接的矩阵中使用的值引起的.谁能解释上面矩阵中值的使用以及它如何影响绘图行为?
编辑:
非常感谢您提供的信息.实际上,我正在使用post script将位图转换为eps.为此,我将在Graphics对象上执行的所有操作转换为等效的post script命令.
我在后期脚本g.Transform=matrix中使用C#进行转换[ matrix.Elements[0] ...... [matrix.Elements[5] ] concat.从我用Google搜索来看,两者在功能上看起来与我相似,但绘制的eps的结果与位图图像不同.所以,我想知道postscript矩阵concat转换是如何工作的.谁能解释我转换为eps的方法出了什么问题?
我有几个形式为"filename_0001.ps","filename_0002.ps"等的postscript图像.我想创建一个动画gif,每个文件作为动画中的一个帧,但我不知道我会怎么做去做那件事.我有超过500个文件,我想包含在一个单一的GIF中,并希望避免手动创建动画GIF.
我google了一下,发现了这一点.在最底层,它似乎表明有一个可用于制作gif的一行命令,但我无法弄清楚如何在我的情况下使用它.
任何建议,将不胜感激.
postscript ×10
printing ×3
ghostscript ×2
animated-gif ×1
animation ×1
driver ×1
eps ×1
tiff ×1
visual-c++ ×1
windows ×1