CPDF:オペレーションの解説

TOP > Coherent PDF Command Line Tools (CPDF)


Love ....


ほら、外へ出かけよう。

目次

  • 概要
  • オペレーションの解説 ※当ページ
  • smpdf.exe の解説

 

概要

CPDFの概要はココで解説してます。このページは全てのオペレーション部分を解説します。公式サイトのマニュアルからも抜粋しています。

CPDFの 公式マニュアルは HTML と PDF で公開されています。しかし残念ですが説明が不足してる部分も少し有ります。その部分は出来るだけ動作検証して掲載していくつもりです。

 

お願い

使用を検討する時は、CPDFの公式サイトで公開している HTML 又は PDF のマニュアルも御覧ください。それほど難しい英語では無いです。

当サイトは全てを解説していません。

 

基本形式

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

cpdf [<operation> [<arguments>]] in.pdf [<range>] -o out.pdf

  • <operation>:オペレーション(操作)
    複数指定が可能。但し関連する物のみ。
  • <arguments>:必要ならば前のオペレーションに続く引数
  • <input files>:入力ファイル名
    拡張子がpdfのファイル(例: in.pdf )を入力ファイルと判断します。よって場所は最後でなくても構わない。
    拡張子が「.pdf」で無い時は入力ファイル名の前に -i オペレーションを付ける必要が有ります(例: -i abc )。これは入力ファイルか、又はオペレーション類かの判断をする為と思われます。
  • [<range>]:入力ファイルのページ範囲指定
  • -o <output file>:出力ファイル名
    -o を先に記述します。-o は必須です。

ファイル名を絶対パスで指定する時で、途中に空白文字がある時はパスの前後をダブルクオーテーションでくくります。(例:"d:¥abc  EF¥in.pdf" )

それと

  • 区切りは半角のスペース。
  • 制御ファイル( -args )を使う時は改行も区切りと扱われます。
  • -args オペレーションは -help に表示されないが公式サイトには存在します。
  • 入力PDFファイルと出力PDFファイルが同じでも構わないです。
  • 「※アニュアルに記載無し。」と書いた部分は公開マニュアルに無く、当サイトがテスト結果から出した内容です。

実際は入力ファイル、オペレーション、出力ファイルの位置は、一部で条件は有りますがどこでも構いません。出来れば AND オペレーションの事を考えて以下の順を推奨します。

cpdf in.pdf [<range>] [<operation> [<arguments>]] -o out.pdf

例:in.pdf の1頁から3頁までのページに "No Copy" のテキストを貼り付けて、out.pdf で出力します。

>cpdf in.pdf 1-3 -add-text "No Copy" -o out.pdf
 


 

 

オペレーションの解説

CPDF -help で表示されるオペレーション(操作)、又は引数等の一覧を中心にした解説です。使用時の機能、説明と例も付けています。<メモ>は気づいた付加情報として入れています。

 

-version

  • 機能:CPDFのバージョン情報を表示します。

>cpdf -version
cpdf Version 2.2 (patchlevel 1, build of 1st September 2017)

 

-o <ファイル名>

  • 機能:出力ファイルを設定します。
    上書きされます。

例:input.pdf を読み込んで out.pdf に出力します。

>cpdf input.pdf -o out.pdf

 

-i <拡張子が無いファイル名>

  • 機能:入力ファイルでピリオドを含む拡張子が無いファイルを指定する時に使います。
  • 補足:CPDFは拡張子(.pdf)が有れば -i オペレーション無しで入力ファイルと判断します。
    拡張子が無い場合は「.pdf」が有ると見なす訳では無いです。実際に拡張子が無いファイルの事です。

例:拡張子が無い input ファイルを読み込んで out.pdf に出力します。

>cpdf -i input -o out.pdf

例:拡張子が有る input.pdf ファイルを読み込んで out.pdf に出力します。-i オペレーションは不要です。付けてもエラーにはなりません。分かりやすくするために付けるのも一つです。

>cpdf -i input.pdf -o out.pdf

 

-idir <フォルダ>

  • 機能:-idirオペレーションで指定したファイルのフォルダ全体が追加されます(コマンドが複数のファイルをサポートする場合)。
    指定のフォルダは全てPDFファイルで有る必要が有ります。PDFファイル以外が含まれるとエラーで処理は中断します。

例:カレントフォルダ「.」のPDFをマージして out.pdf で出力します。※アニュアルに記載無し。

>cpdf -merge -idir . -o out.pdf

例:カレントフォルダに有る Test1 フォルダのPDFをマージして、カレントフォルダに out.pdf で出力します。

>cpdf -merge -idir test1 -o out.pdf

例:フルパスで指定したフォルダ「D:¥data」に有るPDFをマージして、カレントフォルダに out.pdf で出力します。※アニュアルに記載無し。

>cpdf -merge -idir D:¥data -o out2.pdf

 

-stdin

  • 機能:標準入力から読み込みます。
    次の -stdout を参照して下さい。

 

-stdout

  • 機能:標準出力へ出力します。
    処理結果の出力と入力が有ると仮定しています。 stdin(標準入力)からの入力を読み込んだり、stdout(標準出力)に出力を書き込んだりするのが便利なことがあります。中間ファイルを使用せずにデータ(ファイル)を渡すことです。標準入力から読み込むには-stdinを使用し、標準入力に書き込むには-stdoutを使用します。
  • 注意:前に「-o」が不要な事に注意してください。付けると予期しない状態になります。

例:in.pdfを逆から読み込んで標準出力(-stdout)します。その結果(-stdin)の1頁から5頁を読み込んで、また標準出力(-stdout)します。その結果(-stdin)を逆から読み込んでout.pdf へ出力します。「|」はMS DOSでコマンドの連結を意味します。

>cpdf in.pdf reverse -stdout | cpdf -stdin 1-5 -stdout | cpdf -stdin reverse -o out.pdf

上記は下記と同じ意味です。見比べて下さい。

cpdf in.pdf reverse -o xx1.pdf
cpdf xx1.pdf 1-5 -o xx2.pdf
cpdf xx2.pdf reverse -o out.pdf
del xx1.pdf,xx2.pdf

 

-stdin-user <password>

  • 機能:ユーザーパスワードを stdin(標準入力)から取得します。

例:※使用例が浮かばない。

 

-stdin-owner <password>

  • 機能:オーナーパスワードを stdin(標準入力)から取得します。

例:※使用例が浮かばない。

 

-range

  • 機能:明示的にページの範囲を指定します。
  • 参照:入力範囲

例:in.pdfとin2.pdfをマージし、更に2頁から4頁にテキスト”Label”を追加して、out.pdfへ書き込みます。

>cpdf -merge in.pdf in2.pdf AND -range 2-4 -add-text "Label" -o out.pdf

AND はCPDFのオペレーションです。機能の連結を行います。

 

-change-id

  • 機能:ファイルの ID タグを変更します。
    PDFファイルにはワークフローシステムによってファイルを一意に識別するために使用される(2つの部分からなる)IDが含まれています。このオペレーションで出力ファイルに新しいIDが作成されます。
  • 形式:※他のオペレーションと併用
cpdf -change-id

例:in.pdf の ID タグを変更して out.pdf へ書き出します。

>cpdf -change-id in.pdf -o out.pdf

 

-no-preserve-objstm

  • 機能:オブジェクトストリームを保存しない。
    CPDFはデフォルトではオブジェクトファイルを入力ファイルに保存し、それ以上は作成しません。
  • 形式:※他のオペレーションと併用

例:既存のオブジェクトストリームをout.pdf に保持しないようにします。

>cpdf -no-preserve-objstm in.pdf -o out.pdf

 

-create-objstm

  • 機能:オブジェクトストリームを新たに作成します。
    新しいオブジェクトストリームが存在しない場合は作成するか、既存のオブジェクトストリームを拡張するには、-create-objstm を指定します。
  • 形式:※他のオペレーションと併用

>cpdf -create-objstm in.pdf -o out.pdf

  • 補足:まったく新しいオブジェクトストリームを作成するには、両方のオペレーションを一緒に使用します。
    オブジェクトストリームで記述されたファイルは、-keep-versionが使用されていない限り、PDF 1.5以上に設定されます。

>cpdf -create-objstm -no-preserve-objstm in.pdf -o out.pdf

 

-keep-version

  • 機能:PDFのバージョン番号を変更しません。
  • 形式:※他のオペレーションと併用
  • 備考:PDF 1.2 、PDF 1.3 でテストしました。確かに変更しません。

例:in.pdf のPDFバージョン番号を変更せずに out.pdf へ書き出します。

>cpdf -keep-version in.pdf -o out.pdf

 

-l

  • 機能:出力ファイルをリニアライズ(Web用最適化)します。
  • 形式:※他のオペレーションと併用
  • 補足:PDF全体を圧縮する最適化では無く、Web用に表示速度を上げる為だけの最適化で有ることに注意してください。通常はこのWeb用最適化のことを「リニアライズ」と言います。

例:in.pdf をWeb用に最適化して out.pdf へ書き出します。

>cpdf -l in.pdf -o out.pdf

  • 注意:これはCPDFの商用バージョンで提供されている外部プログラムcpdflinが別途必要です。CPDFの付属のインストールマニュアルに記載されているとおりにインストールする必要があります。cpdflinをインストールできない場合は、cpdfにその場所を知らせるために-cpdflin オペレーションを使用する必要があります。
  • お知らせ:上記の注意はCPDFのマニュアルの記述内容です。しかしコチラで調査したところ cpdflin.exe といソフトはPDFのセキュリティ関連を主に扱うフリーソフトQpdf と同じソフトみたいです。「cpdflin -help」を実行したら内容はQpdfでした。
    それで以下を実行してみました。cpdflinをQpdfに置き換えています。問題無く、-l オペレーションが動作しました。Qpdf はVersion 2.0 of the Artistic License  というライセンスで公開されています。

例:in.pdf をリニアライズして、out.pdf へ書き出します。Qpdf.exeをcpdflin.exeの替わりにしています。(イイノカナ?

>cpdf -l -cpdflin D:¥Qpdf-7.0.0¥qpdf.exe in.pdf -o out.pdf

 

-keep-l

  • 機能:既に入力ファイルがリニアライズ(Web用に最適化)されていて、その状態を維持するのに -keep-l を使用します。
  • 形式:※他のオペレーションと併用

例:in.pdf のリニアライズを維持して、out.pdf へ書き出します。

>cpdf -keep-l in.pdf -o out.pdf

 

-compress

  • 機能:メタデータは除いたストリームを圧縮します。
  • 形式:※他のオペレーションと併用

例:in.pdf のメタデータは除いたストリームを圧縮して、out.pdf へ書き出します。

>cpdf -compress in.pdf -o out.pdf

 

-cpdflin <path>

  • 機能:'cpdflin'のインストール場所を指定します。
  • 参照:詳細は -l オペレーションを参照。

例:cpdflinへのパス D:¥cpdflin¥cpdflin.exe を指定して、in.pdf をリニアライズし、out.pdf へ書き出します。

>cpdf -l -cpdflin D:¥cpdflin¥cpdflin.exe in.pdf -o out.pdf

 

-recrypt

  • 機能:入力ファイルが暗号化されてれば、書き出し時にも同じ暗号化を維持します。
  • 形式:※他のオペレーションと併用

例:ユーザーパスワードが hoge の in.pdf を書き出す時に同じ暗号化(ユーザーパスワード)を維持したままで out.pdf を書き出します。

>cpdf in.pdf user=hoge -recrypt -o out.pdf

 

-raw

  • 機能:テキストの後処理(エンコード処理)をしません。
  • 形式:※他のオペレーションと併用
  • 補足:Unicode UTF8を使用するには-utf8を、上位文字を削除して7ビットASCIIに変換するには-strippedを、それ以外の処理しない場合は-rawを追加します。

例:なし

 

-stripped

  • 機能:テキストを単純なストリッピングでASCIIに処理します。
    テキスト処理はこれがデフォルトです。
  • 形式:※他のオペレーションと併用

例:なし

 

-utf8

  • 機能:UTF8 Unicodeに変換してテキストを処理します。
  • 補足:日本語を扱う場合はこれが必要です。しかし指定しても日本語が処理できない時も有るのでご注意ください。
  • 形式:※他のオペレーションと併用

例:in.pdfファイル上のしおりをsiori.txtテキストファイルへ出力します。テキストファイルはDOSの「>」リダイレクトを使います。しおりには日本語が有るので-utf8オペレーションが必要です。

>cpdf -utf8 -list-bookmarks in.pdf > siori.txt

 

-fast

  • 機能:不正な形式、問題の有る形式のPDFファイルを正します。
    何らかのエラーが出た時に試してみるオペレーションです。
  • 形式:※他のオペレーションと併用

例:

>cpdf -fast in.pdf -o out.pdf

 

-control <text file name>

  • 機能:オペレーション部分をテキストファイルに入れて使用します。
    -control オペレーション部分をテキストファイルに入れて使用します。
    但し、使用は非推奨です。代わりに-argsを使用して下さい。
  • 形式:cpdf -args <text file name>

例:option1.txt から各種オペレーションと処理の情報を読み込んでPDFを処理します。

>cpdf -control option1.txt

 

-merge <...>

  • 機能:複数のファイルを1つにマージします。
  • 補足:マージは前から順に行われます。-mergeオペレーションはデフォルトなので指定しなくても複数の入力ファイルを指定した時はマージ扱いをします。
    マージではしおり、Named Destination情報、および名前ディクショナリが維持されます。マージできないフォームやその他のオブジェクトはそのフィーチャを最初に表示したドキュメントからのものであれば保持されます。
  • 形式:cpdf -merge in1.pdf [<range>] in2.pdf [<range>] [<more names/ranges>] [-retain-numbering] [-remove-duplicate-fonts] -o out.pdf
  • 参照:range

例:in-a.pdf の1頁目、in-b.pdf の2頁目から最後までをマージし、out.pdf で書き出します。

>cpdf -merge in-a.pdf 1 in-b.pdf 2-end -o out.pdf

 

-retain-numbering

  • 機能:マージ時にページ番号を変更しません。
  • 補足:出力ページの番号を1から変更するのではなく、各ドキュメントのPDFページ番号ラベルがそのまま保持されます。
  • 形式:cpdf -merge in1.pdf [<range>] in2.pdf [<range>] [<more names/ranges>] [-retain-numbering] [-remove-duplicate-fonts] -o out.pdf
  • 参照:range
  • 検証:テストでは該当するテストPDFが無いため、未確認です。

例:in-a.pdf の1頁目、in-b.pdf の1頁目から最後までをマージし、out.pdf で書き出します。out.pdf へ書き出し時にPDFページ番号ラベルは変更されません。

>cpdf -retain-numbering in-a.pdf 1 in-b.pdf 1-end -o out.pdf

ここで言っているページ番号ラベルがページラベルの事ならば、ここのオペレーションを使う機会は無いでしょう。

 

-remove-duplicate-fonts

  • 機能:マージ時に重複フォントを削除します。
    複数の入力で使用されるフォントが出力時に1つだけになります。
  • 形式:cpdf -merge in1.pdf [<range>] in2.pdf [<range>] [<more names/ranges>] [-retain-numbering] [-remove-duplicate-fonts] -o out.pdf
  • 参照:range
  • 検証:テストでは文書プロパティに重複フォントは表示されません。デフォルトが-remove-duplicate-fonts 指定か、内部での重複フォントの削除を意味してるのか、は不明です。

例:in-a.pdf 、in-b.pdf をマージし、out.pdf で書き出します。out.pdf へ書き出し時に重複フォントを削除します。

>cpdf -remove-duplicate-fonts in-a.pdf in-b.pdf -o out.pdf

 

-split

  • 機能:ファイルを個々のページに分割します。
    出力ファイル名の形式を指定する必要が有ります。オペレーションの-chunkオペレーションを使用すると、各出力ファイルに書き込まれるページ数を設定できます。
  • 補足:出力ファイル名には以下の書式演算子を指定する事が出来ます。
    •  %、%%、%%%:パーセント記号の数にパディングされたシーケンス番号
    • @F:拡張子のないオリジナルのファイル名
    • @N:パディングゼロのないシーケンス番号
    • @S:開始ページ
    • @E:終了ページ
    • @B:このページのブックマーク(しおり)名
  • 形式:cpdf -split in.pdf -o <format> [-chunk <chunksize>]
  • 注意1:出力ファイルの形式が無指定の場合(out.pdf)はフリーズします。エラーにはなりません。また処理時間はかなり掛かります。
  • 注意2:入力ファイルに範囲を指定してもエラーにはなりません。範囲は無視されるだけです。
    >cpdf -split in.pdf 1-3 -o out%%%.pdf

例:in.pdf を1頁単位に分割します。書き出しファイルは out001.pdf、out002.pdf、out003.pdf となります。

>cpdf -split in.pdf -o out%%%.pdf

例:in.pdf を5頁単位に分割します。書き出しファイルは out001.pdf、out002.pdf、out003.pdf となります。

>cpdf -split in.pdf -chunk 5 -o out%%%.pdf

 

-chunk <頁数>

  • 機能:-split オペレーションの書き出しページ数を設定します。
    デフォルトは1。
  • 形式:※-split 参照

例:in.pdf を5頁単位に分割します。書き出しファイルは out001.pdf、out002.pdf、out003.pdf となります。

>cpdf -split in.pdf -chunk 5 -o out%%%.pdf

 

-split-bookmarks <しおりの階層レベル>

  • 機能:特定のレベルのしおりでファイルを分割します。
    ドキュメントのしおりが暗示するページ範囲に従って、PDFファイルを複数の部分に分割します。 これらの部分は指定された形式から生成された名前でファイルに書き込まれます。
  • レベル 0はトップレベルのしおり、レベル1は次のレベル(サブしおり)などを示します。 したがって -split-bookmarks 1 はレベル0とレベル1境界でブレークを作成します。
    1つのページに多くのしおりが存在することがあります(たとえば段落がしおりに設定されている場合や、1ページに2つのサブしおりがある場合など)。 -split-bookmarksによって計算された分割は各ページが出力ファイルの1つにのみ表示されるようにします。
  • しおりのテキストに展開する演算子@Bを含め、上記の@演算子を使用することは可能です。
  • 名前に使用されるしおりテキストは、Unicodeから7ビットASCIIに変換され、ASCIIコードが32未満の文字に加えて、次の文字も削除されます。
  • 形式:cpdf -split-bookmarks <level> in.pdf -o <format>
  • 備考:試せば機能が判ります。

例:in.pdfをTOPレベルのしおりで分割し、out001.pdf、out002.pdf、out003.pdf、・・で書き出します。

>cpdf -split-bookmarks 0 in.pdf -o out%%%.pdf

 

-scale-page <<scale x> <scale y>>

  • 機能:ページを拡大又は縮小します。
  • 補足:指定されたXとYの因子によって範囲内の各ページを拡大又は縮小します。ページの内容(コンテンツ)とページのサイズの両方を調整します。 また任意のクロップボックスや他のボックス(アートボックス、トリムボックスなど)を拡大/縮小します。 これらのコマンドのいくつかと同様にX軸とY軸が何であるかを考慮するときはページの回転を考慮に入れてください。
  • 形式:cpdf -scale-page "<scale x> <scale y>" in.pdf [] -o out.pdf
    • <scale x>:横方向への倍率を指定。2は2倍。1はそのまま。
    • <scale y>:縦方向への倍率を指定。2は2倍。1はそのまま。
  • 参照:3.2 Scale Pagesrange
  • 検証:A3、A4、A5サイズへの拡大、縮小は -scale-to-fit を使用した方が確実です。

例:in.pdf を読み込んでA4ページを2倍のA2に変換します。結果は out.pdf へ書き出します。※マニュアルの説明「A4からA3へ変換」は間違い。

>cpdf -scale-page "2 2" in.pdf -o out.pdf

 

 

<メモ>

ページサイズの指定は、例えばA4縦は "210mm 197mm"と書きますが、 a4portrait と書くことも出来ます。 CPDFでサポートされているページサイズの一覧です。
 
a0portrait(A0縦)、a1portrait(A1縦)、a2portrait(A2縦)、a3portrait(A3縦)、a4portrait(A4縦)、a5portrait(A5縦)、a6portrait(A6縦)、a7portrait(A7縦)、a8portrait(A8縦)、a9portrait(A9縦)、a10portrait(A10縦)
a0landscape(A0横)、a1landscape(A1横)、a2landscape(A2横)、a3landscape(A3横)、a4landscape(A4横)、a5landscape(A5横)、a6landscape(A6横)、a7landscape(A7横)、a8landscape(A8横)、a9landscape(A9横)、a10landscape(A10横)、
usletterportrait(USレター縦)、usletterlandscape(USレター横)、uslegalportrait(USリーガル縦)、uslegallandscap(USリーガル横)
 
パンチミスはエラーになります。数値を書くより判りやすいです。

 

-scale-to-fit <サイズ>

  • 機能:ページサイズ(x、y)に比例して拡大縮小します。
    指定されたページサイズに合うように範囲内の各ページを拡大/縮小し、縦横比を保持し、結果を中央に配置します。
  • 形式:cpdf -scale-to-fit "<x size> <y size>" [-scale-to-fit-scale ] in.pdf [] -o out.pdf
    • <x size> <y size>:A4縦は"297mm 210mm" 又は a4portrait
  • 参照:3.1 Page Sizesrange

例:ページをA4 横 に合わせて拡大/縮小して、out.pdfへ書き出します。

>cpdf -scale-to-fit "297mm 210mm" in.pdf -o out.pdf

例:ページをA4 縦 に合わせて拡大/縮小して、out.pdfへ書き出します。
>cpdf -scale-to-fit a4portrait in.pdf -o out.pdf
 

 

<メモ>

テキストを表示する時の位置の基準(ライン)を何処にするかを指定できます。 

  • ベースライン :
    テキストが表示される下の部分を基準の位置にします。
    赤い線の部分がその基準でベースラインと言います。
    デフォルトです。
    ベースライン:baseline
  • ミッドライン :
    テキストが表示される中心の部分を基準の位置にします。
    赤い線の部分がその基準でミッドラインと言います。
    -midline オペレーションを追加するとミッドラインでの扱いになります。
    ミッドライン:midline
  • トップライン :
    テキストが表示される上の部分を基準の位置にします。
    赤い線の部分がその基準でトップラインと言います。
    -topline オペレーションを追加するとトップラインでの扱いになります。
    トップライン:topline

上記の赤い線の位置は3つとも同じです。よってテキストがどこ(ライン)を基準にするかによって、テキストの位置が微妙に変わることに注意して下さい。通常はデフォルトのベールラインで問題無いと思っています。

<上記のテストコマンドのサンプル>
>cpdf -add-text "HogeHoge" -top 50 -topline in.pdf AND -add-rectangle "50 1" -color red -top 50 -o out.pdf

 

 

<メモ>
 
絶対位置を指定:<position>
 
※赤い線が縦横クロスした箇所が ページ左下端を基準した右へ100pt、上へ50pt の位置です。

 

  • -pos-center "100 50"
    テキストのベースラインの中心を ”100pt、50pt” に位置します。
    -pos-center
  • -pos-left "100 50"
    テキストのベースラインの左端を ”100pt、50pt” に位置します。
    -pos-left
  • -pos-right "100 50"
    テキストのベースラインの右端を ”100pt、50pt” に位置します。
    -pos-right

特定の設定で位置を指定:<position>

基点とする位置(上下左右)が各オペレーションで変わります。

  • -top  100
    ベージ上部の中央から下へ100ポイントの中央の位置に表示します。
  • -topleft  100
    ページ上部から下へ、更にページ左端から右へ同じ100ポイントの位置に表示します。
  • -topright  100
    ページ上部から下へ、更にページ右端から左へ同じ100ポイントの位置に表示します。
  • -left  100
    ベージ左端中央から右へ100ポイントの位置に表示します。
  • -bottomleft  100
    ページ下部から上へ、更にページ左端から右へ同じ100ポイントの位置に表示します。
  • -bottom  100
    ベージ下部の中央から上へ100ポイントの中央の位置に表示します。
  • -bottomright  100
    ページ下部から上へ、更にページ右端から左へ同じ100ポイントの位置に表示します。
  • -right  100
    ベージ右端中央から左へ100ポイントの位置に表示します。
  • -diagonal
    テキストをページ中央に左下から斜め上(対角線)の位置に表示します。
  • -reverse-diagonal
    テキストをページ中央に左上から斜め下(対角線)の位置に表示します。
  • -center
    ページの中央の位置に表示します。

各オペレーションの詳細はこれ以降に別途解説しています。

 

-scale-contents <係数> <position>

  • 機能:指定された係数でコンテンツを拡大又は縮小します。
    クロップボックスを中心(または、存在しない場合はメディアボックス)にしてコンテンツを拡大縮小します。ページの寸法(ボックス)は変更しません。(係数 1.0 = 100%)
  • 形式:cpdf -scale-contents [<scale>] [<position>] in.pdf [<range>] -o out.pdf
  • 注意:コンテンツ以外のテキストボックス等はそのままのサイズです。
  • 参照:positionrange

例:全ページを元の寸法の50%に縮小して、out.pdfへ書き出します。

>cpdf -scale-contents 0.5 in.pdf -o out.pdf

例:全ページを上部と右端から20ポイントの位置に、50%で縮小します。結果はout.pdfへ書き出します。※参照:-topright

>cpdf -scale-contents 0.5 -topright 20 in.pdf -o out.pdf

 

-scale-center <係数>

  • 機能:中心付近のコンテンツを拡大縮小します。
    (係数 1.0 = 100%)
  • 形式:cpdf -scale-conter [<scale>] in.pdf [<range>] -o out.pdf
  • 参照:range

※当オペレーションに関する説明や例はネット上にも公開マニュアルにも存在しません。数値指定で正常終了はしますが、変化した結果は確認できませんでした。

>cpdf -scale-center 0.5 in.pdf -o out.pdf

 

-scale-to-fit-scale <係数>

  • 機能:ページのサイズに対してコンテンツを指定パーセントに合わせ拡大又は縮小します。
    (係数 1.0 = 100%)
  • 形式:cpdf -scale-to-fit "<x size> <y size>" [-scale-to-fit-scale <scale>]
    in.pdf [<range>] -o out.pdf
  • 備考:-scale-to-fit のサブ・オペレーションとして使います。-scale-to-fit と一緒でないと機能しません。-scale-to-fit はページサイズ(x、y)に比例して拡大縮小します。
  • 参照:-scale-to-fitrange

例:ページをA4縦に合わせて拡大縮小し、そのコンテンツの75%に縮小して、out.pdfへ書き出します。

>cpdf -scale-to-fit a4portrait -scale-to-fit-scale 0.75 in.pdf -o out.pdf

 

-shift <<shift x> <shift y>>

  • 機能:ページの内容(コンテンツ)を水平方向にXポイント、垂直方向にYポイントずつシフトします。
  • 補足:移動によるマージンの調整に使えます。
  • 形式:cpdf -shift "<shift x> <shift y>" in.pdf [<range>] -o out.pdf
  • 参照:range

例:偶数(even)ページのみ、右に50ポイント、上に100ポイント移動します。

>cpdf -shift "50 100" in.pdf even -o out.pdf

 

-rotate <角度>

  • 機能:ページを回転します。
  • 補足:指定できる角度は時計回りで90, 180 又は 270 度です。ページが既に回転の設定状態であっても、それを無視して-rotateの角度が設定されます。「-rotate 0」とすると頁の回転設定を解除(元に戻すことが)できます。
  • 形式:cpdf -rotate <angle> in.pdf [<range>] -o out.pdf
  • 参照:range

例:入力ファイル内のすべてのページを時計回りに90度で回転します。結果は out.pdf で書き出します。

>cpdf -rotate 90 in.pdf -o out.pdf

例:入力ファイル内のすべてのページを回転の設定を解除して元に戻します。結果は out.pdf で書き出します。

>cpdf -rotate 0 in.pdf -o out.pdf

 

-rotateby <角度>

  • 機能:ページを相対値で回転します。
  • 補足:指定できる角度は時計回りで90, 180 又は 270 度です。ページが既に回転の設定状態である場合、それを起点に更に-rotatebyの角度が加算されます。
  • 形式:cpdf -rotateby <angle> in.pdf [<range>] -o out.pdf
  • 参照:range

例:入力ファイル内のすべてのページを時計回りに相対値で90度回転させます。結果は out.pdf で書き出します。

>cpdf -rotateby 90 in.pdf -o out.pdf

 

-rotate-contents <角度>

  • 機能:ページのコンテンツを与えられた相対値で時計回りに回転させます。ページの寸法(A4縦等)には変化は無いです。
  • 補足:ページがコンテンツが既に回転の設定状態である場合、それを起点に更に角度が加算されます。-rotate-rotateby で使用可能な値は0,90,180,270であるに対して、任意の値が使用できます。
  • 形式:cpdf -rotate-contents <angle> in.pdf [<range>] -o out.pdf
  • 参照:range

例:入力ファイル内のすべてのページのコンテンツを時計回りに相対値で45度回転させます。結果は out.pdf で書き出します。

>cpdf -rotate-contents 45 in.pdf -o out.pdf

 

-upright

  • 機能:ページを直立させます。
  • 形式:cpdf -upright in.pdf [<range>] -o out.pdf
  • 参照:range
  • 問題:たぶん、ページが持っている回転をリセットするのかと思いましたが。テストでは動作(変化)は確認できませんでした。

例:入力ファイル内のすべての回転状態にあるページを元に戻します。(直立させます。)※検証出来ませんでした。

>cpdf -upright in.pdf -o out.pdf

 

-hflip

  • 機能:水平方向にページを反転します。
  • 補足:ページで左右が逆になります。
  • 形式:cpdf -hflip in.pdf [<range>] -o out.pdf
  • 参照:range

例:入力ファイル内のすべてのページを水平方向に反転させます。結果は out.pdf で書き出します。

>cpdf -hflip in.pdf -o out.pdf

 

-vflip

  • 機能:垂直方向にページを反転します。
  • 補足:ページで上下が逆になります。
  • 形式:cpdf -vflip in.pdf [<range>] -o out.pdf
  • 参照:range

例:入力ファイル内のすべてのページを垂直方向に反転させます。結果は out.pdf で書き出します。

>cpdf -vflip in.pdf -o out.pdf

 

<メモ>

すべてのPDFファイルには各ページにメディアボックスが含まれており、用紙の寸法が示されています。 これらのディメンションを変更するには(ページの内容・コンテンツを変更することなく)、-mediaboxオペレーションを使用します。

<メモ>

PDFに含まれているページ境界の情報:MediaBox、CropBox、BleedBox、TrimBox、ArtBox。

 

<メモ>※unit

単位:
CPDFで扱える単位です。

  • pt:ポイント(1インチあたり72ポイント)。 デフォルトです。
  • cm:センチメートル
  • mm:ミリメートル
  • in:インチ

例:ページをA4 横 (横297mm 縦210mm)に合わせて拡大又は縮小して、out.pdfへ書き出します。

>cpdf -scale-to-fit "297mm 210mm" in.pdf -o out.pdf

例:ページの左下から右100pt 上へ50ptの位置に横50pt 縦20pt の短形枠を赤で塗りつぶして描きます。結果はout.pdfへ書き出します。※デフォルトはポイント(pt)です。

>cpdf in.pdf -add-rectangle "50 20" -color red -pos-center "100 50" -o out.pdf

 

<メモ>※specific-size-value

特定のサイズ値:

ページ上のサイズ関連では以下の定数がサポートされています。今のページサイズの幅は?、なんて気にしなくても使えます。

  • PW:ページ幅
  • PH:ページ高さ
  • PMINX:ページの最小x座標
  • PMINY:ページの最小y座標
  • PMAXX:ページの最大x座標
  • PMAXY:ページの最大y座標
  • CW:クロックボックス(トリミング)幅
  • CH:クロックボックス(トリミング)高さ
  • CMINX:クロックボックスの最小x座標
  • CMINY:クロックボックスの最小y座標
  • CMAXX:クロックボックスの最大x座標
  • CMAXY:クロックボックスの最大y座標

算術演算:

上記のサイズ関連を使いやすくする為の算術演算がサポートされています。

  • add:加算
  • sub:減算
  • mul:乗算
  • div:除算

これを使って

  • "14in sub 30pt":14インチから30ポイントを引く。
  • "PMAXX div 2":ページの最大x座標を2で割る。

例:in.pdf に幅が「ページ幅の半分」、高さが50pt の赤い短形枠を描いて、out.pdf へ書き出します。

>cpdf in.pdf -add-rectangle "PMAXX div 2 50pt" -color red -o out.pdf

例:in.pdf の全ページの背景を赤くして(赤い短形枠をページ全体のコンテンツの後ろに配置して)、out.pdf へ書き出します。
>cpdf in.pdf -add-rectangle "PW PH" -color red -topleft 0 -underneath -o out.pdf

cpdf in.pdf -add-rectangle "PW PH" -color red -topleft 0 -underneath -o out.pdf

上記の例で -underneath を外すと赤い枠はコンテンツ(内容)の上に配置されるのでコンテンツが見れなくなります。但し、-remove-text をout.pdf に対して実行すると赤い枠を削除して元の状態に戻せます。(驚

 

-crop "<x> <y> <w> <h>"

  • 機能:特定のページをトリミングします。
    ページ左端下から x は右の座標、yは上の座標、wは幅、hは高さです。
  • 形式:cpdf -crop "<x> <y> <w> <h>" in.pdf [<range>] -o out.pdf
  • 備考:トリミングを行うとファイルのサイズがかなり大きくなる事に注意が必要です。
  • 参照:公開マニュアル(英語)range

例:ページの左下200ミリの正方形にページをトリミングします。結果は out.pdf で書き出します。※mm を入れないとpt(ポイント)扱いになります。

>cpdf -crop "0pt 0pt 200mm 200mm" in.pdf -o out.pdf

 

-hard-box  <boxname>

  • 機能:指定したボックスに指定したページをハードクロップします。
  • 補足:指定可能なボックス名は /MediaBox、/CropBox、/BleedBox、/TrimBox、/ArtBoxです。
  • 形式:cpdf -hard-box <boxname> in.pdf -o out.pdf
  • 実行エラー:該当ボックスが存在しない時、以下のエラーが出ます。
  • >cpdf -hard-box /ArtBox in.pdf -o out.pdf

    hard_box: Box not found
  • 注意:このオペレーションに関する説明は公開マニュアルにもネットにも存在しません。ここまでの解説はCPDFソースコード内の一部を見て勝手に判断しています。
    よって機能の確認は出来ていません。
  • 備考:Clip a page to one of its boxes, or the media box if that box is not present.  This is a hard clip, done by using a clipping rectangle, so that the page may then be used as a stamp without extraneous material reapearing.

>cpdf -hard-box /MediaBox in.pdf -o out.pdf

 

-remove-crop

  • 機能:ページのトリミング(クロップボックス:/CropBox)の設定を削除します。
  • 補足:-crop オペレーションでトリミングした設定を取り除きます。
  • 形式:cpdf -remove-crop in.pdf [<range>] -o out.pdf
  • 参照:range

例:in.pdf ページのトリミングの設定を削除します。結果は out.pdf で書き出します。

>cpdf -remove-crop in.pdf -o out.pdf

 

-frombox <boxname>

  • 機能:ボックスのコピー時にコピー元のボックスを設定します。
    -tobox オペレーションと同時に使用します。
  • 補足: コピー可能なボックスは /MediaBox、/CropBox、/BleedBox、/TrimBox、/ArtBoxです。
  • 形式:cpdf -frombox <boxname> -tobox <boxname> [-mediabox-if-missing] in.pdf [<range>] -o out.pdf
  • 参照:range

例:in.pdf 各ページのトリムボックス「/ TrimBox」を各ページのクロップボックス「/ CropBox」にコピーします。結果は out.pdf で書き出します。

>cpdf -frombox /TrimBox -tobox /CropBox in.pdf -o out.pdf

 

-tobox <boxname>

  • 機能:ボックスのコピー時にコピー先のボックスを設定します。
    -frombox オペレーションと同時に使用します。
  • 補足: コピー可能なボックスは /MediaBox、/CropBox、/BleedBox、/TrimBox、/ArtBoxです。
  • 形式:cpdf -frombox <boxname> -tobox <boxname> [-mediabox-if-missing] in.pdf [<range>] -o out.pdf
  • 参照:range

例:in.pdf 各ページのトリムボックス(/ TrimBox)を各ページのクロップボックス(/CropBox)にコピーします。結果は out.pdf で書き出します。

>cpdf -frombox /TrimBox -tobox /CropBox in.pdf -o out.pdf

 

-mediabox-if-missing

  • 機能:ボックスからのコピーがない場合はメディアボックスを使用します。
  • 形式:cpdf -frombox <boxname> -tobox <boxname> [-mediabox-if-missing] in.pdf [<range>] -o out.pdf
  • 参照:range

例:in.pdf 各ページのトリムボックス(/TrimBox)を各ページのクロップボックス(/CropBox)にコピーします。但し/TrimBoxが無い時は/MediaBoxを使用します。結果は out.pdf で書き出します。

>cpdf -frombox /TrimBox -tobox /CropBox -mediabox-if-missing in.pdf -o out.pdfcpdf -frombox /TrimBox -tobox /CropBox -mediabox-if-missing in.pdf -o out.pdf

 

-mediabox <<x> <y> <w> <h>>

  • 機能:ページのメディアボックス(/MediaBox)を設定します。
  • 形式:cpdf -mediabox "<x> <y> <w> <h>" in.pdf [<range>] -o out.pdf
  • 参照:range

例:in.pdf のメディアボックスを500ポイント正方形に設定します。結果は out.pdf で書き出します。

>cpdf -mediabox "0pt 0pt 500pt 500pt" in.pdf -o out.pdf

 

<メモ>

暗号化には以下の5種類が有ります。

  1. Acrobat 3(PDF 1.1)以上の40ビット暗号化(40bit)
  2. Acrobat 5(PDF 1.4)以上の128ビット暗号化(128bit)
  3. Acrobat 7(PDF 1.6)以上の128ビットAES暗号化(AES)

    ココからの暗号化タイプの使用は要注意です。
     
  4. Acrobat 9(PDF 1.7)の256ビットAES暗号化(AES256)
    これは廃止予定です。新しい文書には使用しないでください。
    注意:↑これはCPDFのマニュアルでの記載。CPDFの問題か、PDF仕様の問題か、規格レベル等の問題かは確認できていません。
  5. PDF 2.0の256ビットAES暗号化(AES256ISO)

<メモ>

パスワードの文字数は32文字までに制限します。

注意:ユーザーパスワードとオーナーパスワードの文字数は問題が無ければ32文字までにして下さい。33以上の文字数だと32文字でパスワードが外れてしまう場合が有ります。これに関しては詳細な検証ができた後にまた記述します。また、この注意の内容は後日変更にされる可能性も有ります。(2017/10/16  追加)

 

-encrypt <method> ・・

  • 機能:PDF文書にセキュティ設定します。
  • 形式:cpdf -encrypt <method> <owner> <user> [-no-encrypt-metadata] <permissions> in.pdf -o out.pdf
  • method:暗号化の種類で40bit、128bit、AES、AES256、AES256ISO から選択する。出来れば AES を推奨します。
  • owner:オーナーパスワード
    文書の各種権限を設定するパスワードです。必須です。
  • user:ユーザーパスワード
    文書を開く時のパスワードです。無指定時は "" を設定します。マニュアルには説明無し。
  • -no-encrypt-metadata:メタデータを暗号化しない(AESのみ)
  • permissions:文書への各種権限。複数の指定可。-no-edit-no-print-no-copy-no-annot-no-forms-no-extract-no-assemble-no-hq-print-no-encrypt-metadata

例:※詳細な例はこれ以降の各オペレーションを参照してください。

>cpdf -encrypt 40bit  abcd xyz -no-print        in.pdf -o out.pdf
>cpdf -encrypt 128bit abcd xyz -no-extract      in.pdf -o out.pdf
>cpdf -encrypt AES    abcd "" -no-edit -no-copy in.pdf -o out.pdf

 

-decrypt

  • 機能:オーナーパスワードで掛かっている各種制限を解除します。
    オーナーパスワードを外し、制限(印刷、コピー、ページの抽出等)も解除します。
  • 補足:オーナーパスワードを指定しないと使用できません。
  • 形式:cpdf -decrypt in.pdf owner=<owner password> -o out.pdf
  • 備考:文書を開く時に必要なユーザーパスワードが掛かっているPDFファイルには使えません。

例:in.pdf のオーナーパスワード「abcd」で各種制限(印刷等)が掛かっているのを解除します。結果は out.pdf で書き出します。

>cpdf -decrypt in.pdf owner=abcd -o out.pdf

 

<メモ>

セキュリティ関連を専門に扱う「Qpdf:コマンドラインのPDFツール」が有ります。CPDFで扱えないセキュリティ処理はコチラで試してください。

 

-no-edit

  • 機能:セキュティ「文書の変更」を「許可しない」にします。
  • 補足:-encryptオペレーションの引数 <permissions> の部分です。
    同時に「ページの抽出」も「許可しない」にします。
  • 形式:-encrypt 参照。

例:「文書の変更」を「許可しない」設定にします。オーナーパスワードは「abcd」です。結果は out.pdf で書き出します。

>cpdf -encrypt AES abcd "" -no-edit in.pdf -o out.pdf

cpdf -encrypt AES abcd "" -no-edit in.pdf -o out.pdf

 

-no-print

  • 機能:セキュティ「印刷」を「許可しない」にします。
  • 補足:-encryptオペレーションの引数 <permissions> の部分です。
    同時に「ページの抽出」も「許可しない」にします。
  • 形式:-encrypt 参照。

例:「印刷」を「許可しない」設定にします。オーナーパスワードは「abcd」です。結果は out.pdf で書き出します。

>cpdf -encrypt AES abcd "" -no-print in.pdf -o out.pdf

cpdf -encrypt AES abcd "" -no-print in.pdf -o out.pdf

 

-no-copy

  • 機能:セキュティ「内容のコピー」を「許可しない」にします。
  • 補足:-encryptオペレーションの引数 <permissions> の部分です。
    同時に「ページの抽出」も「許可しない」にします。
  • 形式:-encrypt 参照。

例:「内容のコピー」を「許可しない」設定にします。オーナーパスワードは「abcd」です。結果は out.pdf で書き出します。

>cpdf -encrypt AES abcd "" -no-copy in.pdf -o out.pdf

cpdf -encrypt AES abcd "" -no-copy in.pdf -o out.pdf

 

-no-annot

  • 機能:セキュティ「注釈」を「許可しない」にします。
  • 補足:-encryptオペレーションの引数 <permissions> の部分です。
    同時に「ページの抽出」も「許可しない」にします。
  • 形式:-encrypt 参照。

例:「注釈」を「許可しない」設定にします。オーナーパスワードは「abcd」です。結果は out.pdf で書き出します。

>cpdf -encrypt AES abcd "" -no-annot in.pdf -o out.pdf

cpdf -encrypt AES abcd "" -no-annot in.pdf -o out.pdf

 

-no-forms

  • 機能:セキュティ「フォームフィールドの入力」を「許可しない」にします。
  • 補足:-encryptオペレーションの引数 <permissions> の部分です。
    同時に「ページの抽出」も「許可しない」にします。
    128ビット暗号化(Acrobat 5以上)およびAES暗号化でのみサポート。
  • 形式:-encrypt 参照。Qpdf
  • バグ報告:マニュアル通りに機能しません。「ページの抽出」を「許可しない」だけです。128bit、AES、AES256、AES256ISO 全部試しましたが結果は同じです。

例:「フォームフィールドの入力」を「許可しない」設定にします。オーナーパスワードは「abcd」です。結果は out.pdf で書き出します。バグ有り!
※「AES256」の使用は注意有り。

>cpdf -encrypt AES256 abcd "" -no-forms in.pdf -o out.pdf

cpdf -encrypt AES256 abcd "" -no-forms in.pdf -o out.pdf

 

-no-extract

  • 機能:セキュティ「ページの抽出」を「許可しない」にします。
  • 補足:-encryptオペレーションの引数 <permissions> の部分です。
    同時に「ページの抽出」も「許可しない」にします。
    128ビット暗号化(Acrobat 5以上)およびAES暗号化でのみサポート。
  • 形式:-encrypt 参照。

例:「ページの抽出」を「許可しない」設定にします。オーナーパスワードは「abcd」です。結果は out.pdf で書き出します。
※「AES256」の使用は注意有り。

>cpdf -encrypt AES256 abcd "" -no-extract in.pdf -o out.pdf

cpdf -encrypt AES256 abcd "" -no-extract in.pdf -o out.pdf

 

-no-assemble

  • 機能:セキュティ「文書アセンブリ」を「許可しない」にします。
  • 補足:-encryptオペレーションの引数 <permissions> の部分です。
    同時に「ページの抽出」も「許可しない」にします。
    128ビット暗号化(Acrobat 5以上)およびAES暗号化でのみサポート。
  • 形式:-encrypt 参照。Qpdf
  • バグ報告:マニュアル通りに機能しません。「ページの抽出」を「許可しない」だけです。128bit、AES、AES256、AES256ISO 全部試しましたが結果は同じです。

例:「文書アセンブリ」を「許可しない」設定にします。オーナーパスワードは「abcd」です。結果は out.pdf で書き出します。バグ有り!※「AES256」の使用は注意有り。

>cpdf -encrypt AES256 abcd "" -no-assemble in.pdf -o out.pdf

cpdf -encrypt AES256 abcd "" -no-assemble in.pdf -o out.pdf

 

-no-hq-print

  • 機能:セキュティ「印刷」を「高解像度」から「低解像度 (150 dpi)」にします。
  • 補足:-encryptオペレーションの引数 <permissions> の部分です。
    同時に「ページの抽出」も「許可しない」にします。
    128ビット暗号化(Acrobat 5以上)およびAES暗号化でのみサポート。
  • 形式:-encrypt 参照。
  • 備考:「-no-print」は「印刷」を「許可しない」設定にします。

例:「印刷」を「高解像度」から「低解像度 (150 dpi)」設定にします。オーナーパスワードは「abcd」です。結果は out.pdf で書き出します。
※「AES256」の使用は注意有り。

>cpdf -encrypt AES256 abcd "" -no-hq-print in.pdf -o out.pdf

cpdf -encrypt AES256 abcd "" -no-hq-print in.pdf -o out.pdf

 

-no-encrypt-metadata

  • 機能:メタデータを暗号化しない(AESのみ)
  • 形式:cpdf -encrypt <method> <owner> <user> [-no-encrypt-metadata] <permissions> in.pdf -o out.pdf
  • 参照:-encrypt
  • 備考:PDFファイルは基本がテキスト形式ですが、バイナリーや更に暗号化した部分もかなり有ります。

例:「印刷」を「許可しない」に、オーナーパスワードは「abcd」で設定します。この時にメタデータは暗号化しません。結果は out.pdf で書き出します。

>cpdf -encrypt AES abcd "" -no-print -no-encrypt-metadata in.pdf -o out.pdf

 

-decompress

  • 機能:圧縮されたストリームを解除します。
    PDFの内部構造を手動で調査する場合に使用します。
  • 補足:解除できない圧縮タイプを検出した場合はストリームは圧縮されたままになります。
  • 形式:cpdf -decompress in.pdf -o out.pdf
  • 備考:PDFの内部構造は公開されています。自分でチェックできます。

例:in.pdf を読み込んで圧縮されたストリームを解除します。結果は out.pdf で書き出します。

>cpdf -decompress in.pdf -o out.pdf

 

-compress

  • 機能:ストリームを圧縮します。
    メタデータは圧縮しません。
  • 形式:cpdf -compress in.pdf -o out.pdf
  • 備考:ファイル全体の圧縮は-squeeze オペレーションを使ってください。

例:in.pdf の非圧縮のストリームを圧縮します。但しメタデータは圧縮しません。結果は out.pdf で書き出します。

>cpdf -compress in.pdf -o out.pdf

 

-list-bookmarks

  • 機能:しおりの一覧を表示します。
    結果は標準出力(DOS画面上)に表示されます。
  • 形式:cpdf -list-bookmarks [-utf8 | -raw] in.pdf
  • 参照:詳細は「しおりの抽出、削除、登録」。
  • 備考:結果をDOS画面上に表示しても意味無いです。リダイレクトでテキスト出力して、その後での対処が可能になります。しおりに日本語が有る事はほぼ間違いないので、エンコード処理の -utf8 指定が必要になります。

例:in.pdf の日本語を含むしおりをテキスト siori.txt へリダイレクト出力します。

>cpdf -list-bookmarks -utf8 in.pdf > siori.txt

 

-remove-bookmarks

例:in.pdf のしおりを全て削除します。結果は out.pdf で書き出します。

>cpdf -remove-bookmarks in.pdf -o out.pdf

 

-add-bookmarks

  • 機能:テキストファイルからしおりの情報を入力して、新規登録します。
    登録時にしおりのレベル、名前、移動先のページ番号、下位レベルのしおりの開閉状態を指示できます。
  • 形式:cpdf -add-bookmarks <bookmark file> in.pdf -o out.pdf
  • 参照:詳細は「しおりの抽出、削除、登録」。

例:しおり情報が入った「siori.txt」テキストファイルを読み込んで、in.pdf ファイルにしおりを新規登録します。結果は out.pdf ファイルへ出力します。

>cpdf -add-bookmarks siori.txt in.pdf -o out.pdf

 

-presentation

  • 機能:プレゼンテーションを作成します。
  • 形式:cpdf -presentation in.pdf [<range>] -o out.pdf [-trans <transition-name>] [-duration <float>] [-vertical] [-outward] [-direction <int>] [-effect-duration <float>]
  • 参照:詳細は「Chapter 7 Presentations」(英語)
  • 備考:この機能はよく分かりません。

例:in.pdf からプレゼンテーションファイルを作成します。スプリットスタイル、垂直線、各スライドは手動で進めない限り10秒間停止します。 最初のページ(タイトル)は自動的に移動せず、トランジション効果もありません。結果は out.pdf ファイルへ出力します。

>cpdf -presentation in.pdf 2-end -trans Split -duration 10 -o out.pdf

 

-trans

 

-duration

  • 機能:-presentation の表示時間を指定します。  

 

-vertical

  • 機能:-presentation の分割スタイルとブラインドスタイルの寸法を指定します。

 

-outward

  • 機能:-presentation の分割スタイルとボックススタイルの方向を指定します。

 

-direction

機能:-presentation のワイプとグリッタースタイルの方向を指定します。

 

-effect-duration

  • 機能:-presentation のエフェクトの長さを秒単位で指定します。

 

-stamp-on <source.pdf>

  • 機能:別に用意したPDF(source.pdf)をスタンプに使います。
  • 補足:スタンプはページ内容(コンテンツ)の上(上層部)に配置されます。テキストや画像が有れば、その上です。位置によってはスタンプで下のページ内容(コンテンツ)が見えなくなる場合も有りまから注意が必要です。
    スタンプのイメージしたPDFファイルは事前に用意します。画像や文字などを組み合わしたスタンプを使いたい時に便利です。位置「positioning command」も指定できます。source.pdfの1ページ目のみ使用されます。
  • 形式:cpdf -stamp-on source.pdf [-scale-stamp-to-fit] [<positioning command>] [-] in.pdf [<range>] -o out.pdf
  • 参照:詳細は「Chapter 8 Watermarks and Stamps」、rangeposition

例:logo.pdfの1頁目を in.pdf にスタンプします。位置は奇数(odd)ページ下の左端です。結果は out.pdf ファイルへ出力します。

>cpdf -stamp-on logo.pdf in.pdf odd -o out.pdf

cpdf -stamp-on logo.pdf in.pdf odd -o out.pdf

 

-stamp-under <source.pdf>

  • 機能:別に用意したPDF(source.pdf)をスタンプに使います。
  • 補足:スタンプはページ内容(コンテンツ)の下(下層部)に配置されます。テキストや画像が有れば、その下です。そのページの位置に画像が有れば下のスタンプが見えなくなる場合も有りまから注意が必要です。
    スタンプのイメージしたPDFファイルは事前に用意します。画像や文字などを組み合わしたスタンプを使いたい時に便利です。位置「positioning command」も指定できます。source.pdfの1ページ目のみ使用されます。
  • 形式:cpdf -stamp-under source.pdf [-scale-stamp-to-fit] [<positioning command>] [-] in.pdf [<range>] -o out.pdf
  • 参照:詳細は「Chapter 8 Watermarks and Stamps」。-stamp-onrangeposition

例:logo.pdfの1頁目を in.pdf にスタンプします。位置はページ下の左端です。結果は out.pdf ファイルへ出力します。

>cpdf -stamp-under logo.pdf in.pdf -o out.pdf

cpdf -stamp-under logo.pdf in.pdf -o out.pdf

 

-scale-stamp-to-fit

  • 機能:別に用意したPDF(source.pdf)をスタンプに使います。スタンプはページに合わせて拡大又は縮小します。
  • 補足:スタンプのイメージしたPDFファイルは事前に用意します。画像や文字などを組み合わしたスタンプを使いたい時に便利です。
    位置「positioning command」も指定できます。source.pdfの1ページ目のみ使用されます。-stamp-on でコンテンツの上に、-stamp-under でコンテンツの下にスタンプは配置されます。
  • 形式:cpdf -stamp-under source.pdf [-scale-stamp-to-fit] [<positioning command>] [-] in.pdf [<range>] -o out.pdf
  • 参照:詳細は「Chapter 8 Watermarks and Stamps」。-stamp-on-stamp-underrangeposition

例:logo.pdfの1頁目を in.pdf にスタンプします。スタンプはコンテンツの下で、ページ寸法に合わせて拡大します。結果は out.pdf ファイルへ出力します。

>cpdf -stamp-under logo.pdf -scale-stamp-to-fit in.pdf -o out.pdf

cpdf -stamp-under logo.pdf -scale-stamp-to-fit in.pdf -o out.pdf

 

-combine-pages

  • 機能:2つのPDFをページ単位に上と下でスタンプの様に結合します。
  • 補足:上(上層部)にover.pdfを配置、下(下層部)にunder.pdfを配置。
    over.pdf の1頁目を under.pdf の1頁目の上に配置します。over.pdf の2頁目を under.pdf の2頁目の上に配置します。同様に最終頁まで繰り返します。
  • 形式:cpdf -combine-pages over.pdf under.pdf -o out.pdf
  • 参照:詳細は「Chapter 8 Watermarks and Stamps」、range
  • 備考:2つのPDFのサイズや内容(コンテンツ)、そしてPDFの形式?によって、予期せぬ結果や実行エラーになる場合があるので注意してください。

例:under.pdf の上に over.pdf の各ページ単位をスタンプの様に貼り付けて、1つのPDFに結合します。結果は out.pdf で書き出します。

>cpdf -combine-pages over.pdf under.pdf -o out.pdf

 

-add-text <text-format>

  • 機能:ページの指定した範囲にテキスト又は短形枠を貼り付けます。
    スタンプを貼り付けた様にします。
  • 補足:テキストのデフォルトは黒の12pt のTimes New Romanで、各ページの左上に表示されます。位置や多彩な各種オペレーションと併用出来ます。
  • 形式:cpdf ([-add-text <text-format> | -add-rectangle <size>])
    [-font <fontname>]
    [-font-size <size-in-points>]
    [-color <color>]
    [-line-spacing <number>]
    [-outline]
    [-linewidth <number>]
    [-underneath]
    [-relative-to-cropbox]
    [-prerotate]
    [-bates <number>]
    [-bates-at-range <number>]
    [-bates-pad-to <number>]
    [-opacity <number>]
    [-midline]
    [-topline]
    [<position>] ※位置の各種オペレーション
    in.pdf [<range>] -o out.pdf
  • text-format:テキスト
    マクロの様な特殊なコードもテキスト内で使用出来ます。詳細は御述
    例:cpdf -add-text "%Page / %EndPage" in.pdf -o out.pdf
  • 参照:詳細は「Chapter 8 Watermarks and Stamps」。-remove-text
  • 備考
    • ページ番号、日付や時間を貼り付けるのにも便利です。
    • 複数行 = テキスト内での改行は「¥n」の2文字で表します。
    • デフォルトの位置は-topleft 100と同じです。

例:in.pdf の全ページにもテキスト「pdf-file.nnn2.com」をフォント「Times-Roman」でスタンプの様に貼り付けます。結果は out.pdf で書き出します。

>cpdf -add-text "pdf-file.nnn2.com" -font Times-Roman in.pdf -o out.pdf

 

<メモ> 2017/10/08時点

残念ですが -add-text で日本語は使用できません。

例:
>cpdf -add-text "日本" in.pdf -o put.pdf
Bad UTF8 in codepoints_of_utf8

-uft8オペレーションを付けても同様にエラーになります。
そこで代替案が有ります。日本語文字の部分を-stamp-on (又は-stamp-under)で貼り付けます。-add-text と同様に位置やページ範囲も指定できます。日本語を使用しない部分(日付や時間、ページ番号等)のページ単位で変化する部分は -add-text で貼り付けます。

例: ANDで処理を連結します。
>cpdf in.pdf -stamp-on logo.pdf AND -add-text "%Page / %EndPage" -o out.pdf

 

<メモ>

-add-text オペレーションのテキスト <text-format> 内では各種のマクロ文字が用意されています。

注意:テキスト内に日本語文字は使えません。使うと実行エラーです。


ページ番号関連:

  • %Page:アラビア表記のページ番号 (1, 2, 3. . . )
  • %EndPage:アラビア表記の全ページ数 (1, 2, 3. . . )
  • %roman:小文字のローマ表記のページ番号 (i, ii, iii. . . )
  • %Roman:大文字のローマ表記のページ番号 (I, II, III. . . )
  • %Label:ページラベルのページ番号 ※使用は非推奨
  • %EndLabel:ページラベルの全ページ数  ※使用は非推奨
  • %filename:入力PDFのファイル名

例:in.pdf ページに”Page : [ページ番号]/[総ペーシ数]” を表示して、out.pdf で書き出す。

>cpdf -add-text "Page : %Page / %EndPage" in.pdf -o out.pdf

  • 1ページ目:"Page : 1 / 70"
  • 2ページ目:"Page : 2 / 70"
  • 3ページ目:"Page : 3 / 70"

日付と時間関連: ※表記は英語のみ。日本語無し。

  • %a:短縮された曜日(Sun、Monなど)※日曜日、月曜日など
  • %A:曜日(Sunday, Mondayなど)※日曜日、月曜日など
  • %b:短縮された月(Jan, Febなど)※1月、2月など
  • %B:月(January, February1など)※1月、2月など
  • %d:月(01-31)
  • %e:月(1-31)
  • %H:24時間制の時間(00-23)
  • %I:12時間制の時間(01-12)
  • %j:1年の日(001-366)
  • %m:月(01-12)
  • %M:分(00-59)
  • %p:"a.m"または "p.m" ※午前、午後
  • %S:1分の分(00-61)
  • %T:%H:%M:%S と同じ
  • %u:曜日(1-7,1 =Monday)
  • %w:曜日(0-6、0 =Monday)
  • %Y:年(0000-9999)
  • %%:%の文字

例:in.pdf ページに”Date : [年月日] - Time [時間] - [曜日]” を表示して、out.pdf で書き出す。

>cpdf -add-text "Date %Y/%m/%d - Time - %T - %A" in.pdf -o out.pdf

  • "Date 2017/10/17 - Time 21:54:01 - Tuesday"

特定の連番:

  • %Bates:ページに設定されたベイツ番号(連番)を表示

例:in.pdf の3ページから最終ページまで、”Page : 1 / 100” のページ番号を表示して、out.pdf で書き出す。の部分はページ毎に増分します。

>cpdf in.pdf 3-end -add-text "Page : %Bates / 100" -bates-at-range 1 -o out.pdf

  • 1ページ目:無し
  • 2ページ目:無し
  • 3ページ目:"Page 1 / 100"
  • 4ページ目:"Page 2 / 100"

 

-remove-text

例:以前にcpdfによって追加(-add-text)されたテキストと短形枠を全て削除します。結果はout.pdf で書き出します。

>cpdf -remove-text in.pdf -o out.pdf

 

-add-rectangle <size>

  • 機能:ページに矩形を追加します。
  • 補足:size は幅 x 高さ を入れます。
  • 参照:-add-text 。

例:in.pdf 各ページに幅 200pt x 高さ 300pt の短径枠を追加します。結果はout.pdf で書き出します。

>cpdf -add-rectangle "200 300" in.pdf -o out.pdf

 

-bates <number>

  • 機能:ページ固有の識別子(ベイツ番号)の初期値を設定します。
  • 補足:分かりにくいので例です。
    • 「-bates 2」の時:1頁目には2,2頁目には3,3頁目には4のベイツ番号が設定されます。
    • 「-bates 5」の時:1頁目には5,2頁目には6,3頁目には7のベイツ番号が設定されます。
  • 参照:-add-text 。text-format
  • 注意:in.pdf のページ範囲の影響を受けません。
  • 備考:-bates より -bates-at-range の方が感覚的にも使いやすいです。

例:in.pdf の2頁目にテキストスタンプ「Page ID: 1」、3頁目に「Page ID: 2」、4頁目に「Page ID: 3」、と繰り返します。結果はout.pdf で書き出します。※in.pdf の位置はcpdf の直後を推奨。

>cpdf in.pdf 2-end -add-text "Page ID: %Bates" -bates 0 -o out.pdf

※上記の場合、1頁目にはベイツ番号:0が設定されます。

 

-bates-at-range <number>

  • 機能:ページ範囲内の最初のページのベイツ番号を設定します。
  • 補足:-bates はin.pdf のページの範囲の影響を受けません。-bates-at-range はin.pdf がページの範囲を設定していると、その影響を受けて、範囲の最初のページにベイツ番号を設定します。
    例:「in.pdf 2-10」の時、「-bates-at-range 4」ならば

     

    • ページ番号1:無し
    • ページ番号2:ベイツ番号は4
    • ページ番号3:ベイツ番号は5
  • 参照:-add-texttext-format
  • 注意:CPDF の直後にin.pdf を入れないと実行エラーになります。

例:in.pdf の2頁目にテキストスタンプ「Page ID: 1」、3頁目に「Page ID: 2」、4頁目に「Page ID: 3」、と繰り返します。結果はout.pdf で書き出します。※in.pdf の位置はcpdf の直後!

>cpdf in.pdf 2-end -add-text "Page ID: %Bates" -bates-at-range 1 -o out.pdf

 

-bates-pad-to <number>

  • 機能:ページ固有の識別子の桁数を指定します。前はゼロで埋めて表示されるます。
  • 参照:-add-texttext-format

例:テキストスタンプ「Page ID: 001」を1頁目、「Page ID: 002」を2頁目、「Page ID: 003」を3頁目、と繰り返します。結果はout.pdf で書き出します。

>cpdf -add-text "Page ID: %Bates" -bates 1 -bates-pad-to 3 in.pdf -o out.pdf

 

-font <fontname>

  • 機能:フォントを指定します。
  • 補足:サポートされているフォントです。
    Times-Roman、Times-Bold、Times-Italic、Times-BoldItalic、Helvetica、Helvetica-Bold、Helvetica-Oblique、Helvetica-BoldOblique、Courier、Courier-Bold、Courier-Oblique、Courier-BoldOblique、Symbol、ZapfDingbats
  • 参照:-add-text

例:テキスト「Hoge」をフォント Helveticaで各ページに貼り付けます。結果はout.pdf で書き出します。

>cpdf -add-text "Hoge" -font Helvetica in.pdf -o out.pdf

 

-font-size <size-in-points>

  • 機能:フォントサイズを指定します。
  • 参照:-add-text

例:テキスト「Hoge」をフォント Helvetica サイズ 24 で各ページに貼り付けます。結果はout.pdf で書き出します。

>cpdf -add-text "Hoge" -font Helvetica -font-size 24 in.pdf -o out.pdf

 

-no-embed-font

  • 機能:フォントをPDFへ埋め込みません。
  • 参照:-add-text

例:テキスト「Hoge」を各ページに貼り付けます。フォントを埋め込みません。結果はout.pdf で書き出します。

>cpdf -add-text "Hoge" -no-embed-font in.pdf -o out.pdf

 

-color <color>

  • 機能:色を指定します。
  • 参照:-add-text
  • color:white、black、red、green、blue、又はR.B.G指定。

例:テキスト「Hoge」を各ページに貼り付けます。文字の色は赤です。結果はout.pdf で書き出します。

>cpdf -add-text "Hoge" -color "red" in.pdf -o out.pdf
>cpdf -add-text "Hoge" -color "1 0 0" in.pdf -o out.pdf

 

-opacity <number>

  • 機能:不透明度(0.1~1.0)
    1.0=透明度無し、0.1=10%程度しか見えない
  • 参照:-add-text

例:テキスト「Hoge」を各ページに貼り付けます。テキストの透明度は10%です。結果はout.pdf で書き出します。

>cpdf -add-text "Hoge" -opacity 0.1 in.pdf -o out.pdf

 

-outline

  • 機能:テキストはアウトラインモードを使用します。
  • 参照:-add-text

例:テキスト「Hoge」を各ページに貼り付けます。テキストはアウトライン化します。結果はout.pdf で書き出します。

>cpdf -add-text "Hoge" -outline in.pdf -o out.pdf

 

-linewidth <number>

  • 機能:アウトラインモードのテキストの線幅を指定します。
    デフォルトは1pt です。
  • 参照:-add-text

例:テキスト「Hoge」を各ページに貼り付けます。テキストはサイズは30pt、アウトライン化、線幅は3pt です。結果はout.pdf で書き出します。

>cpdf -add-text "Hoge" -font-size 30 -outline -linewidth 3 in.pdf -o out.pdf

 

-pos-center <x , y>

  • 機能:テキストの中心を座標(X , Y)の位置に設定して表示します。
  • 補足:座標の x  はページの下の左端から右へ、y はページの下から上へ。この座標(X , Y)をCPDFはベースライン(baseline)と言っている。
  • 参照:-add-text

例:テキスト「Hoge」を各ページに貼り付けます。テキストは座標(右=200pt , 高さ=200pt)を中心に表示されます。結果はout.pdf で書き出します。

>cpdf -add-text "Hoge" -pos-center "200 200" in.pdf -o out.pdf

例:テキスト「HogeHoge」を各ページに貼り付けます。テキストは座標(右=100pt , 高さ=50pt)を中心に表示されます。また座標(右=100pt , 高さ=50pt)に長さ100pt x 幅1ptの短径枠を上下に表示します。結果はout.pdf で書き出します。

>cpdf -add-text "HogeHoge" -pos-center "100 50" in.pdf AND -add-rectangle "1 100" -color red -pos-center "100 50" AND -add-rectangle "100 1" -color red -pos-center "100 50" -o out.pdf

cpdf -add-text "HogeHoge" -pos-center "100 50" in.pdf AND -add-rectangle "1 100" -color red -pos-center "100 50" AND -add-rectangle "100 1" -color red -pos-center "100 50" -o out.pdf
ページ左から右 100pt,高さ 50ptが中心線

 

-pos-left <x , y>

  • 機能:テキストの左端を座標(X , Y)の位置に設定して表示します。
  • 補足:座標の x  はページの下の左端から右へ、y はページの下から上へ。この座標(X , Y)をCPDFはベースライン(baseline)と言っている。
  • 参照:-add-text

例:テキスト「Hoge」を各ページに貼り付けます。テキストは座標(右=200pt , 高さ=200pt)より右側に表示されます。結果はout.pdf で書き出します。

>cpdf -add-text "Hoge" -pos-left "200 200" in.pdf -o out.pdf

例:テキスト「HogeHoge」を各ページに貼り付けます。テキストの左端を座標(右=100pt , 高さ=50pt)にして表示されます。また座標(右=100pt , 高さ=50pt)に長さ100pt x 幅1ptの短径枠を上下に表示します。結果はout.pdf で書き出します。

>cpdf -add-text "HogeHoge" -pos-left "100 50" in.pdf AND -add-rectangle "1 100" -color red -pos-center "100 50" AND -add-rectangle "100 1" -color red -pos-center "100 50" -o out.pdf

cpdf -add-text "HogeHoge" -pos-left "100 50" in.pdf AND -add-rectangle "1 100" -color red -pos-center "100 50" AND -add-rectangle "100 1" -color red -pos-center "100 50" -o out2.pdf
ページ左から右 100pt,高さ 50ptが中心線

 

-pos-right <x , y>

  • 機能:テキストの右端を座標(X , Y)の位置に設定して表示します。
  • 補足:座標の x  はページの下の左端から右へ、y はページの下から上へ。この座標(X , Y)をCPDFはベースライン(baseline)と言っている。
  • 参照:-add-text

例:テキスト「Hoge」を各ページに貼り付けます。テキストは座標(右=200pt , 高さ=200pt)より左側に表示されます。結果はout.pdf で書き出します。

>cpdf -add-text "Hoge" -pos-right "200 200" in.pdf -o out.pdf

例:テキスト「HogeHoge」を各ページに貼り付けます。テキストの右端を座標(右=100pt , 高さ=50pt)にして表示されます。また座標(右=100pt , 高さ=50pt)に長さ100pt x 幅1ptの短径枠を上下に表示します。結果はout.pdf で書き出します。

>cpdf -add-text "HogeHoge" -pos-right "100 50" in.pdf AND -add-rectangle "1 100" -color red -pos-center "100 50" AND -add-rectangle "100 1" -color red -pos-center "100 50" -o out.pdf

cpdf -add-text "HogeHoge" -pos-right "100 50" in.pdf AND -add-rectangle "1 100" -color red -pos-center "100 50" AND -add-rectangle "100 1" -color red -pos-center "100 50" -o out3.pdf
ページ左から右 100pt,高さ 50ptが中心線

 

<メモ>

「エラーが出てコマンドが動かない~!」と困った時。
「Use -help for help.」のエラーが表示される時。
以下をお試しください。

  1. in.pdf の位置を CPDF の直後に移動する。
    例: cpdf in.pdf -xxxxxx yyyyyy -o out.pdf
  2. 出力PDFの前に「-o」が付いているかを再確認する。
    例: cpdf in.pdf -xxxxxx yyyyyy -o out.pdf
  3. AND を外して、個別に動作確認を行う。
    例:cpdf in.pdf -AAA "aaa" AND -BBB "bbb" -o out.pdf
    cpdf in.pdf -AAA "aaa" -o out.pdf
    cpdf in.pdf -BBB "bbb" -o out.pdf
  4. AND は小文字を使わない。
    OKの例:cpdf in.pdf -AAA "aaa" AND -BBB "bbb" -o out.pdf
    NOの例:cpdf in.pdf -AAA "aaa" and -BBB "bbb" -o out.pdf

 

-top <pt>

  • 機能:ベージ上部の中央から下へ指定ポイントの中央の位置に表示します。
  • 補足:テキストならばベースラインの中央に表示されます。
  • 参照:-add-text 。下2番目の例。

例:テキスト「Hoge」を各ページに貼り付けます。テキストはページの中央上部から下へ100pt の位置に表示します。結果はout.pdf で書き出します。

>cpdf -add-text "Hoge" -top 100 in.pdf -o out.pdf

例:ページの中央上部から下へテキスト「Hoge1」を50pt の位置に、「Hoge2」を150ptの位置に青色で表示します。更にページの中央上部から下へ赤線(短形枠)を200pt 引き、50ptには横線、150ptにも横線を引きます。結果はout.pdf で書き出します。

>cpdf in.pdf -add-text "Hoge1" -top 50 -color blue AND -add-text "Hoge2" -top 150 -color blue AND -add-rectangle "1 200" -top 0 -color red AND -add-rectangle "50 1" -top 50 -color red AND -add-rectangle "50 1" -top 150 -color red -o out.pdf

CPDF -top オペレーション

 

-topleft <pt>

  • 機能:ページ上部から下へ、更にページ左端から右へ同じ指定ポイントの位置に表示します。
  • 補足:テキストならばベースラインの左端に表示されます。
  • 参照:-add-text。下2番目の例。

例:テキスト「Hoge」を各ページに貼り付けます。テキストはページの上からと左端からの100pt の位置に表示します。結果はout.pdf で書き出します。

>cpdf -add-text "Hoge" -topleft 100 in.pdf -o out.pdf

例:各ページの上からと左端からテキスト「Hoge1」を5pt の位置に、「Hoge2」を50ptの位置に、「Hoge3」を100ptの位置に、「Hoge4」を150ptの位置に表示します。結果はout.pdf で書き出します。
※右下へ位置が移動する事に注意してください。

>cpdf in.pdf -add-text "Hoge1" -topleft 5 -color blue AND -add-text "Hoge2" -topleft 50 -color blue AND -add-text "Hoge3" -topleft 100 -color blue AND -add-text "Hoge4" -topleft 150 -color blue -o out.pdf

CPDF -topleft オペレーション

 

-topright <pt>

  • 機能:ページ上部から下へ、更にページ右端から左へ同じ指定ポイントの位置に表示します。
  • 補足:テキストならばベースラインの右端に表示されます。
  • 参照:-add-text 。下2番目の例 。

例:テキスト「Hoge」を各ページに貼り付けます。テキストはページの上の右端からの100pt の位置に表示します。結果はout.pdf で書き出します。

>cpdf -add-text "Hoge" -topright 100 in.pdf -o out.pdf

例:各ページの上からと右端からテキスト「Hoge1」を5pt の位置に、「Hoge2」を50ptの位置に、「Hoge3」を120ptの位置に、「Hoge4」を170ptの位置に表示します。結果はout.pdf で書き出します。
※左下へ位置が移動する事に注意してください。

>cpdf in.pdf -add-text "Hoge1" -topright 5 -color blue AND -add-text "Hoge2" -topright 50 -color blue AND -add-text "Hoge3" -topright 120 -color blue AND -add-text "Hoge4" -topright 170 -color blue -o out.pdf

CPDF -topright オペレーション

 

-left <pt>

  • 機能:ベージ左端中央から右へ指定ポイントの位置に表示します。
  • 補足:テキストならばベースラインの左端から表示されます。
  • 参照:-add-text 。下2番目の例。

例:テキスト「Hoge」を各ページに貼り付けます。テキストはページの中央で、左端からの100pt の位置に表示します。結果はout.pdf で書き出します。

>cpdf -add-text "Hoge" -left 100 in.pdf -o out.pdf

例:ページの左端中央から右へテキスト「Hoge1」を50pt の位置に、「Hoge2」を150ptの位置に青色で表示します。更にページの左端中央から右へ赤線(短形枠)を200pt 引き、50ptと150ptには位置を示す縦の赤線を引きます。結果はout.pdf で書き出します。

>cpdf in.pdf -add-text "Hoge1" -left 50 -color blue AND -add-text "Hoge2" -left 150 -color blue AND -add-rectangle "200 1" -left 0 -color red AND -add-rectangle "1 50" -left 50 -color red AND -add-rectangle "1 50" -left 150 -color red -o out.pdf

CPDF -left オペレーション

 

-bottomleft <pt>

  • 機能:ページ下部から上へ、更にページ左端から右へ同じ指定ポイントの位置に表示します。
  • 補足:テキストならばベースラインの左端に表示されます。
  • 参照:-add-text 。下2番目の例。

例:テキスト「Hoge」を各ページに貼り付けます。テキストはページの下の左端からの100pt の位置に表示します。結果はout.pdf で書き出します。

>cpdf -add-text "Hoge" -bottomleft 100 in.pdf -o out.pdf

例:各ページの下からと左端からテキスト「Hoge1」を5pt の位置に、「Hoge2」を50ptの位置に、「Hoge3」を100ptの位置に、「Hoge4」を150ptの位置に表示します。結果はout.pdf で書き出します。
※右上へ位置が移動する事に注意してください。

>cpdf in.pdf -add-text "Hoge1" -bottomleft 5 -color blue AND -add-text "Hoge2" -bottomleft 50 -color blue AND -add-text "Hoge3" -bottomleft 100 -color blue AND -add-text "Hoge4" -bottomleft 150 -color blue -o out.pdf

CPDF -bottomleft オペレーション

 

-bottom <pt>

  • 機能:ベージ下部の中央から上へ指定ポイントの中央の位置に表示します。
  • 補足:テキストならばベースラインの中央に表示されます。
  • 参照:-add-text 。下2番目の例。

例:テキスト「Hoge」を各ページに貼り付けます。テキストはページの下中央から上に100pt の位置に表示します。結果はout.pdf で書き出します。

>cpdf -add-text "Hoge" -bottom 100 in.pdf -o out.pdf

例:ページの中央下部から上へテキスト「Hoge1」を50pt の位置に、「Hoge2」を150ptの位置に青色で表示します。更にページの中央下部から上へ赤線(短形枠)を200pt 引き、50ptには横線、150ptにも横線を引きます。結果はout.pdf で書き出します。

>cpdf in.pdf -add-text "Hoge1" -bottom 50 -color blue AND -add-text "Hoge2" -bottom 150 -color blue AND -add-rectangle "1 200" -bottom 0 -color red AND -add-rectangle "50 1" -bottom 50 -color red AND -add-rectangle "50 1" -bottom 150 -color red -o out.pdf

CPDF -bottom オペレーション

 

-bottomright <pt>

  • 機能:ページ下部から上へ、更にページ右端から左へ同じ指定ポイントの位置に表示します。
  • 補足:テキストならばベースラインの右端に表示されます。
  • 参照:-add-text。下2番目の例。

例:テキスト「Hoge」を各ページに貼り付けます。テキストはページの下の右端からの100pt の位置に表示します。結果はout.pdf で書き出します。

>cpdf -add-text "Hoge" -bottomright 100 in.pdf -o out.pdf

例:各ページの下からと右端からテキスト「Hoge1」を5pt の位置に、「Hoge2」を50ptの位置に、「Hoge3」を100ptの位置に、「Hoge4」を150ptの位置に表示します。結果はout.pdf で書き出します。
※左上へ位置が移動する事に注意してください。

>cpdf in.pdf -add-text "Hoge1" -bottomright 5 -color blue AND -add-text "Hoge2" -bottomright 50 -color blue AND -add-text "Hoge3" -bottomright 100 -color blue AND -add-text "Hoge4" -bottomright 150 -color blue -o out.pdf

CPDF -bottomright オペレーション

 

  • 機能:ベージ右端中央から左へ指定ポイントの位置に表示します。
  • 補足:テキストならばベースラインの右端から表示されます。
  • 参照:-add-text。下2番目の例。

例:テキスト「Hoge」を各ページに貼り付けます。テキストはページの中央に右端からの100pt の位置に表示します。結果はout.pdf で書き出します。

>cpdf -add-text "Hoge" -right 100 in.pdf -o out.pdf

例:ページの右端中央から左へテキスト「Hoge1」を50pt の位置に、「Hoge2」を150ptの位置に青色で表示します。更にページの右端中央から左へ赤線(短形枠)を200pt 引き、50ptと150ptには位置を示す縦の赤線を引きます。結果はout.pdf で書き出します。

>cpdf in.pdf -add-text "Hoge1" -left 50 -color blue AND -add-text "Hoge2" -left 150 -color blue AND -add-rectangle "200 1" -left 0 -color red AND -add-rectangle "1 50" -left 50 -color red AND -add-rectangle "1 50" -left 150 -color red -o out.pdf

CPDF -right オペレーション

 

-diagonal

  • 機能:テキストをページ中央に左下から斜め上(対角線)の位置に表示します。
  • 参照:-add-text。下2番目の例。

例:テキスト「Hoge」を各ページに貼り付けます。テキストはページの中央に左下から斜め上へ対角線に表示します。結果はout.pdf で書き出します。

>cpdf -add-text "Hoge" -diagonal in.pdf -o out.pdf

例:テキスト「HogeHoge」を各ページの中央に左下から斜め上へ対角線に表示します。更にページ中央に縦横の赤い線を引きます。結果はout.pdf で書き出します。

>cpdf in.pdf -add-text "HogeHoge" -diagonal AND -add-rectangle "200 1" -center -color red AND -add-rectangle "1 200" -center -color red -o out.pdf

CPDF -diagonal オプション

 

-reverse-diagonal

  • 機能:テキストを ページ中央に左上から斜め下(対角線)の位置に表示します。
  • 参照:-add-text。下2番目の例。

例:テキスト「Hoge」を各ページに貼り付けます。テキストはページの中央に左上から斜め下へ対角線に表示します。結果はout.pdf で書き出します。

>cpdf -add-text "Hoge" -reverse-diagonal in.pdf -o out.pdf

例:テキスト「HogeHoge」を各ページの中央に左上から斜め下へ対角線に青色で表示します。更にページ中央に縦横の赤い線を引きます。結果はout.pdf で書き出します。

>cpdf in.pdf -add-text "HogeHoge" -reverse-diagonal -color blue AND -add-rectangle "200 1" -center -color red AND -add-rectangle "1 200" -center -color red -o out.pdf

CPDF -reverse-diagonal オペレーション

 

-center

  • 機能:ページの中央の位置に表示します。
  • 参照:-add-text。下2番目の例。

例:テキスト「Hoge」を各ページに貼り付けます。テキストはページの中央に配置します。結果はout.pdf で書き出します。

>cpdf -add-text "Hoge" -center in.pdf -o out.pdf

例:テキスト「HogeHoge」を各ページの中央に配置します。更に中央に縦横の赤い線を引きます。結果はout.pdf で書き出します。

>cpdf in.pdf -add-text "HogeHoge" -center -color blue AND -add-rectangle "200 1" -center -color red AND -add-rectangle "1 200" -center -color red -o out.pdf

CPDF -center オペレーション

 

-justify-left

  • 機能:複数行テキストを左揃えにします。
  • 参照:-add-text
  • 備考:テキスト内での改行は「¥n」の2文字で表します。

例:テキスト「Hoge-1」「Hoge--2」の2行を各ページに貼り付けます。2行のテキストは左揃えに配置します。結果はout.pdf で書き出します。

>cpdf -add-text "Hoge-1\nHoge--2" -justify-left in.pdf -o out.pdf

 

-justify-right

  • 機能:複数行テキストを右揃えにします。
  • 参照:-add-text
  • 備考:テキスト内での改行は「¥n」の2文字で表します。

例:テキスト「Hoge-1」「Hoge--2」の2行を各ページに貼り付けます。2行のテキストは右揃えに配置します。結果はout.pdf で書き出します。

>cpdf -add-text "Hoge-1\nHoge--2" -justify-right in.pdf -o out.pdf

 

-justify-center

  • 機能:複数行テキストを中央揃えにします。
  • 参照:-add-text
  • 備考:テキスト内での改行は「¥n」の2文字で表します。

例:テキスト「Hoge-1」「Hoge--2」の2行を各ページに貼り付けます。2行のテキストは中心揃えに配置します。結果はout.pdf で書き出します。

>cpdf -add-text "Hoge-1\nHoge--2" -justify-center in.pdf -o out.pdf

 

-underneath

  • 機能:テキスト(又は短形枠)はページコンテンツの下に貼り付けます。
    デフォルトはコンテンツの上です。
  • 補足:貼り付ける位置に画像等が有るとその下に表示されるので見えなくなる場合が有ります。
  • 参照:-add-text

例:テキスト「Hoge」を各ページに貼り付けます。テキストはページコンテンツの下(下層部)に配置します。結果はout.pdf で書き出します。

>cpdf -add-text "Hoge" -underneath in.pdf -o out.pdf

 

-line-spacing <number>

  • 機能:行間隔を指定します。デフォルトは1です。
  • 参照:-add-text
  • 備考:テキスト内での改行は「¥n」の2文字で表します。

例:テキスト「Hoge1¥nHoge2」を各ページに貼り付けます。テキストの行間隔は3です。結果はout.pdf で書き出します。

>cpdf -add-text "Hoge1\nHoge2" -line-spacing 3 in.pdf -o out.pdf

 

-midline

  • 機能:テキストの位置決めはベースラインではなく、テキストのラインの中心線に対してなります。
  • 参照:-add-text

例:テキスト「Hoge」を各ページに貼り付けます。テキストはページ上部から100ptの場所です。テキストのラインの中心線に対しての位置になります。結果はout.pdf で書き出します。

>cpdf -add-text "Hoge" -top 100 -midline in.pdf -o out.pdf

 

-topline

  • 機能:テキストの位置決めはベースラインではなく、テキストの上(頂点)に対してなります。
  • 参照:-add-text

例:テキスト「Hoge」を各ページに貼り付けます。テキストはページ上部から100ptの場所です。テキストの上(頂点)がその位置になります。結果はout.pdf で書き出します。

>cpdf -add-text "Hoge" -top 100 -topline in.pdf -o out.pdf

 

<メモ>

複数の処理を連結するには「AND 」を使います。

例:Hogeをテキスト表示して、その下に赤の線(短径枠)を描く。
>cpdf in.pdf -add-text "Hage" AND -add-rectangle "100 1" -color red -o out.pdf
AND以降の処理は 「-o out.pdf」の前に追加します。
但し最初は機能分割してテスト確認し、その後でAND 結合しましょう。
And、andは駄目です。全て大文字の AND です。

 

-relative-to-cropbox

  • 機能:テキストはメディアボックスではなく、クロックボックスを基準にして追加します。クロップボックスに対して相対的に指定します。
  • 参照:-add-text
  • 備考:デフォルトの位置は-topleft 100と同じです。

例:テキスト「Hoge」を各ページに貼り付けます。クロックボックスを基準にして表示します。結果はout.pdf で書き出します。

>cpdf -add-text "Hoge" -relative-to-cropbox in.pdf -o out.pdf

 

-prerotate

  • 機能:テキストの位置決めをする時に、ページが回転状態であるなら回転を戻した状態を想定して貼り付けます。
    一旦-upright オペレーションを呼び出したと同じ状態になります。但し、ページの回転を実際に元に戻す訳では無いです。
  • 補足:通常はスタンプ(テキスト)の位置を決める時にページの回転は考慮されません。考慮が必要な時はこの -prerotate を追加します。
  • バグ:テストで動作を確認できませんでした。何か別の条件が必要なのかもしれません。
  • 参照:-add-text

例:テキスト「Hoge」を各ページに貼り付けます。回転状態にあるページは一旦元に戻した状態で処理をします。結果はout.pdf で書き出します。※バグ

>cpdf -add-text "Hoge" -prerotate in.pdf -o out.pdf

 

-twoup

  • 機能:1ページに2ページを配置します。
    元のページの寸法は半分になります。
    A4縦の頁の場合は、左90度回転して横に2頁つながった状態になります。※下記画像を参照。
  • 形式:cpdf -twoup in.pdf -o out.pdf
  • 備考:ペース数は半分になります。しおりは残り正しく機能します。
  • 注意:結構、予期しない結果になる箇所が有ります。結果は必ず全ページ確認してください。
    • 目次上に有るリンク等は配置が失敗する場合が有ります。
    • 縦ページ、横ページ、回転が入り乱れたPDFは予期しない結果になる場合が有ります。

例:in.pdf の2頁を1頁に再配置します。結果はout.pdf で書き出します。

>cpdf -twoup in.pdf -o out.pdf

cpdf -twoup in.pdf -o out.pdf
元はA4縦の頁です。

 

-twoup-stack

  • 機能:1ページに2ページを配置します。
    元のページの寸法は変化しません。よって配置先のページサイズは2倍になります。
    A4縦の頁の場合は、左90度回転して横に2頁つながった状態になります。
  • 形式:cpdf -twoup-stack in.pdf -o out.pdf
  • 補足:-twoup と違うのは配置先ページの寸法(サイズ)が2倍になることです。

例:in.pdf の2頁を1頁に再配置します。配置前のページサイズは変化しません。結果はout.pdf で書き出します。

>cpdf -twoup-stack in.pdf -o out.pdf

 

-pad-before

  • 機能:指定したページの前に空白のページを追加します。
  • 形式:cpdf -pad-before in.pdf [<range>] -o out.pdf
  • 参照:range
  • 備考:in.pdf 2-4 と範囲しての場合は2,3,4頁の前に空白のページを追加します。しおりは影響しません。

例:in.pdf の1頁目の前に空白のページを追加します。先頭ページは空白ページになります。結果はout.pdf で書き出します。

>cpdf -pad-before in.pdf 1 -o out.pdf

 

-pad-after

  • 機能:指定したページの後に空白のページを追加します。
  • 形式:cpdf -pad-after in.pdf [<range>] -o out.pdf
  • 参照:range
  • 備考:しおりは影響しません。

例:in.pdf の1頁目の後に空白のページを追加します。2ページ目は空白ページになります。結果はout.pdf で書き出します。

>cpdf -pad-after in.pdf 1 -o out.pdf

 

-pad-every <integer>

  • 機能:n ページごとに空白のページを追加します。
  • 形式:cpdf -pad-every [<integer>] in.pdf -o out.pdf
  • 参照:range
  • 備考:しおりは影響しません。

例:in.pdf の2頁ごとに空白のページを追加します。結果はout.pdf で書き出します。

>cpdf -pad-every 2 in.pdf -o out.pdf

 

-pad-multiple <integer>

  • 機能:空白ページを追加し、nページの倍数を持つようにします。
  • 形式:cpdf -pad-multiple [<integer>] in.pdf -o out.pdf
  • 参照:range
  • バグ:機能しません。それとも理解不足?

例:in.pdfに空白のページを追加して、8ページの倍数にします。※バグ:結果不良

>cpdf -pad-multiple 8 in.pdf -o out.pdf

 

-list-annotations

  • 機能:注釈を一覧表示します。
    結果は標準出力(DOS画面上)です。
  • 形式:cpdf -list-annotations in.pdf [<range>]
  • 参照:range
  • 備考:標準出力(DOS画面上)に表示して意味ないです。通常はリダイレクトでテキストファイルへ出力して使うはずです。
    注釈に日本語の文字が含まれる場合は「-utf8」オペレーションを付かないと文字化けを起こします。

例:in.pdf の注釈一覧をテキストファイル cyusyaku-list.txt へリダイレクトします。注釈は日本語を含んでいるので「-utf8」オペレーションを追加します。

>cpdf -utf8 -list-annotations in.pdf > cyusyaku-list.txt

 

-copy-annotations

  • 機能:指定されたPDFから注釈をコピーします。
  • 形式:cpdf -copy-annotations from.pdf to.pdf [<range>] -o out.pdf
  • 参照:range

例:from.pdf の 1から10頁の範囲の注釈を to.pdf へコピーします。結果は out.pdf へ書き出します。to.pdf は更新しません。

>cpdf -copy-annotations from.pdf to.pdf 1-10 -o out.pdf

 

-remove-annotations

  • 機能:注釈を削除します。
  • 形式:cpdf -remove-annotations in.pdf [<range>] -o out.pdf
  • 参照:range

例:in.pdf の1頁から5頁までの注釈を削除します。結果はout.pdf で書き出します。in.pdf は更新しません。

>cpdf -remove-annotations in.pdf 1-5 -o out.pdf

 

-list-fonts

  • 機能:フォント一覧を出力します。
    ページ単位に出力します。
    結果は標準出力(DOS画面上)に表示されます。
  • 形式:cpdf -list-fonts in.pdf
  • 備考:ページ範囲は指定できません。

例:in.pdf のフォント一覧を出力します。結果はテキストファイル  list-fonts.txt へリダイレクトします。

>cpdf -list-fonts in.pdf > list-fonts.txt

 

-info

  • 機能:PDFの基本情報を出力します。
    結果は標準出力(DOS画面上)に表示されます。
  • 形式:cpdf -info [-raw | -utf8] in.pdf
  • 備考:内容には日本語を含む場合は -utf8 オペレーションを追加します。
  • 注意:ここでは文書プロパティの内容も表示されます。しかしAcrobatが表示する文書プロパティの内容と一致するとは限りません。理由は -set-title-set-author-set-subject-set-keywords-set-creator-set-producer-set-create-set-modify を御覧ください。

例:in.pdf の基本情報をテキストファイル info.txt へリダイレクトします。

>cpdf -info -utf8 in.pdf > info.txt
例:in.pdf の基本情報を表示します。

>cpdf -info in.pdf
Encryption: Not encrypted
Permissions:
Linearized: false
Version: 1.6
Pages: 765
Title: XX for HOGE Reference
Author: HOGE Developer Support
Subject: HOGE 4.0 SDK
Keywords:
Creator: FrameMaker 7.0
Producer: Acrobat Distiller 6.0.1 (Windows)
Created: D:20020516132916Z
Modified: D:20111003223306+09'00'
XMP pdf:Producer: Acrobat Distiller 4.0.1 (Windows)
XMP xmp:CreateDate: 2002-05-16T13:29:16Z
XMP xmp:CreatorTool: FrameMaker 3.0
XMP xmp:MetadataDate: 2011-10-03T22:33:06+09:00
XMP xmp:ModifyDate: 2011-10-03T22:33:06+09:00
XMP dc:title: XX for HOGE Reference
XMP dc:creator: HOGE Developer Support

 

-page-info

  • 機能:ページ情報を出力します。
  • 補足:範囲内のすべてのページについて、ページラベル、メディアボックス、その他のボックスをページ単位で標準出力(DOS画面上)に出力します。各ボックスの情報を取得するのにも利用できます。
  • 形式:cpdf -page-info in.pdf <range>
  • 備考:マニュアルにはページ範囲 range 指定は無いですが立派に機能します。

例:in.pdf のページ情報をテキストファイル page-info.txt へリダイレクトします。※コマンドラインとして使用するのはこのサンプルでしょう。

>cpdf -page-info in.pdf > page-info.txt

例:in.pdf の1頁から3頁のページ情報を表示します。

>cpdf -page-info in.pdf 1-3
Page 1:
Label:
MediaBox: 0.000000 0.000000 1104.000000 991.000000
CropBox: 0.000000 0.000000 1104.000000 991.000000
BleedBox:
TrimBox:
ArtBox:
Rotation: 0

 

<メモ>

文書プロパティ / 概要を更新すると勝手に推測している -set-title(タイトル)、-set-author(※不明)、-set-subject(サブタイトル)、-set-keywords(キーワード)、-set-creator(アプリケーション)、-set-producer(PDF変換)、-set-create(作成日)、-set-modify(更新日)を実行してもAcrobatで表示する文書プロパティには反映されません。

詳細は不明ですが CPDF は独自のPDF内部の場所に更新を掛けているみたいです。よって -info では更新結果を確認はできますが、 Acrobat 又は Adobe Reader で文書プロパティを見ても更新内容の確認はできません。
また日本語文字は「Bad UTF8 in codepoints_of_utf8」エラーとなり使用は不可です。
よって使用時はよく事前検証してからでお願いします。
 
適さないと思われる場合は「関数:PDFの文書プロパティ(概要)を更新」の利用をご検討ください。
 
「※不明」とはCPDFが独自に管理しているデータと思われる部分です。-print-metadata でも、Acrobat Readerの文書プロパティからでも表示出来ない項目です。

 

-set-author <Author of document>

  • 機能:文書プロパティ / 概要の  Author を設定します。
    ※PDFの文書プロパティには Author という項目は無いです。
  • 形式:cpdf -set-author <Author of document> in.pdf -o out.pdf
  • バグ:機能は不完全です。使用は控えて下さい。日本語も使用不可。メタデータも更新不可。
    関数:PDFの文書プロパティ(概要)を更新」をご利用ください。

例:in.pdf の文書辞書の Author を "Mr.Hoge"に更新し、結果はout.pdfへ書き出します。

>cpdf -set-author "Mr.Hoge" in.pdf -o out.pdf

 

-set-title <Title of document>

  • 機能:文書プロパティ / 概要のTitle(タイトル)を設定します。
  • 形式:cpdf -set-title <Title of document> in.pdf -o out.pdf
  • バグ:機能は不完全です。使用は控えて下さい。日本語も使用不可。メタデータも更新不可。
    関数:PDFの文書プロパティ(概要)を更新」をご利用ください。

例:in.pdf の文書辞書の Title(タイトル) を "HogeT"に更新します。結果はout.pdfへ書き出します。

>cpdf -set-title "HogeT" in.pdf -o out.pdf

 

-set-subject <Subject of document>

  • 機能:文書プロパティ / 概要のSubject(サブタイトル)を設定します。
  • 形式:cpdf -set-subject <Subject of document> in.pdf -o out.pdf
  • バグ:機能は不完全です。使用は控えて下さい。日本語も使用不可。メタデータも更新不可。
    関数:PDFの文書プロパティ(概要)を更新」をご利用ください。

例:in.pdf の文書辞書の Subject(サブタイトル) を "HogeS"に更新します。結果はout.pdfへ書き出します。

>cpdf -set-subject "HogeS" in.pdf -o out.pdf

 

-set-keywords <Keywords of document>

  • 機能:文書プロパティ / 概要のkeywords( キーワード)を設定します。
  • 形式:cpdf -set-keywords <Keywords of document> in.pdf -o out.pdf
  • バグ:機能は不完全です。使用は控えて下さい。日本語も使用不可。メタデータも更新不可。
    関数:PDFの文書プロパティ(概要)を更新」をご利用ください。

例:in.pdf の文書辞書の Keywords(キーワード) を "HogeK"に更新します。結果はout.pdfへ書き出します。

>cpdf -set-keywords "HogeK" in.pdf -o out.pdf

 

-set-create <Create date of document>

  • 機能:文書プロパティ / 概要のCreate date(作成日)を設定します。
  • 形式:cpdf -set-create <Create date of document> in.pdf -o out.pdf
  • バグ:機能は不完全です。使用は控えて下さい。メタデータも更新不可。
    関数:PDFの文書プロパティ(概要)を更新」をご利用ください。

例:in.pdf の文書辞書の Create date(作成日) を "D:19970915110347-08'00'" に更新します。結果はout.pdfへ書き出します。

>cpdf -set-create "D:19970915110347-08'00'" in.pdf -o out.pdf

 

-set-modify <Modified date of document>

  • 機能:文書プロパティ / 概要のModified(更新日)を設定します。
  • 形式:cpdf -set-modify <Modified date of document> in.pdf -o out.pdf
  • バグ:機能は不完全です。使用は控えて下さい。メタデータも更新不可。
    関数:PDFの文書プロパティ(概要)を更新」をご利用ください。

例:in.pdf の文書辞書の Modified date(更新日) を "D:19990915110347-12'00'" に更新します。結果はout.pdfへ書き出します。

>cpdf -set-modify "D:19990915110347-12'00'" in.pdf -o out.pdf

 

-set-creator <Creator of document>

  • 機能:文書プロパティ / 概要のCreator(アプリケーション)を設定します。
  • 形式:cpdf -set-creator <Creator of document> in.pdf -o out.pdf
  • バグ:機能は不完全です。使用は控えて下さい。日本語も使用不可。メタデータも更新不可。
    関数:PDFの文書プロパティ(概要)を更新」をご利用ください。

例:in.pdf の文書辞書の Creator(アプリケーション) を "Hoge program" に更新します。結果はout.pdfへ書き出します。

>cpdf -set-creator "Hoge program" in.pdf -o out.pdf

 

-set-producer <Producer of document>

  • 機能:文書プロパティ / 概要のProducer(PDF変換)を設定します。
  • 形式:cpdf -set-producer <Producer of document> in.pdf -o out.pdf
  • バグ:機能は不完全です。使用は控えて下さい。日本語も使用不可。メタデータも更新不可。
    関数:PDFの文書プロパティ(概要)を更新」をご利用ください。

例:in.pdf の文書辞書の Producer(PDF変換)を "Hoge Distiller" に更新します。結果はout.pdfへ書き出します。

>cpdf -set-producer "Hoge Distiller" in.pdf -o out.pdf

 

<メモ>

Trapped と言うトラップ情報がPDF内部の文書情報辞書に有ります。この情報は文書プロパティやメタデータとしては見ることは出来ません。トラップ情報を処理する専用のソフトが扱うみたいです。実際の使用方法は不明です。
トラップ情報(Trapped)これはPDF仕様 1.7 「Adobe® Portable Document Format Version 1.7 November 2006」に明記されています。

 

-set-trapped

  • 機能:トラップされたとしてマークします。
    文書情報辞書に「Trapped true」を追加します。
  • 形式:cpdf -set-trapped in.pdf -o out.pdf
  • 備考:
    • バイナリーエディタで内容を確認できました。
    • -info-print-metadataでも確認は出来ません。

例:in.pdf のトラップ情報を真(true)に設定して、結果は out.pdf で書き出します。

>cpdf -set-trapped in.pdf -o out.pdf

 

-set-untrapped

  • 機能:トラップされてないとしてマークします。
    文書情報辞書に「Trapped false」を追加します。
  • 形式:cpdf -set-untrapped in.pdf -o out.pdf
  • 備考:
    • バイナリーエディタで内容を確認できました。
    • -info-print-metadataでも結果確認は出来ません。

例:in.pdf のトラップ情報を偽(false)に設定します。結果は out.pdf で書き出します。

>cpdf -set-untrapped in.pdf -o out.pdf

 

-set-page-layout <layout>

  • 機能:文書プロパティで「開き方」タブ->「レイアウトと倍率 / ページレイアウト」の文書を開くときにページレイアウトを設定します。
  • 形式:cpdf -set-page-layout <layout> in.pdf -o out.pdf
CPDF:-set-page-layout
  • 例:単一ページ
    >cpdf -set-page-layout SinglePage in.pdf -o out.pdf
  • 例:連続ページ
    >cpdf -set-page-layout OneColumn in.pdf -o out.pdf
  • 例:見開きページ
    >cpdf -set-page-layout TwoPageLeft in.pdf -o out.pdf
  • 例:連続見開きページ
    >cpdf -set-page-layout TwoColumnLeft in.pdf -o out.pdf
  • 例:見開きページ(表紙)
    >cpdf -set-page-layout TwoPageRight in.pdf -o out.pdf
  • 例:連続見開きページ(表紙)
    >cpdf -set-page-layout TwoColumnRight in.pdf -o out.pdf

 

-set-page-mode <mode>

  • 機能:文書プロパティで「開き方」タブ->「レイアウトと倍率 / 表示」の文書を開く時のページモードを設定します。
    又は「フルスクリーンモードで開く」をオンにします。
  • 形式:cpdf -set-page-mode <mode> in.pdf -o out.pdf
CPDF:-set-page-mode
  • 例:ページのみ
    >cpdf -set-page-mode UseNone in.pdf -o out.pdf
  • 例:しおりパネルとページ
    >cpdf -set-page-mode UseOutlines in.pdf -o out.pdf
  • 例:ページパネルとページ
    >cpdf -set-page-mode UseThumbs in.pdf -o out.pdf
  • 例:添付ファイルパネルとページ
    >cpdf -set-page-mode UseAttachments in.pdf -o out.pdf
  • 例:レイヤーパネルとページ
    >cpdf -set-page-mode UseOC in.pdf -o out.pdf

以下だけはタイプが異なる例です。

  • 例:「フルスクリーンモードで開く」をオン
    >cpdf -set-page-mode FullScreen in.pdf -o out.pdf

注記:上記は逆にオフにする方法が見つかってないので、実行時は要注意です!

 

-open-at-page <page number>

  • 機能:文書プロパティで「開き方」タブ->「レイアウトと倍率 / 開くページ」を設定します。
  • 形式:cpdf -open-at-page <page number> in.pdf -o out.pdf
CPDF:-open-at-page

例:「開くページ」を15にセットします。

>cpdf -open-at-page 15 in.pdf -o out.pdf

 

-open-at-page-fit <page number>

  • 機能:文書プロパティで「開き方」タブ->「レイアウトと倍率」の「倍率」を「全体表示」と、「開くページ」のページ番号を設定します。
  • 形式:cpdf -open-at-page-fit <page number> in.pdf -o out.pdf
cpdf -open-at-page-fit 2 in.pdf -o out.pdf

例:in.pdf の文書プロパティで「開き方」タブ->「レイアウトと倍率 」の「 開くページ」を2に、「倍率」を「全体表示」に設定します。結果はout.pdfで書き出します。

>cpdf -open-at-page-fit 2 in.pdf -o out.pdf

 

-set-metadata <metadata-file>

  • 機能:メタデータを入力ファイルで設定します。
    入力ファイルは-print-metadataで書き出したのと同じ形式か、XML形式のXMPデータである必要が有ります。
  • 形式:cpdf -set-metadata <metadata-file> in.pdf -o out.pdf

例:meta-data.xml ファイルの内容でin.pdf のメタデータを更新し、結果は out.pdfで書き出します。

>cpdf -set-metadata meta-data.xml in.pdf -o out.pdf

 

  • 機能:メタデータを標準出力(DOS画面)に出力します。
  • 形式:cpdf -print-metadata in.pdf
  • 備考:マニュアルに形式が「cpdf -print-metadata in.pdf -o out.pdf」と記述されてますが間違いです。

例:in.pdf のメタデータをテキストファイル meta-data.xml へリダイレクトします。

>cpdf -print-metadata in.pdf > meta-data.xml

 

-remove-metadata

  • 機能:PDFのメタデータを削除します。
  • 形式:cpdf -remove-metadata in.pdf -o out.pdf
  • バグ:メタデータは削除されません。

例:in.pdf のメタデータを削除します。結果は out.pdf で書き出します。

>cpdf -remove-metadata in.pdf -o out.pdf

 

<メモ>

メタデータに関する情報:

  1. 文書プロパティを構成するメタデータと文書情報ディクショナリーについて。
    • PDF構文 (PDF Syntax ISO 32000-1)
    • XMP PDF埋め込みメタデータ
    • Adobe:Acrobat ヘルプ /PDF のプロパティとメタデータ
    • Adobe:XMP メタデータ
    • Adobe:XMP メタデータ
    • Adobe:Importing Metadata into PDF Documents (英語)
  2. OLEからMetaDataとInfoの操作について。
    JavaScript for Acrobat API Reference Adobe Acrobat SDK バージョン 8.0
  3. XMPに関してダウンロードできるPDF文書とサンプル。
    • Adobe XMP Developer Center (英語) サイト
      上記のリンク先から Agree and download XMP Toolkit SDK CC-2016.7 (ZIP, 38.7 MB) をダウンロード。
      英語ですがこの ZIP ファイルは必ず入手して下さい
      非常に参考になります。

 

 

-hide-toolbar <true|false>

  • 機能:文書プロパティの「ツールバーを非表示」をオン・オフします。
    true でオン、false でオフにします。デフォルトは false のオフです。
  • 形式:cpdf -hide-toolbar <true | false> in.pdf -o out.pdf

例:in.pdf の文書プロパティの「ツールバーを非表示」をオンにします。結果は out.pdf で書き出します。

>cpdf -hide-toolbar true in.pdf -o out.pdf

 

-hide-menubar <true|false>

  • 機能:文書プロパティの「メニューバーを非表示」をオン・オフします。
    true でオン、false でオフにします。デフォルトは false のオフです。
  • 形式:cpdf -hide-menubar <true | false> in.pdf -o out.pdf

例:in.pdf の文書プロパティの「メニューバーを非表示」をオンにします。結果は out.pdf で書き出します。

>cpdf -hide-menubar true in.pdf -o out.pdf

 

-hide-window-ui <true|false>

  • 機能:文書プロパティの「ウィンドウコントロールを非表示」をオン・オフします。
    true でオン、false でオフにします。デフォルトは false のオフです。
  • 形式:cpdf -hide-window-ui <true | false> in.pdf -o out.pdf

例:in.pdf の文書プロパティの「ウィンドウコントロールを非表示」をオンにします。結果は out.pdf で書き出します。

>cpdf -hide-window-ui true in.pdf -o out.pdf

 

-fit-window <true|false>

  • 機能:文書プロパティ「開き方」タブ->「ウインドウオペレーション」の「ページにウィンドウサイズを合わせる」をオン・オフにします。
    true でオン、false でオフにします。デフォルトは false のオフです。
  • 形式:cpdf -fit-window <true | false> in.pdf -o out.pdf

例:in.pdf の文書プロパティの「ページにウィンドウサイズを合わせる」をオンにします。結果は out.pdf で書き出します。

>cpdf -fit-window true in.pdf -o out.pdf

 

-center-window <true|false>

  • 機能:文書プロパティ「開き方」タブ->「ウインドウオペレーション」の「ウィンドウを画面中央に配置」をオン・オフにします。
    true でオン、false でオフにします。デフォルトは false のオフです。
  • 形式:cpdf -center-window <true | false> in.pdf -o out.pdf

例:in.pdf の文書プロパティの「ウィンドウを画面中央に配置」をオンにします。結果は out.pdf で書き出します。

>cpdf -center-window true in.pdf -o out.pdf

 

-display-doc-title <true|false>

  • 機能:文書プロパティ「開き方」タブの「表示」を設定します。
    「ファイル名」は False に、「文書のタイトル」は Trueで設定できます。
    デフォルトは「文書のタイトル」の Trueです。
  • 形式:cpdf -display-doc-title <true | false> in.pdf -o out.pdf

例:in.pdf の文書プロパティの「表示」を「文書のタイトル」:True にします。結果は out.pdf で書き出します。

>cpdf -display-doc-title true in.pdf -o out.pdf

 

-pages

  • 機能:ドキュメントのページ数を標準出力します。
  • 形式:cpdf -pages in.pdf

例:in.pdf のページ数を標準出力します。結果は765頁です。

>cpdf -pages in.pdf
765

 

-list-attached-files

  • 機能:添付ファイルの一覧を標準出力します。
  • 形式:cpdf -list-attached-files in.pdf
  • 備考:DOS画面へ標準出力すると文字化けを起こします。テキストファイルへリダイレクトして内容を確認したほうがイイです。

例:in.pdf の添付ファイルの一覧をテキストファイル list.txt へリダイレクトします。

>cpdf -list-attached-files in.pdf > list.txt

 

-attach-file <filename>

  • 機能:PDFにファイルを添付します。
  • 補足:-attach-fileの後には1つのファイルだけしか指定出来ません。しかし ANDで-attach-fileを繰り返して複数のファイルが添付出来ます。
  • 形式:cpdf -attach-file <filename> [-to-page <page number>] in.pdf -o out.pdf
  • 参照:-to-page 。
  • バグ:添付されません。機能しません。
    -to-page を使用してのページレベルならば正常に添付されます。

例:in.pdf に sheet1.xls を添付します。結果は out.pdf で書き出します。
※機能しません。

>cpdf -attach-file sheet1.xls in.pdf -o out.pdf

例:in.pdf に C1.pdf とC2.pdf を添付します。結果は out.pdf で書き出します。※機能しません。

>cpdf -attach-file C1.pdf AND -attach-file C2.pdf in.pdf -o out.pdf

 

-to-page <page number>

  • 機能:ドキュメントレベルではなく、指定されたページにファイルを添付します。
    -attach-fileオペレーションと一緒に使用します。
    -to-pageオペレーションは最大で1回しか指定できません。
  • 形式:cpdf -attach-file <filename> [-to-page <page number>] in.pdf -o out.pdf

例:in.pdf の2ページ目に sheet1.xls を添付します。結果は out.pdf で書き出します。

>cpdf -attach-file sheet1.xls -to-page 2 in.pdf -o out.pdf

例:以下でもエラーになりません。前の「-to-page 1」は無視されます。2ページ目に2つのファイルは添付されます。

>cpdf -attach-file C1.pdf AND -attach-file C2.pdf -to-page 2 in.pdf -o out.pdf

例:前の「-to-page 1」は無視されます。エラーになりません。2ページ目に2つのファイルは添付されます。

>cpdf -attach-file C1.pdf -to-page 1 AND -attach-file C2.pdf -to-page 2 in.pdf -o out.pdf

 

-remove-files

  • 機能:埋め込まれたドキュメントレベルの添付ファイル を削除します。
  • 形式:cpdf -remove-files in.pdf -o out.pdf
  • 注意:テストではページレベルも全て削除されました。

例:in.pdf に埋め込まれた添付ファイル を全て削除します。結果は out.pdf で書き出します。

>cpdf -remove-files in.pdf -o out.pdf

 

-image-resolution <minimum resolution>

  • 機能:指定されたdpi以下の画像を一覧表示します。
  • 形式:cpdf -image-resolution <minimum resolution> in.pdf [<range>]
  • 参照:range
  • 出力:形式はページ番号、画像名、xピクセル、yピクセル、x解像度、y解像度です。 解像度は使用時の画像の有効解像度(スケーリング、回転などを考慮)を表示します。

>cpdf -image-resolution 300 in.pdf
3, /I2, 1104, 991, 72.000000, 72.000000
4, /I3, 1006, 500, 96.000000, 96.000000
5, /I4, 640, 640, 72.000000, 72.000000

 

-copy-font <fromfile.pdf>

  • 機能:名前付きフォントをコピーします。
  • 形式:cpdf -copy-font fromfile.pdf -copy-font-page -copy-font-name in.pdf [] -o out.pdf
    • fromfile.pdf:フォントのコピー元のPDFファイル名
    • int:コピー元の対象ページ番号
    • name:フォント名。この場合は -list-fonts で表示される一覧の最初の項目名。
    • range:コピー先のPDFファイルのページ番号の範囲。未指定時は全ページが範囲の対応。

例:fromfile.pdf の1ページ目から /F10 のフォント名を in.pdf の全てのページへコピーします。結果は out.pdf で書き出します。

>cpdf -copy-font fromfile.pdf -copy-font-name /F10 -copy-font-page 1 in.pdf -o out.pdf

 

-copy-font-page <int>

  • 機能:コピーするフォントが使用されているページを指定します。
    指定したページ番号に該当フォントが無いとエラーになります。
  • 形式:cpdf -copy-font fromfile.pdf -copy-font-page <int> -copy-font-name <name> in.pdf [<range>] -o out.pdf
  • 参照:-copy-fontrange

例:無し

 

-copy-font-name <name>

  • 機能:コピーするフォントの名前を指定します。
    指定したページ番号に該当フォントが無いとエラーになります。
  • 形式:cpdf -copy-font fromfile.pdf -copy-font-page <int> -copy-font-name <name> in.pdf [<range>] -o out.pdf
  • 参照:-copy-fontrange

例:無し

 

-remove-fonts

  • 機能:埋め込みフォントを削除します。
  • 注意:後で文字の表示や印刷が出来ない場合が有るのでご注意ください。
  • 形式:cpdf -remove-fonts in.pdf -o out.pdf

例:in.pdf の埋め込みフォントを削除します。結果はout.pdf で書き出します。

>cpdf -remove-fonts in.pdf -o out.pdf

実行後にPDFを開くと以下の様な警告が表示される場合が有ります。

cpdf -remove-fonts in.pdf -o out.pdf

 

-missing-fonts

  • 機能:不足しているフォントを一覧表示します。
  • 形式:cpdf -missing-fonts in.pdf

例:in.pdf の不足しているフォントを一覧表示します。

>cpdf -missing-fonts in.pdf

-list-fonts と -missing-fonts の結果を比較して見ましたが、・・判りませんでした。(汗

 

-remove-id

  • 機能:ファイルの/ IDタグを削除します。
  • 形式:cpdf -remove-id in.pdf -o out.pdf

例:in.pdf ファイルの/IDタグを削除しま、結果はout.pdf で書き出します。

>cpdf -remove-id in.pdf -o out.pdf

 

-draft

  • 機能:ファイルから画像を削除します。
    画像のみのページは空のページになります。
    インクを少なくして印刷したい時などに利用できます。
  • 形式:cpdf -draft [-boxes] in.pdf [] -o out.pdf
    • -boxes:画像を削除した場所に十字のボックスを埋め込みます。
  • 参照:range

例:in.pdf から画像を削除し、結果はout.pdfへ書き出します。

>cpdf -draft in.pdf -o out.pdf

 

-boxes

  • 機能:画像を削除した場所に十字のボックスを埋め込みます。
  • 補足:削除した画像の場所が判るようにします。-draftオペレーションに追加します。但しすべての場合に完全に見えることが保証されているわけではありません(ビットマップが部分的にベクトルオブジェクトで覆われているか、元の画像にクリップされている可能性があります)。
  • 形式:cpdf -draft [-boxes] in.pdf [<range>] -o out.pdf
  • 参照:-draftrange
  • 問題:動作は確認できませんでした。

例:in.pdf から画像を削除します。画像を削除した場所に十字のボックスを埋め込みます。結果はout.pdfへ書き出します。

>cpdf -draft -boxes in.pdf -o out.pdf

 

-blacktext

  • 機能:テキスト文字を黒色にします。
  • 補足:うまく印刷されない色のテキストを黒くして読むことが出来るようにします。但し アウトラインに変換されたテキストやフォームの一部であるテキストには適用されません。
  • 形式:cpdf -blacktext in.pdf [<range>] -o out.pdf
  • 参照:range

例:in.pdf の見えにくい色(薄い黄色)のテキスト文字の色を黒に変換します。結果はout.pdfへ書き出します。

 

>cpdf -blacktext in.pdf -o out.pdf

-blacklines

  • 機能:指定されたページの全ての行を黒くします。
  • 形式:cpdf -blacklines in.pdf [<range>] -o out.pdf
  • 参照:range
  • 備考:グリーギング 機能と同じような気がするが・・?
  • 検証:動作は確認できませんでした。

例:in.pdf のページ上の行を黒くし、結果はout.pdfへ書き出します。

 

>cpdf -blacklines in.pdf -o out.pdf

-blackfills

  • 機能:指定されたページのすべての塗りつぶしを黒く塗りつぶします。
  • 形式:cpdf -blackfills in.pdf [<range>] -o out.pdf
  • 参照:range
  • 検証:黒く塗りつぶす所と塗りつぶさない所の違いが判らない。

例:in.pdf のページ上のすべての画像の塗りつぶしを黒く塗りつぶします。結果はout.pdfへ書き出します。

>cpdf -blackfills in.pdf -o out.pdf

 

-thinlines <minimum thickness>

  • 機能:線の太さを指定された幅に変更します。
    テキスト文字の太さでは無いです。
  • 補足:稀に非常に細い線、又は0の値さえ使用します。これはPDFで「出力デバイスで最も薄い線」を意味します。 画面上の作業では問題ありませんが市販のプリンタなどの高解像度デバイスで印刷するとかすかに消えてしまうことがあります。 -thinlinesオペレーションは細いすべての線を<minimal thickness>の太さに変更することでこれを防ぎます。
  • 形式:cpdf -thinlines <minimum thickness> in.pdf [<range>] -o out.pdf
  • 参照:range
  • 検証:マニュアルには「<minimal thickness>より細い線を指定の太さに変更する」と書かれています、しかし形式には細い線の値の指定は無く、ただ太くする幅のみの指定になります。またテスト結果から細い線はどのような線なのかも定義が見い出せませんでした。

例:in.pdf のページ上のすべての細い線を2.0mmに変更します。結果はout.pdfへ書き出します。

>cpdf -thinlines 2.0mm in.pdf -o out.pdf

 

-remove-clipping

  • 機能:クリッピングパスを削除します。
  • 形式:cpdf -remove-clipping in.pdf -o out.pdf

例:in.pdf のページ上のすべてのクリッピングパスを削除し、結果はout.pdfへ書き出します。

>cpdf -remove-clipping in.pdf -o out.pdf

 

-clean

  • 機能:ファイルをガベージコレクトします。
    ファイルへの更新により不要データが残る場合が有ります。このオペレーションはその不要なデータを削除します。
  • 形式:cpdf -clean in.pdf -o out.pdf
  • 備考:ガベージコレクトとはメモリ管理の最適化関連の用語です。
    「ガベージコレクション(英語: garbage collection; GC)」

     

    • -squeeze」はPDFの圧縮です。
    • -l」はWeb用の最適化で表示の高速化です。圧縮では無いです。

例:in.pdf の不要なデータを削除(ガベージコレクト)し、結果はout.pdfへ書き出します。

>cpdf -clean in.pdf -o out.pdf

 

<メモ>※pdf-version

PDFのバージョン番号

  • PDF 1.2:Acrobat 3.0 互換
  • PDF 1.3:Acrobat 4.0 互換
  • PDF 1.4:Acrobat 5.0 互換
  • PDF 1.5:Acrobat 6.0 互換
  • PDF 1.6:Acrobat 7.0 互換
  • PDF 1.7:Acrobat 8.0, 9.0, 10.0 互換
  • PDF 2.0:※2017/7/28にISO(国際標準化機構)がリリース。

 

-set-version <version number>

  • 機能:PDFのバージョン番号を設定します。
  • 補足:4以下は5(Acrobat 6互換)に設定されます。
  • 形式:cpdf -set-version <version number> in.pdf -o out.pdf
  • 注意:下位のPDFバージョンへ変更すると内容の一部が失われる場合が有ります。ご注意ください。

例:in.pdf を PDF 1.6 (Acrobat 7互換)に変更します。結果はout.pdfへ書き出します。

>cpdf -set-version 6 in.pdf -o out.pdf

 

-copy-id-from <source.pdf>

  • 機能:指定ファイルのIDタグを別にコピーします。
    指定ファイル(source.pdf)にIDが無い場合、既存のIDは保持されます。
    -recopy と一緒に使用することはできません。
  • 形式:cpdf -copy-id-from source.pdf in.pdf -o out.pdf

例:source.pdf のIDタグをin.pdf にコピーします。結果はout.pdfへ書き出します。

>cpdf -copy-id-from source.pdf in.pdf -o out.pdf
 

 

<メモ>

ページラベルとは:

ページに表示する専用のページ番号の部分を言います。これらはページには印刷されませんが、サムネールの横に表示されたり、PDFリーダーの印刷ダイアログボックスに表示されたりすることがあります。

ページラベルはかなり古い用語でAcrobat 6 頃の時代の話です。今はほとんど使いません。ネット検索しても日本語圏では1つだけです。英語圏ではコチラですかね。
なお、これ以降のページラベル関連のオペレーションは実行してもページラベルそのものが(Acrobat XI 又は Reader DC で)確認できないので最終検証は取れていません。

 

  • 機能:ページラベルを標準出力(DOS画面へ出力)します。
  • 形式:cpdf -print-page-labels in.pdf

例:in.pdf のページラベルを標準出力(DOS画面へ出力)します。

>cpdf -print-page-labels in.pdf
labelstyle: DecimalArabic
labelprefix: None
startpage: 1
startvalue: 1

 

-remove-page-labels

  • 機能:ページラベルを全て削除します。
  • 形式:cpdf -remove-page-labels in.pdf -o out.pdf

例:in.pdf のページラベルを削除します。結果はout.pdfへ書き出します。

>cpdf -remove-page-labels in.pdf -o out.pdf

 

-add-page-labels

  • 機能:ページラベルを追加または置換します。
  • 形式:cpdf -add-page-labels in.pdf -o out.pdf [-label-style <style>] [-label-prefix <string>] [-label-startval <integer>]

例:in.pdf の5から14頁にページラベルを追加します。結果はout.pdfへ書き出します。

>cpdf -add-page-labels in.pdf 5-14 -o out.pdf

 

-label-style <style>

  • 機能:ページラベルのスタイルを設定します。
    デフォルトは DecimalArabic です。
  • 形式:cpdf -add-page-labels in.pdf -o out.pdf [-label-style <style>] [-label-prefix <string>] [-label-startval <integer>]
  • スタイルの種類
    • DecimalArabic (デフォルト): 1,2,3,4,5. . .
    • LowercaseRoman : i,ii,iii,iv,v. . .
    • UppercaseRoman : I,II,III,IV,V. . .
    • LowercaseLetters : a,b,c,. . . ,z,aa,bb. . .
    • UppercaseLetters : A,B,C,. . . ,Z,AA,BB. . .
    • NoLabelPrefixOnly : 番号は無し。但し接頭辞が有れば使用されます。
  • 参照:-add-page-labels

例:in.pdf の全ページのページラベルのスタイルをLowercaseLetters (a,b,c,. . . ,z,aa,bb. . .)に設定します。結果はout.pdfへ書き出します。

>cpdf -add-page-labels in.pdf -label-style LowercaseRoman -o out.pdf

 

-label-prefix <string>

  • 機能:ページラベルの接頭語を指定します。
  • 形式:cpdf -add-page-labels in.pdf -o out.pdf [-label-style <style>] [-label-prefix <string>] [-label-startval <integer>]
  • 参照:-add-page-labels

例:in.pdf の全ページのページラベルの接頭語を「A-」に設定します。結果はout.pdfへ書き出します。結果を-print-page-labels で確認します。

>cpdf -add-page-labels in.pdf -label-prefix "A-" -o out.pdf
>cpdf -print-page-labels out.pdf
labelstyle: DecimalArabic
labelprefix: A-
startpage: 1
startvalue: 1

 

-label-startval <integer>

  • 機能:ページラベルの開始値を設定します。
    デフォルトは各範囲のページ番号は 1 で始まります。
  • 形式:cpdf -add-page-labels in.pdf -o out.pdf [-label-style <style>] [-label-prefix <string>] [-label-startval <integer>]
  • 参照:-add-page-labels

例:in.pdf の全ページのページラベルの接頭語を「A-」に設定します。開始番号は0からです。結果はout.pdfへ書き出します。結果を-print-page-labels で確認します。

>cpdf -add-page-labels in.pdf 15-20 -label-prefix "A-" -label-startval 0 -o out.pdf
>cpdf -print-page-labels out.pdf
labelstyle: DecimalArabic
labelprefix: None
startpage: 1
startvalue: 1
labelstyle: DecimalArabic
labelprefix: A-
startpage: 15
startvalue: 0
labelstyle: DecimalArabic
labelprefix: None
startpage: 21
startvalue: 21

 

-remove-dict-entry <entry>

  • 機能:辞書からエントリを削除します。
  • 形式:cpdf -remove-dict-entry <entry> in.pdf -o out.pdf
  • 備考:PDFの内部表現内のデータを編集するためのものです。 慎重に使用してください。

例:in.pdf のすべての辞書から /One エントリを削除します。結果はout.pdfへ書き出します。

>cpdf -remove-dict-entry /One in.pdf -o out.pdf

 

-producer <string>

  • 機能:/Info辞書の/Producerエントリを変更します。
  • 補足:ここで言う /Producer エントリは文書辞書情報(文書プロパティ)やメタデータとは異なる場所です。変更してもAcrobatから見た文書プロパティやメタデータに変化は無いです。
  • 形式:他のオペレーションに追加の形になる。

例:in.pdf の/Info辞書の/Producerエントリを「MyMerger」に変更します。結果はout.pdfへ書き出します。結果を-infoで再確認します。

>cpdf -merge in.pdf in2.pdf -producer MyMerger -o out.pdf
>cpdf -info out.pdf
Encryption: Not encrypted
Permissions:
Linearized: false
Version: 1.6
Pages: 773
Title:
Author:
Subject:
Keywords:
Creator:
Producer: MyMerger
Created:
Modified:
XMP pdf:Keywords: AAAAA
BBB
XMP pdf:Producer: Acrobat Distiller 8.0.0 (Windows)
XMP xmp:CreateDate: 2007-04-11T11:09:09Z
XMP xmp:CreatorTool: FrameMaker 7.1
XMP xmp:MetadataDate: 2017-10-07T18:18:21+09:00
XMP xmp:ModifyDate: 2017-10-07T18:18:21+09:00
XMP dc:title: Parameters for Opening PDF Files
XMP dc:creator: Adobe Developer Support
XMP dc:subject: AAAAA, BBB

 

-creator <string>

  • 機能:/Info辞書の/Creatorエントリを変更します。
  • 補足:ここで言う /Creator エントリは文書辞書情報(文書プロパティ)やメタデータとは異なる場所です。変更してもAcrobatから見た文書プロパティやメタデータに変化は無いです。
  • 形式:他のオペレーションに追加の形になる

例:in.pdf の/Info辞書の/Creator エントリを「Original Program」に変更します。結果はout.pdfへ書き出します。結果を-infoで再確認します。

>cpdf -merge in.pdf in2.pdf -creator "Original Program" -o out.pdf
>cpdf -info out.pdf
Encryption: Not encrypted
Permissions:
Linearized: false
Version: 1.6
Pages: 773
Title:
Author:
Subject:
Keywords:
Creator: Original Program
Producer:
Created:
Modified:
XMP pdf:Keywords: AAAAA
BBB
XMP pdf:Producer: Acrobat Distiller 8.0.0 (Windows)
XMP xmp:CreateDate: 2007-04-11T11:09:09Z
XMP xmp:CreatorTool: FrameMaker 7.1
XMP xmp:MetadataDate: 2017-10-07T18:18:21+09:00
XMP xmp:ModifyDate: 2017-10-07T18:18:21+09:00
XMP dc:title: Parameters for Opening PDF Files
XMP dc:creator: Adobe Developer Support
XMP dc:subject: AAAAA, BBB

 

-list-spot-colors

  • 機能:スポットカラーを一覧表示します。
    表示は標準出力(DOS画面へ)です。
  • 形式:cpdf -list-spot-colors in.pdf

例:in.pdf 内のスポットカラーを一覧表示します。

>cpdf -list-spot-colors in.pdf
/Black

 

-squeeze

  • 機能:圧縮します。
  • 形式:cpdf -squeeze in.pdf -o out.pdf
  • 備考:Acrobat の最適化と同じかは不明です。

例:in.pdf を圧縮して、out.pdf へ書き出します。

>cpdf -squeeze in.pdf -o out.pdf
Initial file size is 6115775 bytes
Beginning squeeze: 110901 objects
Squeezing... Down to 101207 objects
Squeezing page data and xobjects
Recompressing document
Final file size is 4108243 bytes, 67.17% of original.

圧縮率のテストしてみました。対象ファイルにより変わるかもしれません。

  1. -squeeze:一番、圧縮率が高かった。
  2. -l:Web用の最適化。思った以上に圧縮しました。
  3. -compress:メタデータを除いたストリームの圧縮です。ほとんど圧縮は感じられない。

 

-squeeze-log-to <filename>

  • 機能:-squeeze で圧縮時のログファイルを指定します。
  • 形式:cpdf -squeeze in.pdf [-squeeze-log-to <filename>] -o out.pdf

例:in.pdf を圧縮し、out.pdf で書き出します。圧縮時のログを log.txt で出力します。

>cpdf -squeeze in.pdf -squeeze-log-to log.txt -o out.pdf

log.txt の内容です。

Beginning squeeze: 943 objects
Squeezing... Down to 895 objects
Squeezing page data and xobjects
Recompressing document

cpdf --help で表示されるオペレーションの説明は以上です。

 


 

cpdf -helpには表示されない部分の補足情報です。

 

入力範囲

入力PDFのページ範囲「<range>」を指定できます。

  1. 2-5:2頁から5頁が対象です。
    >cpdf input.pdf 2-5 -o out.pdf
  2. 2,5,7:2頁、5頁、7頁が対象です。
    >cpdf input.pdf 2,5,7 -o out.pdf
  3. 2-7,10-12:2頁から7頁、10頁から12頁が対象です。
    >cpdf input.pdf 2-7,10-12 -o out.pdf
  4. 2-end:2頁から最後までが対象です。
    >cpdf input.pdf 2-end -o out.pdf
  5. ページの奇数(odd)、偶数(even)を指定出来ます。
    例:1から5頁の奇数を対象にします。「1,3,5」
    >cpdf input.pdf 1-5odd -o out.pdf例:2から7頁の偶数を対象にします。「2、4,6」
    >cpdf input.pdf 2-7even -o out.pdf
  6. all:全ての頁を対象にします。「1-end」と同じです。
    例:1頁目をダブって出力します。
    >cpdf input.pdf 1,all -o out.pdf
  7. reverse:後ろから対象にします。
    例:最後のページから逆に出力します。
    >cpdf input.pdf reverse -o out.pdf
  8. チルダ(~):最初ではなく文書の最後から数えるページ番号を定義します。
    ページ ~1は最後のページ、~2は最後から2番目のページなどです。
    例:最後のページから3番目から最後までを出力します。
    >cpdf in.pdf ~3-~1 -o out.pdf

入力範囲の詳細はココの「1.2 Input Ranges」を参照してください。

 

お知らせ
各オペレーションの形式で入力PDFに上記のページ範囲「<range>」が無いものが有ります。しかし、加えるてみると問題無く動作する場合があります。必要な時は一度お試し下さい。
例:-page-info

 

パスワード

PDFに掛かっているパスワードを指定します。

user=<password>

  • 機能:ユーザーパスワードを指定します。
    文書を開くパスワード、又はPDFファイルを開く時に制限を掛けるパスワードとも言います。

例:ユーザーパスワード「hoge」で in.pdf を読み込んで文書プロパティ情報を表示します。

>cpdf in.pdf user=hoge -info

 

owner=<password>

  • 機能:オーナーパスワードを指定します。
    権限パスワード、又はPDFに印刷、更新、コピー等の許可を設定するパスワードとも言います。

例:オーナーパスワード「abcd」で in.pdf を最後の頁から逆に読み込んで out.pdf へ出力します。

>cpdf in.pdf owner=abcd reverse -o out.pdf

 

テキストエンコーディング

テキストの解釈方法を制御する3つのオペレーションがあります。

-utf8
-stripped
-raw

Unicode UTF8を使用するには-utf8を追加し、上位文字を削除して7ビットASCIIに変換するには-stripped、処理しない場合は-rawを追加します。 デフォルトは-strippedです。

日本語を処理するには通常 -utf8 が必要になります。但し、必ず日本語が使える訳ではないです。

 

備考

  • *1:動作は確認してない。

< TOPへ戻る >

「CPDF:オペレーションの解説」への9件のフィードバック

  1. 管理人様

    PDFをVBAから加工するために、苦労しておりますが、CPDFの解説により、大変助かっております。ありがとうございます。
    また、大変タイムリーな解説サイトのオープンに、感謝しております。

    恐縮ですが、ご質問があります。
    -add-textで、漢字を使用したく、-utf8と組合せてみていますが、
    「Bad UTF8 in codepoints_of_utf8」エラーになってしまいます。
    コマンドは下記です。
    cpdf -utf8 -add-text "日本" in.pdf -o put.pdf

    ご多忙のところ恐縮ですが、何かわかりましたら、教えて頂けないでしょうか。

  2. 堀口 さん
    はじめまして。
    取り急ぎ、分かる範囲での返答をさせて下さい。

    動作エラーは確認しました。
    -font 指定、-no-embed-font指定、-outline指定、-stripped、-raw 等を試しましたが同じエラーです。

    もしページ単位に変化しない固定の文字列ならば、
    指定の日本語テキストを貼り付けたPDF(logo.pdf)を個別に作成します。
    それを以下のスタンプ・オプションで貼り付けます。
    >cpdf -stamp-on logo.pdf in.pdf odd -o out.pdf
    テキストの部分は -add-text と同じ感じになります。
    位置指定も出来ます。
    別の意味で変化に飛んだテキストを貼り付けれます。
    -stamp-onと-stamp-under も御覧ください。
    ご検討下さい。

    なお、-add-text の日本語の件は時間が出来たら再調査します。(デキタラ

    ※作業中のページなので内容は変化します。

  3. 管理人様

    お忙しい中、ご返信ありがとうございます。
    また、代替案まで頂きまして、誠にありがとうございます。
    試したところ、この方法で対応できそうです。

    こちらの方が、色を付けたり、応用がいろいろと効きそうです。
    本当にありがとうございます。

    堀口

  4. 大変参考なる情報でいつも助けていただております。

    -uprightですが、回転状態で表示されるPDFを回転していない状態をセットし直す(見た目のままを回転角0にする)機能のようです。
    この変換をした後は、見た目通りのポジションと向きでスタンプを追加することが出来ました。参考になれば幸いです。
    ※このコマンドに気づくまでは、ポジションとスタンプの向きが、変わってしまう事象をどう解決するか大変悩みました。

  5. 佐藤 さん
    ありがとうございます。
    ですが、・・・。

    1) AcrobatでPDFを開いて、[ツール]->[ページ]->[回転]で指定ページを右90度、左90度にセットし、in1.pdfで保存。

    2) 以下のコマンドでout.pdfへ出力
    >cpdf -upright in1.pdf -o out.pdf
    3) out.pdfを開いてもin1.pdfと同じ状態でページは回転したまま・・です。

    私は何を勘違いしているのでしょうか?(汗

  6. 管理人さん

    お世話になります。佐藤です。
    先のコメントの「-prerotate」について訂正です。
    このオプションはテキスト追加(-add-text)時には有効ですが、スタンプ追加(-stamp-on)では無視されるようです。回転表示のPDFに見た目通りにスタンプを追加するには、一旦、 -uprightで補正したpdfにするしかないようです。。。
    そもそも、説明に「テキストの位置決めをする時」とあるので説明通りではありますが残念です。

  7. 管理人さん

    お世話になります。佐藤です。
    [2020年7月25日 12:01 午後]の前に投稿したコメントが反映されていないないようなので再度コメントします。(書いた内容を保存してなかったので表現が微妙に違いますが、、)
    ---
    検証ありがとうございます。
    管理人さんの認識通り見た目に違いはありません。
    元のPDFをbase.pdfとすると左下が起点(0,0)、上方向がY+方向、右方向がX+方向の状態です。
    左90゜回転したin1.pdfは、見た目とともに座標も回転し、右下が起点(0,0)、上方向がX+方向、左方向がY+方向になります。

    このPDF(in1.pdf)に-add-text-stamp-onをするとbase.pdfに-add-text-stamp-onしたものを左90°回転したドキュメントに仕上がります。一方、-uprightで出力したout.pdfは、回転していない(左下が起点(0,0)、上方向がY+方向、右方向がX+方向)状態になっているため、見た目通りの位置に-add-text-stamp-onしたドキュメントに仕上がります。
    ※因みにAcrobatはGUIなので回転しているドキュメントでも座標を意識せずに見た目通りに編集できるので違いが判りません。

    また、in1.pdfに「-prerotate」をつけて-add-text-stamp-onをすると、見た目通り位置に-add-text-stamp-onしたドキュメントに仕上がります。
    ---
    ↑これは間違いで「-prerotate」は-add-textはOKでしたが、-stamp-onでは効果がありませんでした。

  8. 佐藤 さんへ。

    ナルホド、そうゆう使い方をするんですね。
    -uprightと-prerotateはその為に存在する機能なんだ。(ナットク

    確かに回転したPDFの扱いは厄介です。
    現在は「PDF上のテキストとその座標」関連を検証&整理中です。
    苦労した部分に「回転した時の座標の扱い」が有ります。
    4ヶ月掛けて、やっと整理できた状態です。

    頂いた情報は後日、詳しく検証させて頂きます。
    その情報も当ページに追加します。
    ありがとうございました。 m(_._)m

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

CAPTCHA



SAMURAI Plugin

コメントをする時は出来れば以下もお願いします。

  • OS名 バージョン
  • Acrobat バージョン
  • ツール(Excel等) バージョン
コメントにサンプルコードを入れる時はコードを全て全角文字列にしてください。コチラで半角に戻します。それでもエラーが回避できない時はコメント下さい。個別に対処します。



お仕事で当サイトを見ている方へ
考え込んだら、ご質問下さい。
一緒に解決策を考えましょう。

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください