GhostScript 完成转换为 PDF 后删除输入文件
Posted
技术标签:
【中文标题】GhostScript 完成转换为 PDF 后删除输入文件【英文标题】:Delete the input file after GhostScript finishes converting to PDF 【发布时间】:2021-11-29 07:56:33 【问题描述】:GhostScript 完成将输入文件转换为 PDF 文件后,谁能告诉我如何使用 PostScript deletefile
运算符删除输入文件。
【问题讨论】:
“(/路径/文件名)删除文件”。请注意,当前版本的 Ghostscript 将拒绝执行此操作,除非您使用 -dNOSAFER(推荐不)运行或将 --permit-file-all=/path/filename 添加到命令行。这是一种安全措施,可防止 PostScript 程序在未经明确许可的情况下干扰磁盘内容。 @KenS - 感谢您的回复。我似乎很难正确使用语法/标点符号。"C:\Program Files\gs\gs9.55.0\bin\gswin64c.exe" -q -dNOSAFER -sDEVICE#pdfwrite -o "C:\Temp\Temp_0001.pdf" -c (C:/Temp/ Temp_0001.ps) 删除文件 -f "C:\Temp\Temp_0001.ps"
。额外的帮助将不胜感激。在其他部分正常工作后,我将删除 -dNOSAFER!
nvm - 我想我明白了。我不得不切换 -c 和 -f 开关(和参数)。但是,似乎 DOS/Windows 样式路径规范“C:\Temp\Temp.ps”对于 deletefile 操作员来说是不可接受的,但 C:/Temp/Temp.ps 甚至 C:\\Temp\\Temp 似乎是不可接受的。 ps似乎工作正常。有什么解决方法吗?
没有。 IIRC 这是由于命令外壳处理,'\' 被视为转义。您要么需要加倍 '\' 以便命令 shell 将它们减为 1,要么使用 Unix 样式的行尾。这不是 PostScript 或 Ghostscript 做的,而是 Windows。您的命令行在 -c 和 -f 之间的内容周围缺少引号“”。输入也是按顺序处理的,所以 -c...-f 在输入文件名之前处理。这意味着它将删除文件,然后尝试处理它。我敢肯定你不是那个意思:-)
【参考方案1】:
这似乎对我有用,首先创建 PDF 文件,然后设置输入文件的权限,最后删除输入文件。
"C:/Program Files/gs/gs9.55.0/bin/gswin64c.exe" -q -sDEVICE#pdfwrite
-o "C:/Temp/Temp_0001.pdf"
-f "C:/Temp/Temp_0001.ps"
--permit-file-all=C:/Temp/Temp_0001.ps
-c (C:/Temp/Temp_0001.ps) deletefile
注意:由于我必须为permit-file-all
和deletefile
切换到Unix 样式的路径分隔符(即使我在Windows 上运行它),所以我决定使用相同的路径分隔符输出和输入文件的约定也是如此。 Windows 似乎对此没问题,并且该约定被统一用于所有路径/文件。
【讨论】:
以上是关于GhostScript 完成转换为 PDF 后删除输入文件的主要内容,如果未能解决你的问题,请参考以下文章
转换后的 tiff 文件 (GhostScript) 中缺少 Pdf 文本框标记
Ghostscript - 错误的 CMYK 颜色转换 - 100% 黄色转换为 98% 黄色?
在 .bat 文件中使用 ghostscript 压缩 PDF - 缺少文本