web-dev-qa-db-ja.com

ページ範囲/ PDFの一部を抽出するにはどうすればよいですか?

PDF文書の一部を抽出してPDFとして保存する方法はありますか? OS Xでは、プレビューを使用することで簡単に実行できます。 PDFエディターおよびその他のプログラムを試しましたが、役に立ちませんでした。

必要な部分を選択し、次のような簡単なコマンドでpdfとして保存するプログラムが必要です CMD+N OS Xで。抽出した部分をjpegなどではなく、PDF形式で保存したい。

410
user72469

pdftkは、ジョブに役立つマルチプラットフォームツールです( pdftkホームページ )。

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

メインpdfのファイル名を渡し、特定のページ(この例では12〜15)のみを含めるように指示して、新しいファイルに出力します。

465
Martin H

非常にシンプル、デフォルトのPDFリーダーを使用:

ファイルとして印刷します。それだ! print menu

その後

setting new PDF

241
Abdennour TOUMI

ページ範囲-Nautilusスクリプト


概要

リンク先のチュートリアル@ThiagoPonteに基づいて、もう少し高度なスクリプトを作成しました。その主な機能は

  • gUIベースであること、
  • ファイル名のスペースとの互換性、
  • 元のファイルのすべての属性を保持できる3つの異なるバックエンドに基づいています

スクリーンショット

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 Shuffler


概要

PDF-Shufflerは小さなpython-gtkアプリケーションです。これは、ユーザーがインタラクティブで直感的なグラフィカルインターフェイスを使用して、pdfドキュメントをマージまたは分割し、ページを回転、トリミング、および再配置するのに役立ちます。これは、python-pyPdfのフロントエンドです。

インストール

Sudo apt-get install pdfshuffler

使用法

PDF-Shufflerは、単一の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

。)選択を反転します ! 選択したオブジェクトを削除します DELETE

enter image description here

4。)Document Propertiesダイアログにアクセスして、ドキュメントを残りのオブジェクトに切り抜く CTRL+SHIFT+D 「ドキュメントを画像に合わせる」を選択します。

enter image description here

5。)ドキュメントをFileからPDFファイルとして保存します(---)->Save as ダイアログ:

6。)トリミングされたドキュメントにビットマップ/ラスターイメージがある場合、次に表示されるダイアログでDPIを設定できます。

enter image description here

7。)すべてのステップを実行すると、選択したオブジェクトのみで構成される真のPDFファイルが作成されます。

enter image description here

79
Glutanimate

QPDF は素晴らしい。この方法を使用して、input.pdfから1〜10ページを抽出し、output.pdfとして保存します。

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

input.pdfは2回書き込まれることに注意してください。

以下を呼び出してインストールできます。

Sudo apt-get install qpdf

PDF操作に最適なツールであり、非常に高速で、依存関係はほとんどありません。 「ファイルの暗号化と線形化、PDFファイルの内部の公開、およびエンドユーザーとPDF開発者に役立つその他の多くの操作を実行できます。」

http://sourceforge.net/projects/qpdf/

62
Ho1

これを、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ファイルです。

出力は、元のPDFファイルと同じディレクトリにあるmyfile_p4_p20.pdfになります。

ここにすべての詳細と詳細情報があります: Tech Tip

43
ThiagoPonte

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
27
jdmcbr

TeXディストリビューションがインストールされているシステムの場合:

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

例えば:

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

https://tex.stackexchange.com/a/79626/8666 を参照してください

24

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
19

私も同じことをしようとしていました。あなたがしなければならないのは:

  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
    

詳細については、 ソース を確認してください。

8
theCode

PDF Modを試しましたか?

たとえば、ページを抽出して、pdfとして保存できます。

説明:

PDF Modは、PDFドキュメントを変更するためのシンプルなツールです。回転、抽出、削除できます
ドラッグアンドドロップでページを並べ替えます。複数のドキュメントをドラッグで結合できます
ドロップします。 PDFのタイトル、件名、著者、およびキーワードを編集することもできます
PDF Modを使用したドキュメント

Install via the software center

これが役に立つことを願っています。

レガールズ。

7
Roman Raguet

結局のところ、私はimagemagickでそれを行うことができます。お持ちでない場合は、次のコマンドで簡単にインストールできます。

Sudo apt-get install imagemagick

注1:1ページのpdfでこれを試しました(imagemagickを使用することを学んでいるので、必要以上に手間がかかる)。複数のページで機能するかどうか/どのように機能するかはわかりませんが、pdftkを使用して関心のあるページを1つ抽出できます。

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

分割するページ番号を指定します(上記の例では、A1は最初のページを選択します)。

注2:この手順を使用して得られる画像はラスターになります。


displayスイートの一部であるimagemagickコマンドでPDFを開きます。

display file.pdf

私はこのように見えました:

imagemagick display of a pdf
画像をクリックしてフル解像度バージョンをご覧ください

ここでウィンドウをクリックすると、メニューが横に表示されます。そこで、Transform|を選択します。 クロップ

imagemagick transform>crop menu

メインウィンドウに戻り、ポインタをドラッグするだけで、トリミングする領域を選択できます(クラシックコーナーからコーナーへの選択)。

selection of area to crop
選択中に画像の周りの手の形のポインタに注意してください

次の手順に進む前に、この選択を調整できます。

完了したら、左上隅に表示される小さな長方形に注意してください(上の画像を参照)。最初に選択された領域の寸法(例:281x218)と、2番目の最初の角の座標(例:+256+215)が表示されます。

選択した領域の寸法を書き留めます。トリミングした画像を保存するときに必要になります。

次に、ポップメニュー(現在は特定の "クロップ"メニュー)に戻り、ボタンCropをクリックします。

imagemagick crop menu

最後に、トリミングの結果に満足したら、メニューをクリックしますFile| 保存

トリミングしたpdfを保存するフォルダーに移動し、名前を入力して、ボタンFormatをクリックし、「Select image format type」ウィンドウで選択しますPDFボタンをクリックしますSelect。 [ファイルの参照と選択]ウィンドウに戻り、ボタンSaveをクリックします。

imagemagick save as pdf

保存する前に、imagemagickは「ページジオメトリの選択」を要求します。ここでは、幅と高さを区別するために単純な文字「x」を使用して、トリミングした画像の寸法を入力します。

imagemagick select page geometry

これで、これらすべてをコマンドラインから完全に実行できます(コマンドはconvertオプション-cropで)-確かに高速ですが、目的の画像の座標を事前に知る必要がありますエキス。 man convertおよび Webページの例 を確認してください。

6
carnendil

元のユーザーがコマンドラインツールではなく対話型ツールを要求したとき:簡単な解決策は、PDFビューアー(Kubuntu、evince、またはUbuntuのFirefoxでもOK)を使用して、標準の印刷を使用することですダイアログで「PDFファイルに印刷」を選択し、拡張設定ダイアログで「印刷」するページを選択します。このバリアントには、元のPDF(回転したページ、フォームなど)のギミックが失われる可能性があるため、いくつかの欠点がありますが、ほとんどの単純なPDFでは簡単に機能します。

2
Kai Petzke

PDF Split and Mergeは、この操作およびその他のPDF操作操作に非常に役立ちます。

こちら からダウンロード

2
To Do

PDFから抽出する場合は、 http://www.sumnotes.net を使用できます。 PDFからメモ、ハイライト、画像を抽出するためのすばらしいツールです。 sumnotesと入力して、Youtubeでチュートリアルを視聴することもできます。

楽しんでください!

0
James