Qpdf : コマンドラインのPDFツール

TOP > Qpdf ツール


TT 2016 - Race Week - PokerStars Senior TT (15)

 

概要

Qpdf とはPDF にパスワードと詳細レベルのセキュリティ設定が出来るコマンドラインのソフトです。
PDF のマージや分割、画像の圧縮、PDF ファイルの内部構造の表示や点検操作、JSON形式への出力も出来ます。

PDF開発者に対してはPDF内部の高度な技術情報を提供します。

PDF文書を開く時に必要なユーザーパスワードが設定されていても操作できるのも大きな特徴です。よって使用には注意が必要です。

一般的なPDF編集ソフトでは無いので次のような編集機能はありません。
しおりの処理、ヘッダーとフッダーの編集、文字列の検索、コンテンツ内容の変更、印刷など。

注記:

  • 未確認、未検証の情報となっている場合も多々あります。ご注意ください。
  • Windows 版での使用を前提にした説明になります。

 

詳細

  1. フリー。 ライセンスはVersion 2.0 of the Artistic License
  2. 最適化(リニアライズ:Web用最適化)機能
  3. パスワードによる詳細レベルでのセキュリティ設定機能
  4. マージ、分割機能、注釈、JSON出力
  5. 69頁のPDF+Html 解説書(英語)を同封
    詳しく(=難しく)書かれています。

 

ダウンロード

Qpdf 公式サイトが示す場所からダウンロードします。

最初にココをクリックして、以下を表示します。そして最新バージョンの 8.4.0 部分をクリックします。※以下の画像は8.1.0の旧バージョン。

Qpdf Windows 版のダウンロード

以下が表示されます。qpdf-8.4.0-bin-msvc32.zip (2019/1/9 時点)をクリックしてダウンロードします。※以下の画像は8.1.0の旧バージョン。

Qpdf Windows 版のダウンロード

MinGWでビルドした qpdf-8.4.0-bin-mingw32.zip も利用できます。共に64ビット版(~64.zip)も有ります。

 

インストール

qpdf-8.4.0-bin-msvc32.zip を解凍して適当なフォルダに入れるだけです。

実行はWindows の環境変数のPathを設定して使うか、フルパスを指定してQpdf.exe を起動します。

出来るだけインストール先フォルダに半角の空白文字を入らない様にしてください。コマンドラインでフルパスを指定する時に半角の空白が有ると動作に支障が出る場合が有るからです。

 

日本語の扱い

言語ファイル関連は存在しないので2バイト文字(日本語)には未対応と思われます。しかし、2バイト文字対応を必要とする処理が見当たらないので問題は無いでしょう。

 

マニュアル

オンラインマニュアル(英語)が公開されています。

  • PDF 69頁、ダウンロード可能
  • HTML

 

Copylight の内容

 

Help の内容

注記:上記でマークした行は 旧バージョン 8.3.0 から 8.4.0 で追加、及び変更された箇所です。

 

呼び出し形式(1)

コマンドラインでの基本形式です。

qpdf [ options ] { infilename | --empty } [ outfilename ]

1つの半角空白文字で区切りと見ます。

  • qpdf : qpdf.exe の事です。Windowsの環境変数のPATHが通ってない場合はフルパスでの指定が必要です。
  • options : 1つ以上のオプションです。通常は各オプションの前に2つのハイフン「--」が付きます。2つのハイフンでオプションの始まりと判断してるみたいです。また、2つのハイフンの前後が空白「 -- 」の場合はオプションの終了を意味します。
  • infilename : 入力ファイルです。
    代わりにパラメータ --empty を使用する事もできます。--empty はゼロ頁のダミー入力PDFファイルとして使用できます。
  • outfilename : 出力ファイルです。ほとんどのオプションは出力ファイルを必要とします。
    テストや検査には必要無いです。

 

呼び出し形式(2)

JSON処理は、以下の基本形式に変わります。

qpdf [options] infile outfile

  • qpdf : qpdf.exe の事です。
  • options : オプションです。
  • infile : 入力のPDFファイルです。
  • outfile : 出力ファイルです。

 

Basic Options : 基本オプション

一般的に使用されるオプションです。

--version

バージョン情報を表示します。

--copyright

著作権とバージョン情報を表示します。

--help

引数などを解説したヘルプを画面に表示します。かなりの量です。

--completion-bash

bashからシェル補完を有効にする為の補完コマンドを出力します。
詳細はココ(英語)を参照。

--completion-zsh

zshからシェル補完を有効にする為の補完コマンドを出力します。
詳細はココ(英語)を参照。

--password=password

PDF文書を開く時に入力が必要になるユーザーパスワードが設定されたファイルにアクセスするためのパスワードを指定します。password 部分にパスワードの文字列を指定します。

--verbose

付加的な情報出力を(PDF)出力します。

>qpdf --verbose copy1.pdf info.pdf
qpdf: wrote file info.pdf

※7.0.0 からの新機能で、使い方は不明です。

--progress

処理中の進捗インジケータを表示します。

--no-warn

標準エラー(stderr)へ警告を書き込みません。 警告が検出されて、--no-warn が指定された場合は、Qpdfは終了コード3で終了します。

--linearize

Web用に最適化(リニアライズ)します。PDF全体を圧縮する最適化では無く、Web用に表示速度を上げる為だけの最適化で有ることに注意してください。通常はこのWeb用最適化のことを「リニアライズ」と言います。

例:ユーザーパスワードが「abc」のin-ps.pdf をWeb用に最適化します。出力はout-ps.pdf です。out-ps.pdf には同じユーザーパスワード設定がされます。

>qpdf --password=abc --linearize in-ps.pdf out-ps.pdf

--copy-encryption=file

指定されたファイルから暗号化パラメータをコピーします。ここで言う「暗号化パラメータ」は文書プロパティのセキュリティに設定されている内容の事です。

例:in.pdf をWeb用最適化し、更に test-ps.pdf からセキュリティ設定だけをコピーして out.pdf に出力します。

>qpdf --linearize --copy-encryption=test-ps.pdf in.pdf out.pdf

--encryption-file-password=password

--copy-encryption=file file にユーザーパスワードが掛かっている時にその password をここで指定します。

例:in.pdf をWeb用最適化し、更に test-ps.pdf からセキュリティ設定をコピーして out.pdf に出力します。なお、test-ps.pdf には(文書を開く)ユーザーパスワードが設定されてるのでその値「abc」を「--encryption-file-password=abc」オプションで指定します。当然ですが出力した out.pdf にも同じユーザーパスワードの設定がコピーされます。

>qpdf --linearize --copy-encryption=test-ps.pdf --encryption-file-password=abc in.pdf out.pdf

--encrypt options --

文書プロパティのセキュリティに関する設定を行います。
このオプションの詳細はこの後の「暗号化オプション」を参照してください。

--decrypt

オーナーパスワードによる保護(文書プロパティのセキュリティ設定)を解除します。入力ファイルに対しての直接のパスワード解除は出来ません。必ず出力ファイルを指定します。

例:in-ps.pdf のセキュリティ設定を解除して、out-nops.pdf に出力します。

>qpdf --decrypt in-ps.pdf out-nops.pdf

--password-is-hex-key

プライマリパスワードオプションを16進数のキーとして扱います。
※プライマリパスワード(primary password)に関する情報が見当たらない。

--suppress-password-recovery

パスワード文字列のエンコードエラーからの回復を試みない。

--password-mode=mode

コマンドラインで指定されるパスワードをどのように解釈するかを制御します。

  • auto:自動判別し、エンコーディングは自動調整
  • bytes:そのままで使用
  • hex-bytes:16進エンコードのバイト文字列として解釈
  • unicode:UTF-8エンコード文字列として解釈

Qpdfではこの事を「Password Modes/パスワードモード」と言っています。

--pages options --

PDFの分割、マージを指定するオプションです。
このオプションの詳細はこの後の「ページ選択オプション」を参照してください。

--collate

マージ時に頁を連結しての処理はしないで、1頁ずつ取り出して処理します。
このオプションの詳細はこの後の「ページ選択オプション」を参照してください。

--rotate=[+|-]angle:page-range

指定したページを90、180、または270度に回転します。

--split-pages=[n]

n ページ単位で別々のPDFファイルに書き出します。n=1の時は1頁1PDF単位、n=2の時は2頁単位で1PDF出力します。

>qpdf --split-pages=2 test3.pdf out1.pdf

出力ファイル名の後にページ番号を付加されます。

 

Overlay and Underlay Options:オーバーレイとアンダーレイのオプション

Acrobatの「スタンプ」機能の事です。

--overlay options --

options に従って、他のPDFファイルのページを入力PDFのページの上に貼り付けます。

--underlay options --

options に従って、他のPDFファイルのページを入力PDFのページの下に貼り付けます 。

options の形式と内容:

{--overlay | --underlay } file
      [ --password=password ]
      [ --to=page-range ]
      [ --from=[page-range] ]
      [ --repeat=page-range ]
      --

  • file:"--from" で使用されるファイル名
  • --password:"file" が暗号化されている場合のパスワード
  • --to:オーバーレイ/アンダーレイされる出力先のページ番号。
    未指定時は全てのページに適応される。
  • --from:オーバーレイ/アンダーレイに使用されるファイルのページ番号。未指定時は全てのページが適応される。
  • --repeat:上記の "--from" ページが使い果たされた後に繰り返されるページ番号。先頭から一定範囲のページを繰り返したい場合は "--from=" を指定。

例1:o.pdfの最初の3ページをa.pdfの最初の3ページにオーバーレイし、次にo.pdfのページ5をa.pdfのページ4および5にオーバーレイします。 残りのa.pdfのページはそのまま残します。結果をb.pdfへ出力します。※a.pdfは未変更

>qpdf --overlay o.pdf --to=1-5 --from=1-3 --repeat=5 -- a.pdf b.pdf

例2:a.pdfのすべての奇数ページにfooter.pdfのページ1をアンダーレイし、a.pdfのすべての偶数出力ページにfooter.pdfのページ2をアンダーレイします。結果をb.pdfへ出力します。※a.pdfは未変更

>qpdf --underlay footer.pdf --from= --repeat=1,2 -- a.pdf b.pdf

 

Encryption Options:暗号化オプション

PDFファイルのセキュリティ関連を変更します。Qpdf ではこの事を「ファイルの暗号化パラメータの変更」と言っています。

「--encrypt」オプションの形式

qpdf --encrypt user-password owner-password key-length flags -- infilename outfilename

  • --encrypt : --encrypt オプションの開始を意味します
  • user-password : ユーザーパスワードを指定します
    (文書を開くパスワード)PDFファイルを開く時に制限を掛けるパスワードです。
  • owner-password : オーナーパスワードを指定します
    (権限パスワード)PDFに印刷、更新、コピー等の許可を設定するパスワードです。
  • key-length : キーの長さで40, 128, 256 のいずれかを指定
  • flags : これは上記のkey-length の値によって変わります
  • -- : 最後のハイフン2つ「--」で --encrypt オプションの終了を意味します

ユーザーパスワードとオーナーパスワードのいずれかまたは両方が空の文字列であってもよいです。その時は「""」の様に指定します。

注意:ユーザーパスワードとオーナーパスワードの文字数について。
参照:PDFのパスワードは32文字まで

flags

key-length の値(40 , 128 , 256)で flags 部分の内容が変わります。

  • key-length= 40 の時
    • --print=[yn] : 印刷を許可
    • --modify=[yn] : 文書の変更を許可
    • --extract=[yn] : テキスト/グラフィックの抽出を許可
    • --annotate=[yn] : コメントとフォーム記入と署名を許可
  • key-length= 128 の時
    • --accessibility=[yn] : 視覚障害者へのアクセスを許可
    • --extract=[yn] : テキスト/グラフィックの抽出を許可
    • --print=print-opt : 印刷アクセスを制御 (下記参照)
    • --assemble=[yn]:文書の組み立て(ページの回転と並べ替え)を許可
    • --annotate=[yn]:コメントとフォームへの記入と署名を許可
    • --form=[yn]:フォームフィールドの入力を許可
    • --modify-other=[yn]:--assemble、--annotate、および--formオプションによって個別に制御されるものを除き、すべての文書編集を許可
    • --modify=modify-opt : 変更アクセスを制御 (下記参照)
    • --cleartext-metadata : メタデータの暗号化を防ぐ
    • --use-aes=[yn] : AES 暗号化を使用するかどうかを示す
    • --force-V4 : V=4暗号化ハンドラの使用を強いる
  • key-length= 256 の時
    • --accessibility=[yn] : 視覚障害者へのアクセスを許可
    • --extract=[yn] : テキスト/グラフィックの抽出を許可
    • --print=print-opt : 印刷アクセスを制御 (下記参照)
    • --modify=modify-opt : 変更アクセスを制御 (下記参照)
    • --cleartext-metadata : メタデータの暗号化を防ぐ
    • --use-aes=y : AES 暗号化の使用は256ビットキーでは常にオン
    • --force-V4 : 256ビットでは利用不可
    • --force-R5 : 非推奨のR=5暗号化の使用を強いる

print-opt

--print=print-opt オプションで使えるprint-opt の値です。

  • full : 完全な印刷が可能
    高解像度の印刷を意味してると
  • low : 低解像度の印刷のみを許可
  • none : 印刷を許可しない

modify-opt

--modify=modify-opt オプションで使えるmodify-opt の値です。

  • all : 完全な文書の変更を許可
  • annotate : コメント作成およびフォームの操作を許可
  • form : フォームフィールドの入力と署名を許可
  • assembly : 文書のアセンブリのみを許可
  • none : 変更を許可しない

--cleartext-metadata オプションの補足

「--cleartext-metadata : メタデータの暗号化を防ぐ」オプションを指定するにはPDFバージョン=1.5 以上が必要です。デフォルトはオフです。

--use-aes=y オプションの補足

「--use-aes=y : AES 暗号化を使用」オプションを指定するにはPDFバージョン=1.6 以上が必要です。デフォルトはオフです。

--force-V4 オプションの補足

使用するしないに関わらず、PDFバージョン=1.5 以上が必要です。

暗号化オプションの使用例

ユーザパスワードは無しで「 "" 」、オーナーパスワードは「abc」、キーの長さ「40」、印刷不可「 --print=n 」、抽出もコピーも不可「 --extract=n 」にします。オプションは最後に「--」だけで閉じます。入力は in.pdf 、出力は out.pdf です。

>qpdf --encrypt "" abc 40 --print=n --extract=n -- in.pdf out.pdf

Qpdf 暗号化オプションの使用例

間違ってオーナーパスワードを空白「""」にした時は、「--print=n : 印刷不可」、「抽出もコピー不可: --extract=n 」のオプションなどは指定しても無視されます。エラーにはなりません。(注意

 

Page Selection Options:ページ選択オプション

--keep-files-open=[yn]

デフォルトで Qpdf は200個以上のファイルが指定されていると、参照されてないファイルを閉じます。200個以下では同時に全てを開いたままにします。--keep-files-open オプションで開いたままを有効「=y」、無効「=n」に出来ます。ファイルの開いて閉じる動作は特定のファイルシステム、特にネットワークファイルシステムでは非常に高いオーバーヘッドが生じることがあります。これで制御します。※詳細な動作は未検証。

qpdf infilename --pages file [ --password=password ] [ page-range ] ... -- outfilename

ページの分割とマージの指定です。「--pages」で始まり、最後は「--」だけで終了する部分を指定します。infilename を指定するとそのPDFの文書プロパティやメタデータなどの非ページデータをoutfilename 作成時に使用します。使用したくない場合は infilename に--empty を指定します。

注記:infilename に入力PDFも--empty も指定しないと実行エラーになります。

>qpdf --pages in.pdf 1-3 in.pdf 10-11 --out.pdf
 
qpdf: insufficient arguments to --pages
 
Usage: qpdf [options] infile outfile
For detailed help, run qpdf --help

ページ番号の指定方法とその並び

  • 1,4,6 : 1頁と4頁と6頁の順
  • 5-10 : 5頁から10頁の並び
    10頁のPDFなら「 5,6,7,8,9,10 」と同じ意味。
  • 9-2 : 9頁から2頁の逆順の並び
    10頁のPDFなら「 9,8,7,6,5,4,3,2 」と同じ意味。
  • z-1 : 最後の頁から1頁の逆順の並び。
    「z」は最終ページの意味。
    5頁のPDFなら「 5,4,3,2,1 」と同じ意味。
  • 省略 : 1-z の指定と同じ。全頁です。
  • r3-r1:最終頁の前3頁目から最終頁までの3頁
    「r」は文書の最後から数えるの意味。
    5頁のPDFなら「 3-5 」又は「 3,4,5 」と同じ意味。
  • r1-r3:最終頁から最終頁の前3頁目までの3頁
    5頁のPDFなら「 5-3 」又は「 5,4,3 」と同じ意味。

マージ

マージのサンプルです。入力ファイルを色で分けています。

例:in-A.pdf の1頁から3頁の後に、in-B.pdf の2頁から3頁を結合して、out.pdf へ出力します。最初に --empty が指定されているので、文書のタイトルなどのメタデータやプロパティの非ページデータはout.pdf へ出力しません。

>qpdf --empty --pages in-A.pdf 1-3 in-B.pdf 2-3 -- out.pdf

例:同じファイルを複数回使えます。1頁から3頁、その後に10頁から逆に5頁までをマージしてout.pdf へ出力します。

>qpdf --empty --pages in-A.pdf 1-3 in-A.pdf 10-5 -- out.pdf

例:ユーザーパスワード付きのPDFの場合はファイルの後に「--password=password」オプションを追加します。

>qpdf --empty --pages in-A.pdf 1-3 in-C.pdf --password=abcdefg 10-5 -- out.pdf

例:同じ入力ファイルが複数有り、パスワード時の場合は最初のだけ「--password=password」オプションを追加します。なお出力ファイル out.pdf のタイトルなどのメタデータと文書のプロパティ等の非ページデータは in-A.pdf のがコピーされます。

>qpdf in-A.pdf --pages in-C.pdf --password=abcdefg 1-3 in-C.pdf? 10-5 -- out.pdf

高度なマージ

以下の図で説明します。

a.pdf が3頁、b.pdfが2頁とします。通常のマージは

>qpdf --empty --pages a.pdf b.pdf -- out.pdf

で、a.pdf の全頁の後にb.pdfの全頁が追加されます。

頁の順に集めたい時に --collate オプションを前に追加します。

>qpdf --collate --empty --pages a.pdf b.pdf -- out.pdf

分割

実際は上記マージの変形です。入力PDFファイルを1つだけにします。

例:in.pdf の1頁から3頁を抽出して out.pdf へ出力します。この時に --empty が指定されてるので文書のプロパティやメタ情報の非ページデータはout.pdf には出力されません。

>qpdf --empty --pages in.pdf 1-3 -- out.pdf

例:例:in-A.pdf の1頁から3頁を抽出して out.pdf へ出力します。この時にin-B.pdf? の文書のプロパティやメタ情報の非ページデータのみがout.pdf には出力されます。in-A.pdf の非ページデータはコピーされません。

>qpdf in-B.pdf --pages in-A.pdf 1-3 -- out.pdf

注意事項

入力PDFのしおりと添付ファイルは out.pdf に出力されません。これはテスト結果から出した情報です。

 

Advanced Parsing Options:高度な解析オプション

qpdfがPDFファイルを読み取る方法の側面を制御します。破損したファイルを扱っている人には役に立ちます。

--suppress-recovery

Qpdf が破損したファイルを回復しようとする試みを防ぎます。

--ignore-xref-streams

Qpdf が任意の相互参照(クロスリファレンス)ストリームを無視するように指示します。

 

Advanced Transformation Options:高度な変換オプション

ここからの変換オプションは Qpdf が出力ファイルを作成する方法についての細かい部分をコントロールします。主にPDFファイル形式に精通しているか、PDF関連の開発者である人々に有効な情報です。

--stream-data=option

ストリームデータの変換を制御します。以下はoption の値です。

  • compress : 可能な場合はストリームデータを再圧縮 (デフォルト)
  • preserve : すべてのストリームデータをそのままで残します
  • uncompress : 可能な場合はストリーム データを解凍します

--compress-streams=[yn]

出力時にストリームを圧縮するかどうかを制御します。

  • y:圧縮する。
  • n:何もしない。

※7.0.0のテストで圧縮効果は確認できなかった。

--decode-level=option

ストリームのフィルタリングする方法を制御します。Optionは

  • none : デコードしない。
  • generalized : LZW、Flate、およびASCIIエンコーディングフィルタを含む一般化されたフィルタで圧縮されたストリームをデコードします。
  • specialized :?RunLengthを含む可逆特殊フィルターでストリームをデコードします。
  • all : DCT(JPEG)などの非可逆フィルタでストリームをデコードします。

--normalize-content=[yn]

コンテンツストリームの正規化を有効または無効にします。

--object-streams=mode

オブジェクトストリームの処理を制御します。以下はmode の値です。

  • preserve : 元のオブジェクト ストリーム (既定値) を維持
  • disable : 任意のオブジェクトストリームを書かない
  • generate : 可能な限りオブジェクトストリームを使用

--preserve-unreferenced

参照されていないオブジェクトを保存します。

--newline-before-endstream

終了ストリーム (endstream) の前に改行を入れます。

--preserve-unreferenced-resources

未参照のページリソースを保存します。

--newline-before-endstream

終了ストリーム (endstream) の前に常に改行を入れます。

--coalesce-contents

全てのページのコンテンツを強制的に単一のストリームにします。

--flatten-annotations=option

フォームフィールドなどの注釈を統合します。optionは以下を指定します。

  • all:非表示または非表示としてマークされていない全ての注釈を含める。
  • print:印刷のみ表示としてマークされた注釈のみ含める。
  • screen:画面に表示されないようにするための注釈は省略する。

※使い方が分からない。ので説明もイマイチ。

--generate-appearances

フォームフィールドの外観ストリームを生成する

--optimize-images

DCT(JPEG)で画像を圧縮する

--oi-min-width=w

幅が w 以下の画像は最適化しません。 デフォルトは128です。最小値を指定しないときは w に 0 をセットします。

--oi-min-height=h

高さが h 以下の画像は最適化しません。デフォルトは128です。

--oi-min-area=a

ピクセル数がデフォルトの16,384未満の画像は最適化しません。最小値を指定しないときは a に 0 をセットします。

--externalize-inline-images

インライン画像を通常の画像に変換します。 デフォルトでは、1,024バイト以上の画像は外部化されています。

インライン画像:1つのHTMLファイルに画像も埋め込むことが出来ます。PDFもPDFファイル内に画像を埋め込むことが出来ます。その画像の事です。

※考えた結果にならない。コマンドが悪いのか。例「qpdf in.pdf --externalize-inline-images -- out.pdf」

--ii-min-bytes=bytes

通常の画像に変換するインライン画像の最小サイズを指定します。

※考えた結果にならない。理解出来てないのかもしれない。

--keep-inline-images

画像の最適化からインライン画像を除外します。

--qdf

QDFモードをオンにします。詳細は下記の「QDFモード」を参照してください。

--linearize-pass1=file

デバッグ用にリニアライズ(Web用の最適化)されたファイルの中間パスを書き込みます。

--min-version=version

出力ファイルに最小のPDF バージョンを設定します。versionの説明はこの後で。

PDFの出力ファイルに最小のPDFバージョンを設定すると、後でPDFバージョンを上げることができますが、それを下げることは(基本的に)ありません。

--force-version=version

出力ファイルのPDF バージョンを強制で設定します。

上記2つのオプションの version で指定するPDF バージョンの指定方法は

  • 1.6:PDFバージョン1.6
  • 1.7.3:PDFバージョン1.7の拡張レベル(Adobe Extension Level)3

※PDF バージョンについてはコチラ「PDF のバージョンとは」も参照。

PDFの出力ファイルのPDFバージョンで強制設定の機能を利用すると、実際にファイルの内容から許可されているよりも低い値にPDFバージョンを設定することができます。ファイルは間違いなくPDFバージョンでサポートされていない機能が含まれていないことがわかっている場合のみ、またはファイルを開くのに他の可能な方法を持っていない場合にのみ、これを行ってください。

 

QDFモード

デフォルトでは、コンテンツ正規化がオンになり、ストリームデータを解凍するように設定されています。つまりPDFの中身をテキストエディタで開くことが出来るようになります(メモ帳は無理かも)。この時にオーナーパスワードで設定されたセキュリティ設定(印刷の許可、変更の許可等)は解除されます。

例:in.pdf を入力してテキストエディタで開くことが出来る qdf ファイルにout.qdf を出力します。

>qpdf --qdf in.pdf out.qdf

この後でPDF独自の内部の位置情報が壊れるはずなので、以下で修正します。なお、以下のfix-qdf ファイルはPeralがOSにインストールされてないと動作しません。

>fix-qdf < out.qdf > out-A.pdf

 

試験、検査、およびデバッグ・オプション

これ以降の操作ではPDF文書を開く時に必要なユーザーパスワードは不要です。ユーザーパスワードが設定されていても、意識しなくて処理が出来ます。Qpdf の大きな特徴の1つです。

--deterministic-id

deterministic(確定的) /IDを生成します。

--static-id

静的 /IDを生成します。テストだけのために!

--static-aes-iv

AES-CBCのための静的な初期化ベクトルを使用します。これはセキュリティで保護されていないオプションです!テスト専用!

--no-original-object-ids

「qdf モード」で元のオブジェクトID のコメントを非表示します。

--show-encryption

暗号化パラメーターを表示します。

>qpdf.exe passwordcopy.pdf --show-encryption
R = 4
P = -3904
User password =
extract for accessibility: not allowed
extract for any purpose: not allowed
print low resolution: not allowed
print high resolution: not allowed
modify document assembly: not allowed
modify forms: not allowed
modify annotations: not allowed
modify other: not allowed
modify anything: not allowed
stream encryption method: AESv2
string encryption method: AESv2
file encryption method: AESv2
 
>

--show-encryption-key

暗号化を表示する場合は実際の鍵を明らかにします。

--check-linearization

ファイルの整合性とリニアライズ(Web用最適化)の状態を確認します。

--show-linearization

リニアライズ(Web最適化)データのチェックと表示をします。

--show-xref

相互参照(クロスリファレンス)表の内容を表示します。

--show-object=trailer | obj[,gen]

指定されたオブジェクトの内容を表示します。

--raw-stream-data

オブジェクトのコンテンツの代わりに生ストリーム データを表示します。

--filtered-stream-data

オブジェクトコンテンツではなくフィルター選択されたストリームデータを表示します。

--show-npages

ファイル内のページ数を表示します。

--show-pages

各ページのオブジェクト/世代番号を表示します。

--with-images

各ページ上の画像のためのオブジェクトIDを表示します。

--check

ファイル構造 + 暗号化、リニアライズ(Web用最適化)をチェックします。

 

JSON

PDFファイル内の非コンテンツデータのJSON表現を生成できます。ストリームのコンテンツを除くPDFファイル内のすべてのオブジェクトのJSON形式のダンプが含まれています。JSON表現は与えられたPDFファイルの構造を詳細に見ることを非常に容易にします。

Qpdfライブラリを直接呼び出すこともリンクすることもできない言語で、PDFファイルを操作するための方法が提供できます。 ストリームデータは、他のQpdfコマンドラインオプションを使用してPDFファイルから抽出できることに注意してください。

Qpdfによって生成されたJSON表現は、C ++ APIの呼び出しに苦労している他のプログラミング言語からのQpdfの処理を容易にするように設計されています。フォーマットの詳細については Qpdf --json-help を実行してください。

詳細はコチラ(英語)を参照してください。

※Qpdf バージョン8.3.0以降での新機能。

--json

JSON表現を生成します。

>qpdf --json a.pdf > a.json

--json-help

JSON表現のフォーマットの詳細を表示するヘルプです。

--json-key=key

指定された key のみを含むようにJSON構造を整理します。存在しない場合は全てのキーが表示されます。

ただし、間違ったキーを入力すると

>qpdf --json-key=abc a.pdf a-abc.json

qpdf: --json-key must be given as --json-key={acroform,objects,outlines,pagelabels,pages}

Usage: qpdf [options] infile outfile

For detailed help, run qpdf --help
>qpdf --json-key=pagelabels a.pdf a-pagelabels.json

keyは「acroform , objects , outlines , pagelabels , pages」の中から選ぶみたいです。

--json-object=trailer|[obj,gen]

指定されたオブジェクトのみをJSONの "objects"セクションに含めます。存在しない場合は全てのオブジェクトが表示されます。

 

注釈

一般的な注釈の追加や更新ではなく、非常に特殊な処理が提供しています。

サイト管理者が内容を理解できる状態には至っていません。詳細はコチラ(PDF 英語)を御覧ください。

※バージョン 8.3.0 からの新機能。これに関する情報はマニュアル以外は存在しません。

 

終了コード

ヘルプやマニュアルには記述は無いですが、ChangeLog に記載があるのでそれを紹介します。

  • 0 : 正常終了
  • 2 : エラー
  • 3 : 警告 (エラーは無しの場合)

 

Qpdf を使ったVBA関数

特定の処理をQpdf で行うVBA関数です。サンプル付きです。

申し訳ないですが Qpdfのバージョンアップに以下のサンプルが追いついていません。関数内の引数でエラーになる場合も有ります。

  1. Qpdf? : PDFにセキュリティを設定するVBA関数
  2. Qpdf? : PDFのセキュリティ設定を取得するVBA関数
  3. Qpdf? : PDFのパスワードとセキュリティ設定を解除するVBA関数
  4. Qpdf? : PDFにパスワードとセキュリティ設定をコピーするVBA関数

 

Qpdf を起動するサンプル

上記以外の処理をQpdf でさせるサンプルです。オプション等の設定、エラーの判定は全て自分で行う必要が有ります。

実際にコマンドラインを実行するVBA関数「 RunCommandLineEX 」はコチラをご使用ください。

例:IN.pdf のリニアライズ(Web最適化)チェックを行います。

DownloadcLine-qpdfDemo.xls

 

備考

  • PDF全体を圧縮する最適化と、Web用の最適化は異なります。Web用の最適化はブラウザで最初のページの表示速度を上げるための最適化を意味します。圧縮ではありません。このWeb用の最適化を「リニアライズ」と通常は言います。
  • ユーザーパスワードとオーナーパスワードの違い。
    ユーザーパスワードとは、PDF文書を開く時に必要なパスワード。
    オーナーパスワードとは、PDF文書に印刷は不可、変更の不可、コピーの不可などのセキュリティを設定する時に必要なパスワードです。
  • --decrypt で文書プロパティのセキュリティ設定を解除して、別のPDFで出力できます。入力PDFファイルの解除は出来ません。
  • zlib-flate.exe は qpdf.exe から使用されるツールみたいです。付属PDF説明書にもzlib-flate.exe に関する説明は存在しません。

 

 

< TOPへ戻る >

VBA(Excel)からAcrobat経由でPDFをプログラミング操作(OLE:IAC)する