PDF、PS および DjVu
この記事は、PDF, PostScript (PS), DjVu ('déjà vu'), XPS ファイルを閲覧、編集、変換するソフトウェアを扱います。
エンジン
- Poppler — Xpdf をベースにした PDF 描画ライブラリ。Poppler で CJK(中国語、日本語、韓国語)に対応するには、poppler-data をインストールします。
- Mupdf — MuPDF は、ソフトウェアライブラリ、コマンドラインツール、ビューアから構成される、軽量のPDF、XPS、EPUBビューアです。
- libspectre — PostScript 文書を描画するための小さなライブラリ。
- Ghostscript — PostScript と PDF のためのインタープリタです。gs(1) コマンドラインインターフェイスを提供します。(online) を参照してください。また、ps2pdf や pdf2ps などの多くのラッパースクリプトも含まれています。
- DjVuLibre — DjVu ドキュメントの作成、操作、表示を行うスイートです。
- libgxps — XPS ドキュメントを処理し、レンダリングするための GObject ベースのライブラリです。
ビューア
フレームバッファ
- fbgs — linux フレームバッファ・コンソール用のプアマンズ PostScript/pdf ビューアです。
- fbpdf — MuPDF ベースの小さなフレームバッファ PDF および DjVu ビューア,Vim キーバインド付きで C で書かれています。
- jfbview — フレームバッファ型 PDF・画像ビューア。Vim ライクなコントロール、zoom-to-fit、TOC(アウトライン)ビュー、高速なマルチスレッドレンダリングなどの機能があります。
グラフィカル
- Adobe Reader — Adobeが提供するプロプライエタリの PDF ファイルビューア。Linuxでは廃止されました。
- apvlv — Lightweight document viewer with Vim keybindings. Supports PDF, DjVu, EPUB, HTML and TXT.
- Atril — Simple multi-page document viewer for MATE. Supports DjVu, DVI, EPS, EPUB, PDF, PostScript, TIFF, XPS and Comicbook.
- 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.
- DjView — Viewer for DjVu documents.
- ePDFView — Lightweight PDF document viewer using the Poppler and GTK libraries. Development stopped.
- Emacs — 改良された pdf サポートのための pdf-tools (emacs-pdf-tools-gitAUR) と djvu サポートのための djvu package も参照してください。
- Evince — GNOME 用ドキュメントビューア。DjVu、DVI、EPS、PDF、PostScript、TIFF、XPS、Comicbook をサポートします。
- Foxit Reader — Small, fast (compared to Acrobat) proprietary PDF viewer. Discontinued for Linux.
- gv — Graphical user interface for the Ghostscript interpreter that allows to view and navigate through PostScript and PDF documents.
- llpp — Very fast PDF reader based off of MuPDF, that supports continuous page scrolling, bookmarking, and text search through the whole document.
- MuPDF — Very fast EPUB, FictionBook, PDF, XPS and Comicbook viewer written in portable C. Features CJK font support.
- Okular — Universal document viewer for KDE. Supports CHM, Comicbook, DjVu, DVI, EPUB, FictionBook, Mobipocket, ODT, PDF, Plucker, PostScript, TIFF and XPS.
- pdfpc — Presenter console with multi-monitor support for PDF files.
- qpdfview — タブ式ドキュメントビューアです。PDF サポートに Poppler、PS サポートに libspectre、DjVu サポートに DjVuLibre、印刷サポートに CUPS、インターフェースに Qt toolkit を使用しています。
- Xpdf — Viewer that can decode LZW and read encrypted PDFs.
- Xreader — Document viewer part of the X-Apps Project. Supports DjVu, DVI, EPUB, PDF, PostScript, TIFF, XPS, Comicbook.
- Zathura — カスタマイズ性の高い高機能ドキュメントビューア(プラグインベース)。PDF、DjVu、PostScript、Comicbookをサポート。
比較
ライブラリの横にあるアスタリスクは、指定された機能に対してオプションの依存関係をインストールする必要があることを示しています。
Name | 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 のアノテーターで、テキストボックスのみサポートします。
アプリケーション一覧/ドキュメント#手書きメモ を参照してください。
グラフィカル PDF エディタ
- Scribus は PDF のインポートとエクスポートが可能で、テキストはポリゴンとしてインポートされます。[3]
- LibreOffice Draw では、PDF の取り込みと書き出しが可能です。テキストはテキストとして取り込み、埋め込みフォントは置換されます。[4][5]
- Inkscape は PDF から 1 ページを取り込み、PDF にエクスポートすることができます。テキストはクローングリフまたはテキストとして取り込まれ、後者では埋め込みフォントが代用されます。
- GIMP や krita などのグラフィックエディタも、ラスタ化を犠牲にして PDF をインポート/エクスポートすることが可能です。
ベーシックエディタ
- jPDF Tweak — Java Swing アプリケーションで、PDF ファイルの結合、分割、回転、並べ替え、透かし、暗号化、署名、その他微調整ができます。
- PDF Arranger — PDF 文書の結合や分割、ページの回転、切り取り、並べ替えを支援します。PDF-Shuffler のフォークとしてメンテナンスされています。
- PDF Chain — C++ で書かれた PDFtk 用の GTK フロントエンドで、連結、バースト、透かし、ファイルの添付などをサポートしています。
- PdfJumbler — PDF ファイルのページを並べ替え、結合、削除、回転させるシンプルなツールです。
- PDF Mix Tool — C++ で書かれた PoDoFo 用の Qt フロントエンドで、PDF ファイルの分割、結合、回転、混合をサポートします。
- PDF Mod — ページの並べ替え、回転、削除、文書からの画像のエクスポート、タイトル、件名、著者、キーワードの編集、ドラッグ&ドロップによる文書の結合が可能です。
- PDFsam — Java で書かれたオープンソースのアプリケーションで、結合、分割、回転をサポートしています。
- https://pdfsam.org/ || pdfsamAUR
- PDF Slicer — PDF 文書の抽出、結合、回転、ページの並べ替えを行うシンプルなアプリケーションです。
- PDF Tricks — Ghostscript を使って PDF ファイルにちょっとした操作をするためのシンプルで効率的なアプリケーションです。
切り取りツール
- briss — 選択した 1 つ以上の領域に PDF ドキュメントのページを切り取るための Java GUI。
- krop — PDF ファイルのページを切り取るためのシンプルなグラフィカル ツール。
- pdfCropMargins — PDF ファイルの余白を自動的に切り取ります。
- PdfHandoutCrop — 1 シートに複数のページがある PDF 配布資料を切り取りするツール。
アドバンスドエディタ
- Master PDF Editor — 機能的なプロプライエタリな PDF エディタ。最新版は非商用利用で無料。'-free' パッケージは古いものですが、透かしがないのが特徴です。
- PDF Studio — Adobe Acrobat に似たオールインワンのプロプライエタリな PDF エディタ。
PDF ツール
Ghostscriptも参照してください。
- Coherent PDF — コマンドラインツールは、マージ、暗号化、復号化、スケール、切り取り、回転、ブックマーク、スタンプ、ロゴ、ページ番号を含む PDF ファイルを操作する。
- DiffPDF — 2 つの PDF ファイルの各ページのテキストや見た目を比較することができます。
- mupdf-tools — MuPDF の一部として開発されたツールで、mutool(1) と muraster が含まれています。
- pdfgrep — PDF ファイル内のテキストを検索するコマンドラインユーティリティ。
- pdfjam — Can be used to n-up, join, rotate and flip PDFs and arrange them into a format suitable for book binding.
- pdf2svg — PDFファイルからSVGファイルへの変換を行います。
- PDFtk — PDF 文書で日常的なことを行うためのシンプルなツールです。
- QPDF — Content-preserving PDF transformation system.
- Stapler — PyPDF2 ライブラリを使用した、PDFtk の軽快な代替品です。
画像から 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
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 エンコーダ。
- pdf2djvu — PDF ファイルから DjVu ファイルを作成します。
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 ファイルをテキストに変換します。
ps2pdf
ps2pdf は、PostScript を PDF に変換するための ghostscript のラッパーです。
$ ps2pdf -sPAPERSIZE=a4 -dOptimize=true -dEmbedAllFonts=true YourPSFile.ps
説明:
-sPAPERSIZE=something
— 用紙サイズを定義します。有効な PAPERSIZE の値については、[7] を参照してください。-dOptimize=true
— 作成した PDF を読み込みに最適化させます。-dEmbedAllFonts=true
— フォントを常に美しく見せるようにします。
ライブラリ
- libharu — PDF 文書生成のためのCライブラリ。
- https://github.com/libharu/libharu || libharu, Lua binding: lua-hpdfAUR
- PoDoFo — PDF ファイル形式を扱うための C++ ライブラリ。
Python
- PDFMiner — PDF ファイルのテキストデータを抽出、解析するユーティリティ。pdf2txt, dumppdf, latin2ascii が含まれる。
- pdfrw — PDFの読み書きを行うピュア Pythen ライブラリ。
- PyPDF2 — PDF ツールキットとして構築されたピュア Pythonライブラリ。
- PyX — PostScript や PDF ファイルを作成するための Python ライブラリ。
- ReportLab — 業界で実績のある PDF 生成ソリューション