我知道我以前做过这个,所以我确信这是可能的,我只是忘记了怎么做。有一种方法可以告诉 Convert 抓取 PDF 的特定页面,我想将该页面的格式保留为 PDF。
答案1
您可以使用下标符号来convert(1)
“索引”到 PDF:
$ convert source.pdf[1] dest.pdf
索引值取决于 PDF 导出器对页面进行编号的方式。在此处对文件的测试中,数字似乎是从零开始的,因此上面的示例为您提供了第二文档中的页面。我在网上看到过一些例子,它们显示字母索引,因为显然 PDF 创建者以这种方式“编号”该文档中的页面。
不幸的是,这并没有给出很好的结果,因为 ImageMagick 假设一切都是基于像素的,因此对矢量图像进行光栅化,例如典型 PDF 中的版式。
更好的工作工具是鬼脚本,您可能已经安装了:
$ gs -dNOPAUSE -dBATCH -dFirstPage=2 -dLastPage=2 -sDEVICE=pdfwrite \
-sOutputFile=dest.pdf -f src.pdf
这会原封不动地传递 PDF 数据,因为 Ghostscript 对 PDF(PostScript 衍生品)的理解比 ImageMagick 更深。
答案2
ImageMagick 是一个用于位图图像的工具,而大多数 PDF 都不是。如果你使用它,它会光栅化数据,这通常是不可取的。
pdf文件可以从 PDF 文件中提取一页或多页。
pdftk A=input.pdf cat A42 A43 output pages_42_43.pdf
如果您安装了带有 PDFLaTeX 的 LaTeX,则可以使用pdf页面. pdfpages 有一个外壳包装器,pdfjam。
pdfjam -o pages_42_43.pdf input.pdf 42,43
另一种可能性(这里有点过头了,但对于比一页更复杂的需求很有用)是Pythonpypdf图书馆。
#!/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)
答案3
此问答来自 2011 年。截至 2021 年,我认为为此目的最稳定且维护良好的选项是 qpdf:
qpdf input.pdf --pages 。 12 -- 输出.pdf
页码似乎从 1 开始,但我还没有检查当 pdf 文件具有页码元数据时这是如何工作的。
我使用 pdftk 做了很多年,但 pdftk 的设计很差,并且依赖于过时的库版本。