Ghostscript 中的 Jpg 到 PDF

问题描述 投票:0回答:1

对不起我的英语。据我所知,Ghostscript 不支持命令中通过掩码(*) 进行文件转换,所有文件必须在命令中明确列出(0001.jpg, 0002.jpg)。我遇到了这样两个包含掩码转换的脚本,但找不到它不起作用的原因:

@echo off
if %1.==Sub. goto %2
for %%f in (F:\myFOLDER\*.jpg) do call %0 Sub action %%~nf
goto end
:action

"C:\Program Files (x86)\gs\gs10.01.1\bin\gswin32c.exe" -q -dNOPAUSE -sDEVICE=pdfwrite -sOutputFile=F:\myFOLDER\%3.pdf F:\myFOLDER\%3.jpg -c quit

:end
echo
dir="F:\myFOLDER"
output_file="F:\myFOLDER\out.pdf"
pause

args=""

for file in `find ${dir} -name "*.JPG" -o -name "*.JPEG" -o -name "*.jpg" -o -name "*.jpeg" -type f`;
do
  args="${args} (${file}) viewJPEG showpage"
done


"C:\Program Files (x86)\gs\gs10.01.1\bin\gswin32c.exe" -q -dNOSAFER -sPAPERSIZE=letter -dNOPAUSE -dBATCH -sDEVICE=pdfwrite -sOutputFile=${output_file} "C:\Program Files (x86)\gs\gs10.01.1\lib\viewjpeg.ps" -c ${args}

我尝试使用互联网上的示例编辑代码,但我还不够了解。

batch-file cmd ghostscript
1个回答
0
投票

有许多网络片段无法确保它们适用于简单地剪切和粘贴的其他人。

所以首先 Ghostscript 只接受 pdf 作为输入和 jpg 作为输出而不是相反,除非你通过 Postscript 接受作为输入。

因此有一些限制,例如避免文件名包含空格字符等不安全字符,如果您必须运行可编程命令,则只能使用已知的本地文件名。

因此,您需要让 GhostScript 使用一个会短暂闪烁屏幕视图的查看器来呈现和打印 .jpg(您不应该避免这种需要)并将其转换为 PDF

通过使用 NOSAFER,它将以当前用户身份运行 Postscript,因此只在安全的本地文件上运行已知脚本。jpg

@echo off
set "GSBIN=C:\Program Files (x86)\gs\gs10.01.1\bin"
set "FOLDER=F:\myFOLDER"

cd /d "%folder%"
for %%f in (*.jpg) do %GSBIN%\gswin32 -sDEVICE=pdfwrite -dNOSAFER -o "%%~nf.pdf" "%GSBIN%\..\lib\viewjpeg.ps" -c "(""%%~f"") viewJPEG" -f
cd /d "%~dp0"

注意

上述 Windows 混合作为您的两个源的一部分将只允许每个 pdf 一个 jpg。它是有意使用 Windowed NOT Console (NOT gswin##C.exe) version
对于 Multiple JPG to PDF,ArtifeX 的姊妹产品 GhostPDL 或 MuTool 更适合该任务,因为它们都直接接受 JPG 输入。
要使用上述脚本生成多页 PDF,您需要编写第二行来进行合并。

© www.soinside.com 2019 - 2024. All rights reserved.