PDF、PS および DjVu
この記事は、PDF, PostScript (PS), DjVu ('déjà vu'), XPS ファイルを閲覧、編集、変換するソフトウェアを扱います。
目次
- 1 エンジン
- 2 ビューア
- 3 注釈
- 4 グラフィカル PDF エディター
- 5 PDF ツール
- 5.1 画像から PDF を作成
- 5.2 PDF の連結
- 5.3 PDFをテキストに変換
- 5.4 PDF の復号化
- 5.5 PDF を暗号化
- 5.6 PDF から画像を抽出
- 5.7 Extract page range from PDF, split multipage PDF document
- 5.8 PDF の面付け(Imposition)
- 5.9 Inspecting metadata
- 5.10 Optimize, reduce size of a PDF
- 5.11 Rasterize a PDF
- 5.12 Splitting PDF pages
- 5.13 Add signature.png or image to one of the pages in the PDF
- 6 DjVu ツール
- 7 PostScript ツール
- 8 ライブラリ
- 9 参照
エンジン
- Poppler — Xpdf をベースにした PDF 描画ライブラリ。Poppler で CJK(中国語、日本語、韓国語)に対応するには、poppler-data をインストールします。
- Mupdf — MuPDF は、ソフトウェアライブラリ、コマンドラインツール、ビューアから構成される、軽量のPDF、XPS、EPUBビューアです。
- libspectre — PostScript 文書を描画するための小さなライブラリ。
- Ghostscript — PostScript と PDF のためのインタープリタです。gs(1) コマンドラインインターフェイスを提供します。(online) を参照してください。また、ps2pdf や pdf2ps などの多くのラッパースクリプトも含まれています。
- ghostscript || パッケージが存在しないか AUR で検索
- 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#Security 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
Extract page range from PDF, split multipage PDF document
With Ghostscript as a single file[6]
$ gs -sDEVICE=pdfwrite -dNOPAUSE -dBATCH -dSAFER -dFirstPage=first -dLastPage=last -sOutputFile=outfile.pdf infile.pdf
With PDFtk as a single file:
$ pdftk infile.pdf cat first-last output outfile.pdf
With Poppler as separate files:
$ pdfseparate -f first -l last infile.pdf outfileroot-%d.pdf
With QPDF as a single file:
$ qpdf --empty --pages infile.pdf first-last -- outfile.pdf
With mutool as a single file:
$ mutool clean -g infile.pdf outfile.pdf first-last
PDF の面付け(Imposition)
PDF の面付け(Imposition)は pdfjamで行うことができます。例えば pdfnup で紙の無駄を省いたり、pdfbook で PDF を製本に適した形式に整えたりすることができます。
Inspecting metadata
With ExifTool:
$ exiftool file.pdf
With Poppler:
$ pdfinfo file.pdf
Optimize, reduce size of a PDF
With Ghostscript one of:
$ ps2pdf -dPDFSETTINGS=/screen in.pdf out.pdf $ gs -dNOPAUSE -dBATCH -sDEVICE=pdfwrite -dCompatibilityLevel=1.4 -dPDFSETTINGS=/printer -sOutputFile=out.pdf in.pdf
For different settings see the documentation.
There is also shrinkpdfAUR, a script wrapping gs.
Rasterize a PDF
With GraphicsMagick to convert a specific page:
$ gm convert -density dpi infile.pdf[page] outfile.jpg
With Poppler to convert all pages:
$ pdftoppm -jpeg -r dpi infile.pdf outfileroot
With Poppler to convert a specific page:
$ pdftoppm -jpeg -r dpi -f page -singlefile infile.pdf outfileroot
Splitting PDF pages
With mupdf-tools to split every page vertically into two pages:
$ mutool poster -y 2 in.pdf out.pdf
Can be used to undo simple imposition.
Add signature.png or image to one of the pages in the PDF
To add an image to any location in PDF can be done with ImageMagick (convert), xv and pdftk. A wrapper script is here and other hints are here.
DjVu ツール
- DjVuLibre provides many command-line tools, like ddjvu(1) for example.
- img2djvu — Single-pass DjVu encoder based on DjVu Libre and ImageMagick.
- pdf2djvu — Creates DjVu files from PDF files.
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 — C library for generating PDF documents.
- https://github.com/libharu/libharu || libharu, Lua binding: lua-hpdfAUR
- PoDoFo — A C++ library to work with the PDF file format.
Python
- PDFMiner — Utils to extract, analyze text data of PDF files. Includes pdf2txt, dumppdf, and latin2ascii
- pdfrw — A pure Python library that reads and writes PDFs.
- PyPDF2 — A pure-Python library built as a PDF toolkit.
- PyX — Python library for the creation of PostScript and PDF files.
- ReportLab — A proven industry-strength PDF generating solution