我知道我以前做过,所以我敢肯定,我只是忘记怎么做。有一种方法可以告诉convert抓取PDF的特定页面,而我想将该页面的格式保留为PDF。
我知道我以前做过,所以我敢肯定,我只是忘记怎么做。有一种方法可以告诉convert抓取PDF的特定页面,而我想将该页面的格式保留为PDF。
Answers:
ImageMagick是用于位图图像的工具,而大多数PDF都不是。如果使用它,它将栅格化数据,这通常是不希望的。
Pdftk可以从PDF文件提取一页或多页。
pdftk A=input.pdf cat A42 A43 output pages_42_43.pdf
如果您使用PDFLaTeX安装了LaTeX,则可以使用pdfpages。有一个用于pdfpages的外壳包装pdfjam。
pdfjam -o pages_42_43.pdf input.pdf 42,43
另一种可能是Python(带有PyPdf库)(此处过大,但对于要求复杂的一页有用)。
#!/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)
pdfjam
就像一个护身符,并且已经与我的LaTeX发行版一起安装。这是非常容易使用。
pdftk
因此它似乎并不能简单地提取页面。否则结果很好。
您可以使用下标符号convert(1)
来“索引” PDF:
$ convert source.pdf[1] dest.pdf
索引值取决于PDF导出器对页面进行编号的方式。在此处的文件测试中,数字似乎是从零开始的,因此上述示例使您获得文档的第二页。我在网上看到过一些示例,它们显示字母索引,因为显然PDF创建者以这种方式“编号”了该文档中的页面。
不幸的是,这不会产生很好的结果,因为ImageMagick假定所有内容都是基于像素的,因此光栅化了矢量图像,例如典型PDF的版式。
一个更好的工作工具是Ghostscript,您可能已经安装了它:
$ gs -dNOPAUSE -dBATCH -dFirstPage=2 -dLastPage=2 -sDEVICE=pdfwrite \
-sOutputFile=dest.pdf -f src.pdf
由于Ghostscript对PDF(PostScript派生类)的理解比ImageMagick更加深入,因此这使PDF数据保持不变。
-density 300
是最佳选择。任何更大的文件,您都将创建巨大的临时文件-无论如何,您可能都会缩小到缩略图的大小
source.pdf[3-6]
pdftk
。您将要使用它。