我知道我以前做过这个,所以我确定这是可能的,我只是忘记了怎么做。有一种方法可以告诉 convert 抓取 PDF 的特定页面,我想将该页面的格式保留为 PDF。
War*_*ung 28
您可以使用下标符号convert(1)
“索引”到 PDF 中:
$ convert source.pdf[1] dest.pdf
Run Code Online (Sandbox Code Playgroud)
索引值取决于 PDF 导出器如何为页面编号。在此处对文件的测试中,数字似乎是从零开始的,因此上面的示例为您提供了文档中的第二页。我在网上看到过一些例子,它们显示字母索引,因为显然 PDF 创建者以这种方式“编号”了该文档中的页面。
不幸的是,这并没有给出很好的结果,因为 ImageMagick 假设一切都是基于像素的,因此光栅化矢量图像,例如典型 PDF 中的排版。
一个更好的工具是Ghostscript,您可能已经安装了它:
$ gs -dNOPAUSE -dBATCH -dFirstPage=2 -dLastPage=2 -sDEVICE=pdfwrite \
-sOutputFile=dest.pdf -f src.pdf
Run Code Online (Sandbox Code Playgroud)
这将原封不动地传递 PDF 数据,因为 Ghostscript 比 ImageMagick 更深地理解 PDF(PostScript 衍生品)。
Gil*_*il' 26
ImageMagick 是位图图像的工具,大多数 PDF 不是。如果使用它,它会将数据栅格化,这通常是不可取的。
Pdftk可以从 PDF 文件中提取一页或多页。
pdftk A=input.pdf cat A42 A43 output pages_42_43.pdf
Run Code Online (Sandbox Code Playgroud)
如果您使用PDFLaTeX安装了 LaTeX,则可以使用pdfpages。pdfpages 有一个外壳包装器,pdfjam。
pdfjam -o pages_42_43.pdf input.pdf 42,43
Run Code Online (Sandbox Code Playgroud)
另一种可能性(这里有点矫枉过正,但对于比一页更复杂的需求有用)是带有PyPdf库的Python 。
#!/usr/bin/env python
import copy, sys
from pyPdf import PdfFileWriter, PdfFileReader
input = PdfFileReader(sys.stdin)
output = PdfFileWriter()
for i in [42, 43]:
output.addPage(input.getPage(i))
output.write(sys.stdout)
Run Code Online (Sandbox Code Playgroud)