god*_*a_g 3 pdf ghostscript ps
我正在尝试使用 ghostscript 执行以下操作:
将一个多页 PDF 文件(约 3,000 页,200mb 文件)转换为:
PDF 的每页一个文件,并将每个(页面/文件)转换为 EPS 或 PS(后脚本(最好))。
例子:
hello.pdf (10 pages)
Run Code Online (Sandbox Code Playgroud)
会产生:
hello1.ps (page 1 out of 10)
hello2.ps
hello3.ps
...
hello10.ps
Run Code Online (Sandbox Code Playgroud)
我怎样才能做到这一点?我已经尝试了4天,无法弄清楚。
我有一个我试过的脚本(不起作用):
Note: Windows(7) user here.
gs -sDEVICE=epswrite -o documentname-%.eps documentname.pdf
Run Code Online (Sandbox Code Playgroud)
我也不知道如何导航到我的文件所在的目录(也无法弄清楚)。如果可以,请告诉我怎么做。
非常感谢你。
首先,我使用 Linux,而不是 Windows,所以我无法对此进行测试,但我认为这样的事情是正确的。(我几乎很想告诉你为此在虚拟机中安装 Linux,因为对于成熟的操作系统来说,这样的事情要容易得多,但无论如何,这是我使用 Windows 的最佳选择。)
首先,打开命令/Dos 提示符。
要导航到文件所在的文件夹,请使用 CD 命令,后跟用引号引起来的文件的完整路径。例如,如果它们在“C:\Users\Somebody\Documents and Settings\My Documents\PDFs\”中,则键入:
cd "C:\Users\Somebody\Documents and Settings\My Documents\PDFs\"
我认为另一种方法是简单地在与 PDF 相同的目录中创建一个批处理文件,然后从那里运行批处理文件。
好的,现在我认为您必须使用 Ghostscript 可执行文件的完整路径,您必须自己找到它。我将假设它是“C:\Program Files (x86)\gs\gs9.00\bin\gswin32c.exe”,但您需要在自己的计算机上仔细检查。如果您使用的是不同版本的 ghostscript 或 32 位版本的 Windows 7,它将位于其他地方。还要确保您使用 gswin32c.exe 而不是 gswin32.exe,这是不同的。
现在找出这个 PDF 中有多少页。我会知道如何在 Linux 中使用命令来做到这一点,但我在 Windows 中一无所知。我假设它是3002。
现在在命令提示符下输入此命令(全部为一行):
FOR \L %G IN (1,1,3002) DO "C:\Program Files (x86)\gs\gs9.00\bin\gswin32c.exe" -dBATCH -dSAFER -dNOPAUSE -dFirstPage=%G -dLastPage=%G -sDEVICE=pswrite -o hello%G.ps hello.pdf
这是我最好的猜测。但希望真正使用 Windows 的人可以确认这是有效的。
对于epsfiles而不是改变-sDEVICE#pswrite,以-sDEVICE=epswrite和变化hello%G.ps来hello%G.eps。
如果您使用的是批处理文件,请在任何地方使用 %%G 而不是 %G,将 ='s 更改为 #'s。
如果将“hello.pdf”更改为带有空格的内容,请使用引号“hello world.pdf”。与“hello%G.ps”相同。
在 GNU/Linux(或 Mac OS X)上,相应的命令是:
for G in {1..3002} ; do gs -dSAFER -dBATCH -dNOPAUSE -dFirstPage=$G -dLastPage=$G -sDEVICE=pswrite -o "hello$G.ps" "hello.pdf" ; done
要让它自动计算要执行的页数,如果您安装了 seq 和 poppler 实用程序(我相信这是在 Ubuntu 上默认提供的),您可以使用:
for G in $(seq 1 $(pdfinfo academicregs.pdf | sed -n 's/Pages:[^0-9]*\([0-9]*\).*/\1/p')) ; do gs -dSAFER -dBATCH -dNOPAUSE -dFirstPage=$G -dLastPage=$G -sDEVICE=pswrite -o "hello$G.ps" "hello.pdf" ; done
那些我测试过的,他们工作。
frabjous 的命令有效,但使事情变得比像这样的简单任务所需的更复杂。
他为 PDF 的每一页运行一个单独的 Ghostscript 命令,通过-dFirstPage=... -dLastPage=...参数只选择想要的 PDF 页面。(他的 Windows 版本也有一点错别字:应该是for /L %G in...-- 而不是for \L %G in...)
这也是不必要的慢,因为它为 3002 页的 PDF 运行 3002 个命令。
您可以在单个 Ghostscript 命令传递中实现相同的目标,而无需 3002 次循环。在 Windows 上:
gswin32c.exe ^
-o hello%04d.eps ^
-sDEVICE=epswrite ^
hello.pdf
Run Code Online (Sandbox Code Playgroud)
在 Linux 或 Mac OS X 上:
gs \
-o hello%04d.eps \
-sDEVICE=epswrite \
hello.pdf
Run Code Online (Sandbox Code Playgroud)
%04d输出名称中的部分将为输出 EPS 文件创建 4 位(页面)编号,用前导零填充未使用的数字(这不是您想要的输出示例使用的)。
| 归档时间: |
|
| 查看次数: |
8808 次 |
| 最近记录: |