コンテンツにスキップ

PDF、PS および DjVu

提供: ArchWiki
(Ghostscriptから転送)

この記事は、PDF, PostScript (PS), DjVu ('déjà vu'), XPS ファイルを閲覧、編集、変換するソフトウェアを扱います。

エンジン

  • Poppler — Xpdf をベースにした PDF 描画ライブラリ。Poppler で CJK(中国語、日本語、韓国語)に対応するには、poppler-data をインストールします。
https://poppler.freedesktop.org/ || poppler
  • Mupdf — MuPDF は、ソフトウェアライブラリ、コマンドラインツール、ビューアから構成される、軽量のPDF、XPS、EPUBビューアです。
https://mupdf.com/ || libmupdf
  • libspectre — PostScript 文書を描画するための小さなライブラリ。
https://www.freedesktop.org/wiki/Software/libspectre || libspectre
  • Ghostscript — PostScript と PDF のためのインタープリタです。gs(1) コマンドラインインターフェイスを提供します。(online) を参照してください。また、ps2pdf や pdf2ps などの多くのラッパースクリプトも含まれています。
https://ghostscript.com/ || ghostscript
  • DjVuLibre — DjVu ドキュメントの作成、操作、表示を行うスイートです。
http://djvu.sourceforge.net/ || djvulibre
  • libgxps — XPS ドキュメントを処理し、レンダリングするための GObject ベースのライブラリです。
https://wiki.gnome.org/Projects/libgxps || libgxps

ビューア

フレームバッファ

  • fbgs — linux フレームバッファ・コンソール用のプアマンズ PostScript/pdf ビューアです。
https://www.kraxel.org/blog/linux/fbida/ || fbida
  • fbpdf — MuPDF ベースの小さなフレームバッファ PDF および DjVu ビューア,Vim キーバインド付きで C で書かれています。
https://repo.or.cz/w/fbpdf.git || fbpdf-gitAUR
  • jfbview — フレームバッファ型 PDF・画像ビューア。Vim ライクなコントロール、zoom-to-fit、TOC(アウトライン)ビュー、高速なマルチスレッドレンダリングなどの機能があります。
https://github.com/jichu4n/jfbview || jfbviewAUR

グラフィカル

ノート ウェブブラウザの中には、PDF.jsなどでPDFファイルを表示できるものがあります。
  • Adobe Reader — Adobeが提供するプロプライエタリの PDF ファイルビューア。Linuxでは廃止されました。
https://www.adobe.com/products/reader.html || acroreadAUR
  • apvlv — Lightweight document viewer with Vim keybindings. Supports PDF, DjVu, EPUB, HTML and TXT.
https://naihe2010.github.io/apvlv/ || apvlvAUR
  • Atril — Simple multi-page document viewer for MATE. Supports DjVu, DVI, EPS, EPUB, PDF, PostScript, TIFF, XPS and Comicbook.
https://github.com/mate-desktop/atril || atril
  • CorePDF — Simple lightweight PDF viewer based on Qt and poppler. Part of C-Suite.
https://cubocore.org/ || corepdfAUR
  • Deepin Document Viewer — A simple PDF and DjVu reader, supporting bookmarks, highlights and annotations.
https://github.com/linuxdeepin/deepin-reader || deepin-reader
  • DjView — Viewer for DjVu documents.
http://djvu.sourceforge.net/djview4.html || djview
  • ePDFView — Lightweight PDF document viewer using the Poppler and GTK libraries. Development stopped.
http://freecode.com/projects/epdfview || epdfview
https://www.gnu.org/software/emacs/ || emacs
  • Evince — GNOME 用ドキュメントビューア。DjVu、DVI、EPS、PDF、PostScript、TIFF、XPS、Comicbook をサポートします。
https://wiki.gnome.org/Apps/Evince || evince
https://www.foxitsoftware.com/pdf-reader/ || foxitreaderAUR
  • gv — Graphical user interface for the Ghostscript interpreter that allows to view and navigate through PostScript and PDF documents.
https://www.gnu.org/software/gv/ || gv
  • llpp — Very fast PDF reader based off of MuPDF, that supports continuous page scrolling, bookmarking, and text search through the whole document.
https://repo.or.cz/w/llpp.git || llpp
  • MuPDF — Very fast EPUB, FictionBook, PDF, XPS and Comicbook viewer written in portable C. Features CJK font support.
https://mupdf.com/ || mupdf
  • Okular — Universal document viewer for KDE. Supports CHM, Comicbook, DjVu, DVI, EPUB, FictionBook, Mobipocket, ODT, PDF, Plucker, PostScript, TIFF and XPS.
https://okular.kde.org/ || okular
  • pdfpc — Presenter console with multi-monitor support for PDF files.
https://pdfpc.github.io/ || pdfpc
  • qpdfview — タブ式ドキュメントビューアです。PDF サポートに Poppler、PS サポートに libspectre、DjVu サポートに DjVuLibre、印刷サポートに CUPS、インターフェースに Qt toolkit を使用しています。
https://launchpad.net/qpdfview || qpdfview
  • Xpdf — Viewer that can decode LZW and read encrypted PDFs.
https://www.xpdfreader.com/ || xpdf
  • Xreader — Document viewer part of the X-Apps Project. Supports DjVu, DVI, EPUB, PDF, PostScript, TIFF, XPS, Comicbook.
https://github.com/linuxmint/xreader/ || xreader
  • Zathura — カスタマイズ性の高い高機能ドキュメントビューア(プラグインベース)。PDF、DjVu、PostScript、Comicbookをサポート。
https://pwmt.org/projects/zathura/ || zathura

比較

この記事またはセクションの正確性には問題があります。
理由: Filling out PDF forms seem to be broken in MuPDF and llpp. (議論: トーク:PDF、PS および DjVu#)

ライブラリの横にあるアスタリスクは、指定された機能に対してオプションの依存関係をインストールする必要があることを示しています。

Name PDF PostScript DjVu XPS PDF フォーム PDF Annotation License
Adobe Reader Custom – – – Yes – proprietary
apvlv Poppler – DjVuLibre – No – GPLv2
Atril Poppler libspectre DjVuLibre libgxps Yes – GPLv2
DjView – – DjVuLibre – – – GPLv2
Emacs Ghostscript* DjVuLibre* – No Yes GPLv3
ePDFView Poppler – – – No – GPLv2
Evince Poppler libspectre DjVuLibre libgxps Yes Yes GPLv2
Foxit Reader Custom – – – Yes Yes proprietary
gv Ghostscript – – No – GPLv3
llpp libmupdf – – libmupdf Yes – GPLv3
MuPDF Custom – – Custom Yes Yes AGPLv3
Okular Poppler libspectre DjVuLibre Custom Yes Yes GPL, LGPL
pdfpc Poppler – – – No – GPLv2
qpdfview Poppler libspectre* DjVuLibre* – Yes Yes GPLv2
Xpdf Custom – – – No – GPLv3
Xreader Poppler libspectre* DjVuLibre* libgxps* Yes Yes GPLv2
Zathura Poppler* / libmupdf* libspectre* DjVuLibre* libmupdf* No – zlib

PDF フォーム

上の表のPDF フォーム欄はAcroFormsのサポートを指しています。入力内容を PDF から直接取り出す必要がない場合は、#注釈や#グラフィカル PDF エディタのアプリケーションを使って、PDF の上にテキストを配置することもできます。PDF フォームは、LibreOffice Writer (View > Toolbars > Form Controls) とadvanced PDF editors で作成することが可能です。

プロプライエタリで非推奨の XFA 形式のフォームは、Poppler[1][2]では完全にサポートしておらず、Adobe Reader と Master PDF Editor でのみサポートされています。

また、FirefoxやChromiumなどのWebブラウザは、フォームに入力できるPDFビューアを内蔵しています。

注釈

  • flpsed — PostScript と PDF のアノテーターで、テキストボックスのみサポートします。
https://flpsed.org/flpsed.html || flpsedAUR

アプリケーション一覧/ドキュメント#手書きメモ を参照してください。

グラフィカル PDF エディタ

  • Scribus は PDF のインポートとエクスポートが可能で、テキストはポリゴンとしてインポートされます。[3]
  • LibreOffice Draw では、PDF の取り込みと書き出しが可能です。テキストはテキストとして取り込み、埋め込みフォントは置換されます。[4][5]
  • Inkscape は PDF から 1 ページを取り込み、PDF にエクスポートすることができます。テキストはクローングリフまたはテキストとして取り込まれ、後者では埋め込みフォントが代用されます。
  • GIMP や krita などのグラフィックエディタも、ラスタ化を犠牲にして PDF をインポート/エクスポートすることが可能です。

ベーシックエディタ

  • jPDF Tweak — Java Swing アプリケーションで、PDF ファイルの結合、分割、回転、並べ替え、透かし、暗号化、署名、その他微調整ができます。
http://jpdftweak.sourceforge.net/ || jpdftweakAUR
  • PDF Arranger — PDF 文書の結合や分割、ページの回転、切り取り、並べ替えを支援します。PDF-Shuffler のフォークとしてメンテナンスされています。
https://github.com/jeromerobert/pdfarranger || pdfarranger
  • PDF Chain — C++ で書かれた PDFtk 用の GTK フロントエンドで、連結、バースト、透かし、ファイルの添付などをサポートしています。
http://pdfchain.sourceforge.net/ || pdfchainAUR
  • PdfJumbler — PDF ファイルのページを並べ替え、結合、削除、回転させるシンプルなツールです。
https://github.com/mgropp/pdfjumbler || pdfjumblerAUR
  • PDF Mix Tool — C++ で書かれた PoDoFo 用の Qt フロントエンドで、PDF ファイルの分割、結合、回転、混合をサポートします。
https://scarpetta.eu/pdfmixtool/ || pdfmixtool
  • PDF Mod — ページの並べ替え、回転、削除、文書からの画像のエクスポート、タイトル、件名、著者、キーワードの編集、ドラッグ&ドロップによる文書の結合が可能です。
https://wiki.gnome.org/Attic/PdfMod || pdfmod
  • PDFsam — Java で書かれたオープンソースのアプリケーションで、結合、分割、回転をサポートしています。
https://pdfsam.org/ || pdfsamAUR
  • PDF Slicer — PDF 文書の抽出、結合、回転、ページの並べ替えを行うシンプルなアプリケーションです。
https://junrrein.github.io/pdfslicer/ || pdfslicer
  • PDF Tricks — Ghostscript を使って PDF ファイルにちょっとした操作をするためのシンプルで効率的なアプリケーションです。
https://github.com/muriloventuroso/pdftricks || pdftricks

切り取りツール

  • briss — 選択した 1 つ以上の領域に PDF ドキュメントのページを切り取るための Java GUI。
https://sourceforge.net/projects/briss/ || brissAUR
  • krop — PDF ファイルのページを切り取るためのシンプルなグラフィカル ツール。
https://arminstraub.com/software/krop || kropAUR
  • pdfCropMargins — PDF ファイルの余白を自動的に切り取ります。
https://github.com/abarker/pdfCropMargins || pdfcropmarginsAUR
  • PdfHandoutCrop — 1 シートに複数のページがある PDF 配布資料を切り取りするツール。
https://cges30901.github.io/pdfhandoutcrop/ || pdfhandoutcropAUR

アドバンスドエディタ

  • Master PDF Editor — 機能的なプロプライエタリな PDF エディタ。最新版は非商用利用で無料。'-free' パッケージは古いものですが、透かしがないのが特徴です。
https://code-industry.net/free-pdf-editor/ || masterpdfeditorAUR, masterpdfeditor-freeAUR
  • PDF Studio — Adobe Acrobat に似たオールインワンのプロプライエタリな PDF エディタ。
https://www.qoppa.com/pdfstudio/ || pdfstudio-binAUR

PDF ツール

Ghostscriptも参照してください。

  • Coherent PDF — コマンドラインツールは、マージ、暗号化、復号化、スケール、切り取り、回転、ブックマーク、スタンプ、ロゴ、ページ番号を含む PDF ファイルを操作する。
https://community.coherentpdf.com/ || cpdfAUR
  • DiffPDF — 2 つの PDF ファイルの各ページのテキストや見た目を比較することができます。
https://gitlab.com/eang/diffpdf || diffpdf
  • mupdf-tools — MuPDF の一部として開発されたツールで、mutool(1) と muraster が含まれています。
https://mupdf.com || mupdf-tools
  • pdfgrep — PDF ファイル内のテキストを検索するコマンドラインユーティリティ。
https://pdfgrep.org/ || pdfgrep
  • pdfjam — Can be used to n-up, join, rotate and flip PDFs and arrange them into a format suitable for book binding.
https://github.com/DavidFirth/pdfjam || texlive-core
  • pdf2svg — PDFファイルからSVGファイルへの変換を行います。
http://www.cityinthesky.co.uk/opensource/pdf2svg/ || pdf2svg
  • PDFtk — PDF 文書で日常的なことを行うためのシンプルなツールです。
http://www.pdfhacks.com/pdftk || pdftk
  • QPDF — Content-preserving PDF transformation system.
https://github.com/qpdf/qpdf || qpdf
  • Stapler — PyPDF2 ライブラリを使用した、PDFtk の軽快な代替品です。
https://github.com/hellerbarde/stapler || staplerAUR, stapler-gitAUR

画像から PDF を作成

GraphicsMagick を使用:

$ gm convert 1.jpg 2.jpg 3.jpg out.pdf

PDF の連結

Ghostscript の場合:

$ gs -dNOPAUSE -sDEVICE=pdfwrite -sOUTPUTFILE=out.pdf -dBATCH 1.pdf 2.pdf 3.pdf

PDFtk を使用:

$ pdftk 1.pdf 2.pdf 3.pdf cat 出力 out.pdf

Poppler を使用:

$ pdfunite 1.pdf 2.pdf 3.pdf out.pdf

QPDF の場合:

$ qpdf --empty --pages 1.pdf 2.pdf 3.pdf -- out.pdf

PDFをテキストに変換

Poppler を使用してレイアウトを維持する:

$ pdftotext -レイアウト in.pdf out.txt

pdftotext(1) も参照してください。

PDF の復号化

このセクションでは、PDF を暗号化されていないファイルに復号化するコマンドを示します。ほとんどの PDF ビューア は、暗号化された PDF もサポートしていることに注意してください。

PDFtk を使用:

$ pdftk in.pdf input_pw password output out.pdf

Poppler から PostScript へ:

$ pdftops -upw password in.pdf out.ps

QPDF の場合:

$ qpdf --decrypt --password=password in.pdf out.pdf
ヒント パスワードを忘れた場合は、pdfcrack で回復できる場合があります。pdfcrack(1) を参照してください。

PDF を暗号化

「ユーザーパスワード」は暗号化に使用され、「所有者パスワード」はドキュメントが復号化された後の操作を制限するために使用されます。詳細については、Wikipedia:PDF#Encryption and signatures を参照してください。

PDFtk を使用:

$ pdftk in.pdf output out.pdf user_pw password

PoDoFo を使用:

$ podofoencrypt -u user_password -o owner_password in.pdf out.pdf

QPDF を使用:

$ qpdf --encrypt user_password owner_password key_length -- in.pdf out.pdf

ここで、key_length は 40、128、または 256 です。

PDF から画像を抽出

Poppler から JPEG へ:

$ pdfimages infile.pdf -j outfileroot

PDF からページ範囲を抽出し、複数ページの PDF ドキュメントを分割

Ghostscript を 1 つのファイルに使用 [6]:

$ gs -sDEVICE=pdfwrite -dNOPAUSE -dBATCH -dSAFER -dFirstPage=first -dLastPage=last -sOutputFile=outfile.pdf infile.pdf

PDFtk を 1 つのファイルに使用:

$ pdftk infile.pdf cat first-last output outfile.pdf

Poppler をファイル分割に使用:

$ pdfseparate -f first -l last infile.pdf outfileroot-%d.pdf

QPDF を 1 つのファイルに使用:

$ qpdf --empty --pages infile.pdf first-last -- outfile.pdf

mutool を 1 つのファイルに使用:

$ mutool clean -g infile.pdf outfile.pdf first-last

PDF の面付け(Imposition)

PDF の面付け(Imposition)は pdfjamで行うことができます。例えば pdfnup で紙の無駄を省いたり、pdfbook で PDF を製本に適した形式に整えたりすることができます。

メタデータの検査

ExifTool を使用:

$ exiftool file.pdf

Poppler を使用:

$ pdfinfo file.pdf

PDFの最適化、サイズ縮小

Ghostscriptでは、以下のいずれかを行います。

$ ps2pdf -dPDFSETTINGS=/screen in.pdf out.pdf
$ gs -dNOPAUSE -dBATCH -sDEVICE=pdfwrite -dCompatibilityLevel=1.4 -dPDFSETTINGS=/printe -sOutputFile=out.pdf in.pdf

その他の設定については、documentationを参照してください。

gs をラッピングするスクリプトである shrinkpdfAUR もあります。

PDFをラスタライズする

GraphicsMagickを使って、特定のページを変換する。

$ gm convert -density dpi infile.pdf[page] outfile.jpg

Poppler で全ページを変換する。

$ pdftoppm -jpeg -r dpi infile.pdf outfileroot

Poppler で特定のページを変換する場合。

$ pdftoppm -jpeg -r dpi -f page -singlefile infile.pdf outfileroot

PDFのページを分割する

mupdf-toolsで、各ページを縦に 2 分割することができます。

$ mutool poster -y 2 in.pdf out.pdf

単純な面付けを元に戻すのに使えます。

PDFのいずれかのページにsignature.pngや画像を追加する

PDF の任意の場所に画像を追加するには、ImageMagick(convert), xv, pdftk が使用できます。ラッパースクリプトはここ、その他のヒントはここです。

DjVu ツール

  • DjVuLibre は、例えば ddjvu(1) のような多くのコマンドラインツールを提供します。
  • img2djvu — DjVu Libre と ImageMagick をベースにしたシングルパス DjVu エンコーダ。
https://github.com/ashipunov/img2djvu || img2djvu-gitAUR
  • pdf2djvu — PDF ファイルから DjVu ファイルを作成します。
https://jwilk.net/software/pdf2djvu || pdf2djvuAUR

Convert DjVu to images

Break Djvu into separate pages:

$ djvmcvt -i input.djvu /path/to/out/dir output-index.djvu

Convert Djvu pages into images:

$ ddjvu --format=tiff page.djvu page.tiff

Convert Djvu pages into PDF:

$ ddjvu --format=pdf inputfile.djvu ouputfile.pdf

You can also use --page to export specific pages:

$ ddjvu --format=tiff --page=1-10 input.djvu output.tiff

this will convert pages from 1 to 10 into one tiff file.

Processing images

You can use scantailor-advanced to:

  • fix orientation
  • split pages
  • deskew
  • crop
  • adjust margins

Make DjVu from images

There is a useful script img2djvu-gitAUR.

$ img2djvu -c1 -d600 -v1 ./out

it will create 600 DPI out.djvu from all files in ./out directory.

Alternatively, you can try didjvuAUR, which seems to create smaller files especially on images with well defined background.

PostScript ツール

  • pstotext — PostScript ファイルをテキストに変換します。
https://www.cs.wisc.edu/~ghost/doc/pstotext.htm || pstotext

ps2pdf

ps2pdf は、PostScript を PDF に変換するための ghostscript のラッパーです。

$ ps2pdf -sPAPERSIZE=a4 -dOptimize=true -dEmbedAllFonts=true YourPSFile.ps

説明:

  • -sPAPERSIZE=something — 用紙サイズを定義します。有効な PAPERSIZE の値については、[7] を参照してください。
  • -dOptimize=true — 作成した PDF を読み込みに最適化させます。
  • -dEmbedAllFonts=true — フォントを常に美しく見せるようにします。
ノート ps2pdf で用紙の向きを選択することはできません。入力された PS ファイルが健全なものであれば、すでに向きの情報が含まれています。Encapsulated PS ファイルを使おうとしている場合、指定した -sPAPERSIZE に収まらない場合は問題が発生します。回避策として、ghostscript の設定で新しい用紙を作成し(例:slide)、それを-sPAPERSIZE=slide として使用することができます。

ライブラリ

  • libharu — PDF 文書生成のためのCライブラリ。
https://github.com/libharu/libharu || libharu, Lua binding: lua-hpdfAUR
  • PoDoFo — PDF ファイル形式を扱うための C++ ライブラリ。
http://podofo.sourceforge.net || podofo

Python

  • PDFMiner — PDF ファイルのテキストデータを抽出、解析するユーティリティ。pdf2txt, dumppdf, latin2ascii が含まれる。
https://www.unixuser.org/~euske/python/pdfminer/ || python-pdfminer, pdfminerAUR
  • pdfrw — PDFの読み書きを行うピュア Pythen ライブラリ。
https://github.com/pmaupin/pdfrw || python-pdfrw, python2-pdfrwAUR
  • PyPDF2 — PDF ツールキットとして構築されたピュア Pythonライブラリ。
https://mstamy2.github.io/PyPDF2/ || python-pypdf2AUR, python2-pypdf2AUR
  • PyX — PostScript や PDF ファイルを作成するための Python ライブラリ。
http://pyx.sourceforge.net || python-pyx
  • ReportLab — 業界で実績のある PDF 生成ソリューション
https://www.reportlab.com/ || python-reportlab, python2-reportlabAUR

参照