如何提取PDF的某个页面范围/部分呢?

你有没有办法提取PDF文档的一部分并将其保存为PDF文件呢? 在OS X上,使用Preview绝对是轻而易举的。我尝试了PDF编辑器和其他程序,但都没有成功。
我想要一个程序,在其中我可以选择我想要的部分,然后通过像在OS X上使用CMD+N这样简单的命令将其保存为PDF文件。我希望提取的部分以PDF格式保存,而不是JPEG等其他格式。
22个回答

pdftk是一款适用于多平台的实用工具(pdftk主页)。

pdftk full-pdf.pdf cat 12-15 output outfile_p12-15.pdf

传递主PDF文件的文件名,然后告诉它只包括特定页面(在此示例中为12-15),并将其输出到一个新文件。

安装说明:

要安装快照版本(这是Scott Moser重新打包的旧版本PDFtk的非官方重新打包版本),请访问此链接或运行:

sudo snap install pdftk

另外,您可以通过运行Marc Vinyals的开源PDFtk到Java端口进行安装:
sudo apt install pdftk-java

另一个选择是PDFtk Server,可以从网站https://www.pdflabs.com/tools/pdftk-server/下载。这个版本个人使用是免费的,但不是开源的。

11如果我想提取1-10页、15页和17页,我该如何编写命令? - JACKY88
69@PatrickLi pdftk A=in.pdf cat A1-10 A15 A17 output out.pdf - m8mble
17请注意,在Ubuntu 18.04中无法使用pdftk(请参考https://askubuntu.com/questions/1028522/how-can-i-install-pdftk-in-ubuntu-18-04-bionic)。 - alkamid
21@alkamid 它是:sudo snap install pdftk - Qubix
42虽然pdftk确实是一个可以完成工作的工具,但我不建议使用它。这不是免费软件,而是一个笨重的共享软件。而且它需要JVM。一个更合理的工具是qpdf,正如另一个答案中所建议的 - leftaroundabout
6@leftaroundabout "PDFtk Server"(即命令行工具pdftk)是免费的,根据GPL许可证发布:https://www.pdflabs.com/docs/pdftk-license/ - Dario Seidl
1安装Java对于拆分PDF文件来说是没有意义的,我同意@leftaround的观点。 - Timo
1在Ubuntu 20.04中安装pdftk,我使用了sudo apt install pdftk-java命令。当我尝试在安装之前运行pdftk时,它会告诉我如何安装它。我相信它还说过这样也可以:snap install pdftk - Gabriel Staples
在Ubuntu 18.04上,它只能在我的主目录下工作,并且需要执行export LD_PRELOAD=/usr/lib/x86_64-linux-gnu/libgtk3-nocsd.so.0 - Hastur
这是我的答案,展示如何将分离的单个页面或页面范围分组。在Ubuntu 20.04中进行了测试:https://askubuntu.com/a/1318201/327339。 - Gabriel Staples
1@leftaroundabout我使用的是Ubuntu 20_04版本,无论在snap还是apt list中都没有安装Java,但是pdftk却能正常工作。这是怎么回事呢? - Timo
如果您使用字母"A"来表示页面,我认为它需要大写,因此小写的"a"是不起作用的。 - Timo
Ocular应该能够做到这一点,但我不明白如何操作。它没有提供任何相关菜单选项。 - Paul A.
1为了进一步澄清之前的讨论,pdftk 在2017年成为开源软件,因此现在/再次成为GNU/Linux发行版中的标准工具。"pdftk-java是PDFtk的Java版本[6],由Marc Vinyals开发并采用GPL许可证。初始发布日期为2017年12月30日。"(维基百科)。它的简单命令行名称为pdftk - CPBL
1这个答案在实际应用中的有限性非常明显,因为它无法适用于多个输入文件。以下是一个使用多个输入文件的示例:pdftk A=first.pdf B=second.pdf cat A1-7 B1-5 A8 output combined.pdf - Asclepius

非常简单。使用默认的PDF阅读器,选择“打印到文件”,就这样!

print menu

然后:

setting new PDF

请注意,通过这种方式,文本将不再可搜索,而是将所有文本转换为图像:这就是“打印”的工作原理。

39使用投影仪文件、地图和其他不符合打印机页面格式的文档会产生灾难性的结果。 - Luís de Sousa
1@LuísdeSousa 在“页面设置”下设置正确的格式即可。 - malisokan
25这可能导致生成的文件比原始文档要大得多。 - dat
1@dat: 此外,这还可以使文件的大小比原始文档小得多。 - Abdennour TOUMI
我不确定所有的PDF阅读器都是这样,但至少对于Firefox的内置PDF阅读器和Zathura来说,生成的文档是一个光栅化的PDF。这会导致你失去在文档中搜索文本的能力,并且可能意味着最终的PDF文件大小更大... - MP0
14所以它不会“提取”页面范围。它会从旧的PDF文件创建一个新的PDF文件,就像您使用高清打印机/扫描仪一样。 - sylvainulg
10适用于简单情况,但在带有高亮评论的文档中会产生不理想的结果:高亮部分变为100%不透明度并遮挡了文字。 - loved.by.Jesus
不保留OCR文字 - LondonRob
7也不保留超链接。 - leftaroundabout
1这将有效地导出为图像,基本上丢弃了所有元数据。 - HackerBoss
它将文本转化为图像。 - Archisman Panigrahi
它不适用于 qpdfview - Timo
不必要的双重处理会破坏原始文件,只保留内容。pdftk更好。 - moo
我的文本在使用文档浏览器(Evince)3.36.7版本打印到文件后仍然显示为文本。我使用的是Ubuntu 20.04操作系统。 - Ali Tou
我很好奇这个程序将新创建的文件输出到哪里。即使我已经阅读了官方文档,但似乎有些功能,比如选择文件保存位置,对我来说并不可用。我正在使用默认的文档查看器。 - Avocado_man
太棒了!简单明了!常识! - brett

QPDF很棒。使用它的方法从input.pdf中提取第1到10页,并将其保存为output.pdf

qpdf input.pdf --pages . 1-10 -- output.pdf

这将保留与该文件相关的所有元数据。
旧操作手册中:

如果您想提取infile.pdf中的1到5页,但希望其余的元数据被删除,您可以运行以下命令

qpdf --empty --pages infile.pdf 1-5 -- outfile.pdf

这里是一个链接到当前的文档,提供了更多页面选择的示例。


您可以通过调用它来安装:

sudo apt-get install qpdf

这是一个非常好用的PDF处理工具。它运行速度快,依赖性很少。来自QPDF的GitHub仓库

QPDF是一个命令行工具和C++库,可以对PDF文件进行内容保留的转换。它支持线性化、加密和许多其他功能。它还可以用于拆分和合并文件,创建PDF文件(但您必须自己提供所有内容),以及检查文件进行研究或分析。


2qpdf是一个强大的选项之一,因为它不会改变(降低图像质量等)PDF文件的内容。 - rbrito
4--pages 标志允许您从多个PDF中拼接页面。请注意,您可以在 --pages 选项中使用 . 替代输入文件来避免重复名称:qpdf --pages . 1-10 -- input.pdf output.pdf - bart
12在Ubuntu 18.04上似乎无法使用---pages .。也许这是最近添加的功能? - cgmb
7当我只提取几页时,为什么生成的PDF文件的数据大小与源PDF文件相同? - edison23
很好的CLI答案,正是我在寻找的,只是文件大小和pages选项的语法有些奇怪。TeXnologies无法帮助,因为我没有PDF源文件。GS可能能够帮助,因为我以前使用过它来合并PDF文档,以弥补Preview.app在我的Mac上的一些不足之处,但我可能需要先进行更多的研究。我在Homebrew中也没有看到适用于Mac的pdftk。啊,我现在看到下面有一个gs的答案了! - Pysis
6如果您想提取第1-8页和第53-70页,则使用命令 qpdf --pages . 1-8 . 53-70 -- input.pdf output.pdf - Andrew Krizhanovsky
12qpdf input.pdf --pages . 1 -- output.pdf对我来说无效(版本8.0.2)。以下是对我有效的方法:qpdf input.pdf --pages input.pdf 1 -- output.pdf - Kyle Gibson
4如果你希望每一页都是一个独立的PDF文件:qpdf --split-pages big.pdf part_%d.pdf这里有更多信息 - Matthias Braun
这确实是最好的方法!它是唯一一个给我提供了比较小的文件,而不是更大的文件,并且保留了所有的元数据(qpdf有相关选项-请参阅手册),同时所需的时间也非常短暂-对于qpdf只需要8秒,而gs则需要72秒,其他一些方法甚至需要300多秒。 - vstepaniuk
1@Ash --pages 命令需要自己的输入文件,并且 -- 用于结束 --pages 参数。 - Tarick Welling
第一个选项应该可以工作,但实际上并没有,它只会显示“.: read 1024 bytes”。第二个选项确实可以工作,但有点奇怪。 - Tarick Welling
很遗憾,这似乎没有更新目录,但除此之外,回答非常好! - Newbyte
qpdf在Windows的Cygwin上完美运行,非常感谢!https://cygwin.com/packages/summary/qpdf.html - Miron Veryanskiy
qpdf 手册:https://qpdf.readthedocs.io/en/stable/ - nsandersen
“--empty” 没有太大帮助。从一个大小为48MB、共47页的PDF中提取了一个36MB的页面,而且所有页面的大小都差不多。 - Dan Dascalescu

页面范围 - 鹦鹉螺脚本

概述

我根据@ThiagoPonte提供的教程创建了一个稍微高级一些的脚本。它的主要特点包括:

  • 基于图形用户界面(GUI);
  • 支持文件名中的空格;
  • 基于三个不同的后端,能够保留原始文件的所有属性。

截图

enter image description here

代码

#!/bin/bash
#
# TITLE:        PDFextract
#
# AUTHOR:       (c) 2013-2015 Glutanimate (https://github.com/Glutanimate)
#
# VERSION:      0.2
#
# LICENSE:      GNU GPL v3 (http://www.gnu.org/licenses/gpl.html)
# 
# OVERVIEW:     PDFextract is a simple PDF extraction script based on Ghostscript/qpdf/cpdf.
#               It provides a simple way to extract a page range from a PDF document and is meant
#               to be used as a file manager script/addon (e.g. Nautilus script).
#
# FEATURES:     - simple GUI based on YAD, an advanced Zenity fork.
#               - preserves _all_ attributes of your original PDF file and does not compress 
#                 embedded images further than they are.      
#               - can choose from three different backends: ghostscript, qpdf, cpdf
#
# DEPENDENCIES: ghostscript/qpdf/cpdf poppler-utils yad libnotify-bin
#                         
#               You need to install at least one of the three backends supported by this script.
#
#               - ghostscript, qpdf, poppler-utils, and libnotify-bin are available via 
#                 the standard Ubuntu repositories
#               - cpdf is a commercial CLI PDF toolkit that is free for personal use.
#                 It can be downloaded here: https://github.com/coherentgraphics/cpdf-binaries
#               - yad can be installed from the webupd8 PPA with the following command:
#                 sudo add-apt-repository ppa:webupd8team/y-ppa-manager && apt-get update && apt-get install yad
#
# NOTES:        Here is a quick comparison of the advantages and disadvantages of each backend:
#
#                               speed     metadata preservation     content preservation        license
#               ghostscript:     --               ++                         ++               open-source
#               cpdf:             -               ++                         ++               proprietary
#               qpdf:            ++                +                         ++               open-source
#
#               Results might vary depending on the document and the version of the tool in question.
#
# INSTALLATION: https://askubuntu.com/a/236415
#
# This script was inspired by Kurt Pfeifle's PDF extraction script 
# (http://www.linuxjournal.com/content/tech-tip-extract-pages-pdf)
#
# Originally posted on askubuntu
# (https://askubuntu.com/a/282453)

# Variables

DOCUMENT="$1"
BACKENDSELECTION="^qpdf!ghostscript!cpdf"

# Functions

check_input(){
  if [[ -z "$1" ]]; then
    notify "Error: No input file selected."
    exit 1
  elif [[ ! "$(file -ib "$1")" == *application/pdf* ]]; then
    notify "Error: Not a valid PDF file."
    exit 1
  fi
}

check_deps () {
  for i in "$@"; do
    type "$i" > /dev/null 2>&1 
    if [[ "$?" != "0" ]]; then
      MissingDeps+="$i"
    fi
  done
}

ghostscriptextract(){
  gs -dFirstPage="$STARTPAGE "-dLastPage="$STOPPAGE" -sOutputFile="$OUTFILE" -dSAFER -dNOPAUSE -dBATCH -dPDFSETTING=/default -sDEVICE=pdfwrite -dCompressFonts=true -c \
  ".setpdfwrite << /EncodeColorImages true /DownsampleMonoImages false /SubsetFonts true /ASCII85EncodePages false /DefaultRenderingIntent /Default /ColorConversionStrategy \
  /LeaveColorUnchanged /MonoImageDownsampleThreshold 1.5 /ColorACSImageDict << /VSamples [ 1 1 1 1 ] /HSamples [ 1 1 1 1 ] /QFactor 0.4 /Blend 1 >> /GrayACSImageDict \
  << /VSamples [ 1 1 1 1 ] /HSamples [ 1 1 1 1 ] /QFactor 0.4 /Blend 1 >> /PreserveOverprintSettings false /MonoImageResolution 300 /MonoImageFilter /FlateEncode \
  /GrayImageResolution 300 /LockDistillerParams false /EncodeGrayImages true /MaxSubsetPCT 100 /GrayImageDict << /VSamples [ 1 1 1 1 ] /HSamples [ 1 1 1 1 ] /QFactor \
  0.4 /Blend 1 >> /ColorImageFilter /FlateEncode /EmbedAllFonts true /UCRandBGInfo /Remove /AutoRotatePages /PageByPage /ColorImageResolution 300 /ColorImageDict << \
  /VSamples [ 1 1 1 1 ] /HSamples [ 1 1 1 1 ] /QFactor 0.4 /Blend 1 >> /CompatibilityLevel 1.7 /EncodeMonoImages true /GrayImageDownsampleThreshold 1.5 \
  /AutoFilterGrayImages false /GrayImageFilter /FlateEncode /DownsampleGrayImages false /AutoFilterColorImages false /DownsampleColorImages false /CompressPages true \
  /ColorImageDownsampleThreshold 1.5 /PreserveHalftoneInfo false >> setdistillerparams" -f "$DOCUMENT"
}

cpdfextract(){
  cpdf "$DOCUMENT" "$STARTPAGE-$STOPPAGE" -o "$OUTFILE"
}

qpdfextract(){
  qpdf --linearize "$DOCUMENT" --pages "$DOCUMENT" "$STARTPAGE-$STOPPAGE" -- "$OUTFILE"
  echo "$OUTFILE"
  return 0 # even benign qpdf warnings produce error codes, so we suppress them
}

notify(){
  echo "$1"
  notify-send -i application-pdf "PDFextract" "$1"
}

dialog_warning(){
  echo "$1"
  yad --center --image dialog-warning \
  --title "PDFExtract Warning" \
  --text "$1" \
  --button="Try again:0" \
  --button="Exit:1"

  [[ "$?" != "0" ]] && exit 0
}

dialog_settings(){
  PAGECOUNT=$(pdfinfo "$DOCUMENT" | grep Pages | sed 's/[^0-9]*//') #determine page count

  SETTINGS=($(\
      yad --form --width 300 --center \
          --window-icon application-pdf --image application-pdf \
          --separator=" " --title="PDFextract"\
          --text "Please choose the page range and backend"\
          --field="Start:NUM" 1[!1..$PAGECOUNT[!1]] --field="End:NUM" $PAGECOUNT[!1..$PAGECOUNT[!1]] \
          --field="Backend":CB "$BACKENDSELECTION" \
          --button="gtk-ok:0" --button="gtk-cancel:1"\
      ))

  SETTINGSRET="$?"

  [[ "$SETTINGSRET" != "0" ]] && exit 1

  STARTPAGE=$(printf %.0f ${SETTINGS[0]}) #round numbers and store array in variables
  STOPPAGE=$(printf %.0f ${SETTINGS[1]})
  BACKEND="${SETTINGS[2]}"
  EXTRACTOR="${BACKEND}extract"

  check_deps "$BACKEND"

  if [[ -n "$MissingDeps" ]]; then
    dialog_warning "Error, missing dependency: $MissingDeps"
    unset MissingDeps
    dialog_settings
    return
  fi

  if [[ "$STARTPAGE" -gt "$STOPPAGE" ]]; then 
    dialog_warning "<b>   Start page higher than stop page.   </b>"
    dialog_settings
    return
  fi

  OUTFILE="${DOCUMENT%.pdf} (p${STARTPAGE}-p${STOPPAGE}).pdf"
}

extract_pages(){
  $EXTRACTOR
  EXTRACTORRET="$?"
  if [[ "$EXTRACTORRET" = "0" ]]; then
    notify "Pages $STARTPAGE to $STOPPAGE succesfully extracted."
  else
    notify "There has been an error. Please check the CLI output."
  fi
}


# Main

check_input "$1"
dialog_settings
extract_pages

安装

请按照Nautilus脚本的通用安装说明进行操作。务必仔细阅读脚本头部,以便更好地理解脚本的安装和使用方法。


部分页面 - PDF整理器


概述
PDF Arranger 是一个小型的 python-gtk 应用程序,帮助用户使用交互和直观的图形界面合并或拆分 PDF 文档,并旋转、裁剪和重新排列它们的页面。它是 python-pyPdf 的前端。
安装
sudo apt-get install pdfshuffler

使用方法

PDF Arranger可以裁剪和删除单个PDF页面。您可以使用它从文档中提取一个页面范围,甚至使用裁剪功能提取部分页面:

enter image description here


页面元素 - Inkscape

概述

Inkscape 是一个非常强大的开源矢量图形编辑器。它支持多种不同的格式,包括 PDF 文件。您可以使用它来提取、修改和保存 PDF 文件中的页面元素。

安装

sudo apt-get install inkscape

使用方法

1.) 使用Inkscape打开您选择的PDF文件。将出现一个导入对话框。选择要从中提取元素的页面。将其他设置保持不变:

enter image description here

2.) 在Inkscape中,点击并拖动以选择您想要提取的元素。

enter image description here

3.) 使用!反选,使用DELETE删除所选对象。

enter image description here

4.) 通过使用CTRL+SHIFT+D访问文档属性对话框并选择“适应图像”功能,将文档裁剪为剩余的对象。

enter image description here

5.) 从“文件”-->“另存为”对话框中将文档保存为PDF文件。

6.) 如果您的裁剪文档中有位图/光栅图像,您可以在接下来出现的对话框中设置它们的DPI。

enter image description here

7.) 如果你按照所有的步骤进行操作,你将会得到一个真正的PDF文件,其中只包含你选择的对象。

enter image description here


1非常努力。谢谢!我明白它不允许选择页面的一部分,只能选择整个页面。我是对的吗? - carnendil
2@carnendil:是的,完全正确。我不认为ghostscript有这个能力。但是可能有其他解决方案可以通过编程来实现。目前,我已经编辑了我的答案,提供了一种替代(有点巧妙)的使用PDF-shuffler的解决方案。 - Glutanimate
3如果你想提取PDF页面的一部分,pdfshuffler是不够用的。原始PDF页面的数据仍然保留在文件中。如果你想从PDF文件中删除敏感数据,请不要使用这种方法。 - Rob W
5pdfshuffler现在被称为pdfarranger - amoe
刚刚尝试了第一个选项“页面范围 - 鹦鹉螺脚本”,在Ubuntu 20.04上完全可行,做得很好! - Vlax
2我希望你能把这三个答案分开发布,这样我们就可以分别评论和点赞每一个答案。 - Flimm

将此保存为一个shell脚本,例如pdfextractor.sh:
#!/bin/bash
# this function uses 3 arguments:
#     $1 is the first page of the range to extract
#     $2 is the last page of the range to extract
#     $3 is the input file
#     output file will be named "inputfile_pXX-pYY.pdf"
gs -sDEVICE=pdfwrite -dNOPAUSE -dBATCH -dSAFER \
   -dFirstPage="${1}" \
   -dLastPage="${2}" \
   -sOutputFile="${3%.pdf}_p${1}-p${2}.pdf" \
   "${3}"

运行方式:输入以下命令:
./pdfextractor.sh 4 20 myfile.pdf
  1. 4 指的是新 PDF 将从该页开始。

  2. 20 指的是新 PDF 将以该页结束。

  3. myfile.pdf 是您想要提取部分的 PDF 文件。

输出文件将命名为 myfile_p4_p20.pdf,保存在原始 PDF 文件所在的目录中。

更多信息请参阅:技术提示


30让我们保持简单:gs -sDEVICE=pdfwrite -dNOPAUSE -dBATCH -dFirstPage=1 -dLastPage=10 -sOutputFile=output.pdf input.pdf - Ho1
1@Ho1,请将其写成一个新的回答,这真的很有帮助! - Joshua Salazar
1这是最方便的解决方案,因为Ghostscript几乎可以在任何地方安装。 - Calimo
1gs比qpdf更加熟悉,文件大小也要小得多!另外,Homebrew在我的Mac上也没有提供pdftk,并且我听说它的速度也很慢。 - Pysis
太好了,谢谢! - Smeterlink


1这是唯一一个对我有效的。 - abc
2彻底搞乱了我的景观PDF。 - Turion
这在我处理横向PDF文件时曾经很好用,但现在出了问题。 - Kevin
保持简单,但灵活,您还可以执行以下操作:pdfjam original.pdf 2-pdfjam original.pdf -4,具体取决于您是要从第二页到最后一页,还是仅到第四页。它将根据输入参数(所请求的页面)自动命名输出。 - Cyrille
2pdfjam --landscape ... 解决了横向排列的问题。 - Niklas Mertsch
1我尝试过的唯一一个接受多个范围的解决方案是 pdfjam original.pdf 2-4,43,49-64 -o selection.pdf - TheMechanic

有一个命令行实用程序叫做 pdfseparate
从文档中可以得知:
pdfseparate sample.pdf sample-%d.pdf

extracts  all pages from sample.pdf, if i.e. sample.pdf has 3 pages, it
   produces

sample-1.pdf, sample-2.pdf, sample-3.pdf

或者,要选择文件sample.pdf中的单个页面(在这种情况下,是第一页):
pdfseparate -f 1 -l 1 sample.pdf sample-1.pdf

3真是个很棒的工具!比pdftk快多了。 - Anwar
4好的,但是它只限于一页,如果你需要更多的内容,将会得到单独的页面。 - Ho1
3当然,尽管可以使用pdfunite命令来合并成一个单一的文档。 - jdmcbr
4如果你有一个庞大的文件并且需要拆分所有页面,这个工具非常快速和实用。 - MEDVIS
1这不是最好的方法。使用pdfseparate+pdfunite处理页面范围花费了3分15秒(其中gs花费了1分11秒,而qpdf只花费了0分8秒),并且还创建了一个更大的文件(因为每个单独页面都有元数据)- 62 MB 对比原始的37 MB(针对530页的第81页到末尾),相比之下,gs为50 MB,而qpdf为33 MB...请使用qpdf代替! - vstepaniuk
我不知道这个工具是如何工作的,但是从一个有46页的48MB PDF文件中,它创建了46个大约35MB大小的PDF文件! - Dan Dascalescu

pdftksudo apt-get install pdftk)是一个非常好用的命令行工具,用于PDF文件的操作。以下是一些pdftk可以做的示例:

   Collate scanned pages
     pdftk A=even.pdf B=odd.pdf shuffle A B output collated.pdf
     or if odd.pdf is in reverse order:
     pdftk A=even.pdf B=odd.pdf shuffle A Bend-1 output collated.pdf

   Join in1.pdf and in2.pdf into a new PDF, out1.pdf
     pdftk in1.pdf in2.pdf cat output out1.pdf
     or (using handles):
     pdftk A=in1.pdf B=in2.pdf cat A B output out1.pdf
     or (using wildcards):
     pdftk *.pdf cat output combined.pdf

   Remove page 13 from in1.pdf to create out1.pdf
     pdftk in.pdf cat 1-12 14-end output out1.pdf
     or:
     pdftk A=in1.pdf cat A1-12 A14-end output out1.pdf

   Burst a single PDF document into pages and dump its data to
   doc_data.txt
     pdftk in.pdf burst

   Rotate the first PDF page to 90 degrees clockwise
     pdftk in.pdf cat 1east 2-end output out.pdf

   Rotate an entire PDF document to 180 degrees
     pdftk in.pdf cat 1-endsouth output out.pdf

在你的情况下,我会这样做:
     pdftk A=input.pdf cat A<page_range> output output.pdf

1软件包 'pdftk' 没有可安装的候选项 - abc
这条评论(获得40多个赞)不推荐使用pdftk - Dan Dascalescu

我也在尝试做同样的事情。你所需做的只是:
  1. 安装 pdftk:

    sudo apt-get install pdftk
    
  2. 如果你想提取随机页面:

    pdftk myoldfile.pdf cat 1 2 4 5 output mynewfile.pdf
    
  3. 如果你想提取一个范围:

    pdftk myoldfile.pdf cat 1-2 4-5 output mynewfile.pdf
    
请查看源链接以获取更多信息。

我认为这个答案最好,因为它展示了如何输入多个范围。 - Roman Luštrik
这条评论(获得40多个赞)不推荐使用pdftk - Dan Dascalescu

你试过PDF Mod吗?
例如,你可以提取页面并将它们保存为PDF。
描述:
PDF Mod是一个简单的工具,用于修改PDF文档。它可以通过拖放来旋转、提取、删除和重新排序页面。通过拖放,可以合并多个文档。你还可以使用PDF Mod编辑PDF文档的标题、主题、作者和关键词。
sudo apt install pdfmod

Screenshot

希望这对你有所帮助。
祝好。

是的,我确实尝试过,但它不允许我保存页面的一部分,例如一个图表为PDF格式...除非我没看到这个选项。它只允许我从文档中提取整个页面,但这不是我想要的。 - user72469
我经常使用它,是个很棒的工具!但是我有一个大约有170页的文档,pdfmod无法处理。 - loved.by.Jesus
哇。这真是出乎意料的流畅。我把我的512页纸质书(50MiB)扔进去,它居然很快速。用户界面简单易用。对于像我这样的命令行界面爱好者来说,需要一定程度的图形界面才能说服我,但这个软件做到了! - sehe
PDF Mod在Kubuntu 18上有一些bug运行。 - Joshua Salazar
无法打开由TurboTax生成的PDF。 - Dan Dascalescu