Как я могу извлечь диапазон страниц / часть PDF?

253

Есть ли у вас идея, как извлечь часть PDF-документа и сохранить его в формате PDF? В OS X это абсолютно тривиально, используя Preview. Я пробовал PDF-редактор и другие программы, но безрезультатно.

Мне нужна программа, в которой я выбираю часть, которую я хочу, а затем сохраняю ее как PDF с помощью простой команды типа CMD + N в OS X. Я хочу извлеченная часть должна быть сохранена в формате PDF, а не jpeg и т. д.

    
задан user72469 26.11.2012 в 03:06
источник

13 ответов

286

pdftk - полезный многоплатформенный инструмент для работы ( домашняя страница pdftk ).

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

вы передаете имя файла основного pdf, тогда вы указываете, что он включает только определенные страницы (12-15 в этом примере) и выводит их в новый файл.

    
ответ дан Martin H 17.04.2013 в 17:21
источник
163

Очень просто, используйте читатель PDF по умолчанию:

печатать как файл. вот и все!

затем

    
ответ дан Abdennour TOUMI 14.11.2013 в 11:25
источник
59

Диапазон страниц - сценарий Nautilus

Обзор

Я создал несколько более продвинутый скрипт, основанный на учебнике @ThiagoPonte. Его ключевыми особенностями являются

  • , что он основан на графическом интерфейсе,
  • совместим с пробелами в именах файлов,
  • и на основе трех разных бэкендов, которые могут сохранять все атрибуты исходного файла

Скриншот

код

#!/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=""
BACKENDSELECTION="^qpdf!ghostscript!cpdf"

# Functions

check_input(){
  if [[ -z "" ]]; then
    notify "Error: No input file selected."
    exit 1
  elif [[ ! "$(file -ib "")" == *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 ""
  notify-send -i application-pdf "PDFextract" ""
}

dialog_warning(){
  echo ""
  yad --center --image dialog-warning \
  --title "PDFExtract Warning" \
  --text "" \
  --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 ""
dialog_settings
extract_pages

Установка

Пожалуйста, следуйте общим инструкциям по установке сценариев Nautilus . Обязательно внимательно прочитайте заголовок сценария, так как это поможет прояснить установку и использование скрипта.

Частичные страницы - PDF Shuffler

Обзор

  

PDF-Shuffler - это небольшое приложение python-gtk, которое помогает пользователю объединять или разбивать PDF-документы, а также вращать, обрезать и изменять их страницы с помощью интерактивного и интуитивно понятного графического интерфейса. Это интерфейс для python-pyPdf.

Установка

sudo apt-get install pdfshuffler

Использование

PDF-Shuffler может обрезать и удалить отдельные страницы PDF. Вы можете использовать его для извлечения диапазона страниц из документа или даже частичных страниц с помощью функции обрезки:

Элементы страницы - Inkscape

Обзор

Inkscape - очень мощный редактор векторной графики с открытым исходным кодом. Он поддерживает широкий диапазон различных форматов, включая файлы PDF. Вы можете использовать его для извлечения, изменения и сохранения элементов страницы из файла PDF.

Установка

sudo apt-get install inkscape

Использование

1.) Откройте PDF-файл по своему выбору с помощью Inkscape. Появится диалоговое окно импорта. Выберите страницу, из которой вы хотите извлечь элементы. Оставьте остальные настройки такими, как они:

2.) В Inkscape нажмите и перетащите, чтобы выбрать элементы (ы), которые вы хотите извлечь:

3.) Инвертируйте выделение с помощью ! и удалите выделенный объект с помощью DELETE :

4.) Обрезать документ до остальных объектов, обратившись к диалоговому окну Document Properties с помощью CTRL + SHIFT + D и выберите «подходящий документ для изображения»:

5.) Сохраните документ как файл PDF из Файл - & gt; Сохранить как :

6.) Если в вашем обрезанном документе есть растровые / растровые изображения, вы можете установить их DPI в появившемся диалоговом окне:

7.) Если вы выполнили все шаги, вы создадите настоящий PDF-файл, который будет состоять только из объектов по вашему выбору:

    
ответ дан Glutanimate 17.04.2013 в 17:11
источник
27

Сохраните это как скрипт оболочки, например pdfextractor.sh:

#!/bin/bash
# this function uses 3 arguments:
#      is the first page of the range to extract
#      is the last page of the range to extract
#      is the input file
#     output file will be named "inputfile_pXX-pYY.pdf"
gs -sDEVICE=pdfwrite -dNOPAUSE -dBATCH -dSAFER \
   -dFirstPage= \
   -dLastPage= \
   -sOutputFile=${3%.pdf}_p-p.pdf \
   

Чтобы запустить тип:

./pdfextractor.sh 4 20 myfile.pdf

1) 4 ссылается на страницу, на которой он начнет новый pdf.

2) 20 ссылается на страницу, на которой он закончит pdf с помощью.

3) myfile.pdf - это файл pdf, который вы хотите извлечь.

Выходной файл будет myfile_p4_p20.pdf в том же каталоге исходного файла pdf.

Все это и более подробная информация здесь: Технический совет

    
ответ дан ThiagoPonte 16.04.2013 в 19:40
источник
22

QPDF отлично. Используйте его таким образом, чтобы извлечь страницы 1-10 из input.pdf и сохранить их как output.pdf .

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

Обратите внимание, что input.pdf записывается дважды.

Вы можете установить его, вызвав:

apt-get install qpdf

Или, перейдя в каталог приложений Ubuntu:

Это отличный инструмент для манипуляций PDF, который очень быстрый, имеет очень мало зависимостей. «Он может шифровать и линеаризовать файлы, раскрывать внутренности PDF-файла и делать много других операций, полезных конечным пользователям и разработчикам PDF».

Ссылка

    
ответ дан Ho1 09.09.2015 в 09:10
источник
17

Утилита командной строки называется 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
    
ответ дан jdmcbr 29.10.2014 в 19:17
источник
16

pdftk ( sudo 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
    
ответ дан Andrzej Pronobis 29.10.2014 в 19:23
источник
6

Вы пробовали PDF-файл?

Вы можете, например, извлечь страницы и сохранить их в формате pdf.

Описание:

PDF Mod - простой инструмент для изменения документов PDF. Он может вращать, извлекать, удалять и переупорядочивать страницы с помощью перетаскивания. Несколько документов можно комбинировать с помощью перетаскивания и перетаскивания. Вы также можете редактировать заголовок, тему, автора и ключевые слова PDF-документа с использованием PDF-мод.

Надеюсь, это будет полезно.

Regars.

    
ответ дан Roman Raguet 26.11.2012 в 03:17
источник
6

В любой системе установлено распределение TeX:

pdfjam <input file> <page ranges> -o <output file>

Например:

pdfjam original.pdf 5-10 -o out.pdf

См. Ссылка

    
ответ дан Ioannis Filippidis 01.09.2017 в 22:18
источник
5

Как оказалось, я могу сделать это с imagemagick . Если у вас его нет, установите его просто:

sudo apt-get install imagemagick

Примечание 1 : Я пробовал это с помощью одностраничного pdf (я учусь использовать imagemagick , поэтому я не хотел больше проблем, чем необходимо). Я не знаю, будет ли / работать с несколькими страницами, но вы можете извлечь одну страницу с pdftk :

pdftk A=myfile.pdf cat A1 output page1.pdf

, где вы указываете номер страницы, который нужно разделить (в приведенном выше примере A1 выбирает первую страницу).

Примечание 2 : Полученное изображение с использованием этой процедуры будет растром.

Откройте pdf с помощью команды display , которая является частью пакета imagemagick :

display file.pdf

Шахта выглядела так:


Нажмите на изображение, чтобы увидеть версию с полным разрешением

Теперь вы нажимаете на окно, и меню появляется в сторону. Там выберите Трансформация | <Сильный> Crop .

В главном окне вы можете выбрать область, которую хотите обрезать, просто перетащив указатель (классический выбор угла в угол).


Обратите внимание на ручной указатель вокруг изображения при выборе

Этот выбор можно уточнить, прежде чем переходить к следующему шагу.

Как только вы закончите, обратите внимание на маленький прямоугольник, который появляется в верхнем левом углу (см. изображение выше). Он показывает размеры выбранной области (например, 281x218 ) и вторую координаты первого угла (например, +256+215 ).

Запишите размеры выбранной области; вам понадобится его в момент сохранения обрезанного изображения.

Теперь, снова в меню pop (теперь это конкретное меню «crop»), нажмите кнопку Обрезка .

Наконец, как только вы удовлетворены результатами обрезки, нажмите на меню Файл | <Сильный> Сохранить

Перейдите в папку, в которой вы хотите сохранить обрезанный pdf, введите имя, нажмите кнопку Формат , в окне «Выбрать тип изображения» выберите PDF и нажмите кнопку Выбрать . В окне «Обзор и выбор файла» нажмите кнопку Сохранить .

Перед сохранением imagemagick попросит «выбрать геометрию страницы». Здесь вы вводите размеры вашего обрезанного изображения, используя простую букву «x» для разделения ширины и высоты.

Теперь вы можете сделать все это отлично из командной строки (команда convert с опцией -crop ) - конечно, это быстрее, но вам нужно будет заранее знать координаты изображения, которое вы хотите извлечь , Проверьте man convert и пример на своей веб-странице .

    
ответ дан carnendil 19.04.2013 в 02:54
источник
4

Я пытался сделать то же самое. Все, что вам нужно сделать, это:

  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
    

Пожалуйста, проверьте источник для получения дополнительной информации. .     

ответ дан theCode 03.05.2016 в 06:00
источник
2

PDF Split и Merge весьма полезны для этого и других операций манипулирования PDF.

Загрузить здесь

    
ответ дан To Do 01.06.2013 в 12:45
источник
0

Если вы хотите извлечь из своих PDF-файлов, вы можете использовать Ссылка . Это замечательный инструмент для извлечения заметок, ярлыков и изображений из PDF-файлов. Вы также можете посмотреть учебники на Youtube, набрав sumnotes .

Надеюсь, вам понравится!

    
ответ дан James 14.02.2014 в 18:34
источник

Ознакомьтесь с другими вопросами по меткам