« BullZipでのPDFプリンタ Main php_mecabがインストールできな... »

ページ取り込みPDFのファイルサイズ縮小

取り込みPDFのサイズ

事務的な書類としてメール配信されてくる、文書のスキャン取り込みPDFファイルのサイズ(数MB程度)がかなり大きくて、扱いに困ることがある。これをなんとかできないか。

まずは、ページの取り込み設定をPDF上から確認できないかとプロパティを開いてみたが、そういう値はなく、また、それを表示するようなツールも出回っていないようだった。そこで、xyzzy で強引にPDFファイルをバイナリとして開いて眺めてみると「/Width 1169」というような記述があり、これをA4縦紙面横幅の8.3inで割ると解像度が求まる(1664/8.3=>200dpi?)のかと思ったが、サイズが1/7程度になっていても同じ記述の場合があるから、この値だけでは算出できないらしい。

/Image/Length 9808/Filter/CCITTFaxDecode/Name/Img1/BitsPerComponent 1/ColorSpace/DeviceGray/Width 1664/DecodeParms<>/Height 2338

元の取り込み設定はすぐには取得できそうにないため、ひとまずそれは置いておき、いくつか仮想PDFプリンタを試してデータを再生成してみることにした。

試したのは、doPDFBullzip PDF PrinterPrimoPDFPDF reDirect v2CutePDFの5つ。

doPDF

doPDF v6.3.308 という仮想プリンタがあり、これを使って72dpiで出力(仮想印刷)してみた。

元々6MB程度あったファイルが96dpiで425KBとだいぶ縮小されたのだが、この場合も /Width のパラメータは 1664 のままだった。後ろのほうを見ていくと /MediaBox [0 0 595 842] というのがあるので、もしかして、595/8.3=>72dpi になっているのかもと思ったが、144dpi で印刷生成しても、こちらの /MediaBox のパラメータは同じままだった…。日本語ファイルにも対応しているようだったが、別のパソコンで試すと少しおかしくなる場合があった。環境に依存するのかも。

20090815231716-dopdf72dpi

20090815232337-dopdf96dpi

20090815231358-dopdf144dpi

20090815233445-orig
72dpi

96dpi

144dpi

Orig
302KB

425KB

765KB

5.65KB

(元ファイルはAcrobat Reader の200%表示で、他は300%表示し、見かけの大きさを合わせたものを取り込んでいる)

他の解像度も加えてファイル生成サイズを見てみると、以下のようになっており、300dpiにしても元ファイル 5.65MB よりは小さい 2.02MB となっている。また、288dpiから2400dpiまで2.02MBとサイズは変わらず頭打ちになっている。150dpiと288dpiでなぜかかなりファイルサイズに開きが出ている(再試が必要?)。

72dpi

96dpi

144dpi

150dpi

288dpi

300dpi

2400dpi

Orig
302KB

425KB

765KB

812KB

2.02MB

2.02MB

2.02MB

5.65MB

出力文書は、さすがに72dpiだと小さい文字が読めなくなってしまうようで、96dpi程度ならなんとか読めるという感じだったが、144dpi (765KB) 程度が適当というところか。この設定をdoPDFで常態化させるには、印刷時のオプションではなく、設定→プリンタとして選んで解像度を 144dpi と設定しておく。

(でも、doPDF では「PDF生成すらできなかった」としているサイトもあるなぁ。↓)

Bullzip PDF Printer

Bullzip PDF Printer v6.0.0.865 も試してみた(前にも別でインストールしているが)。

doPDFの軽快さに比べると、インストールにちょっと時間がかかる感じ。日本語ファイル名に対応していないのか、仮想印刷した文書を保存する際のファイルダイアログで漢字コードの羅列みたいなものが出てくる。これへの対応は「C:\Program Files\Bullzip\PDF Printer\オプション」 から辿っての「出力→ファイル名」で「出力ファイル名の設定」を「<desktop>\<smarttitle>.pdf」から「<desktop>\<basedocname>.pdf」に変えると日本語ファイル名も扱えるようだ。

ドキュメントの生成もインストール同様まったりしてるみたい。Windows のタスクバーの右下のほうでしばらく(1分くらい?)「pdfファイルを作成中…」とかいうのが何かくるくる回ってる(こんなの→20090817150047-Bullzip-GenIcon)。

解像度に72dpiを指定しても10倍の720dpi としても生成サイズは同様だった。このオプションには効果があるんだろうか?元のはカラー文書だがモノクロ指定をしても出力文書はカラーのままだった。他のオプションで EmbedAllFonts, SubsetFonts とかいうのを両方とも False にしても、詳細な印刷機能を「無効」にしてもサイズは変わらなかった。Bullzip PDF Printer が正しく動作してないのか?

生成サイズはそのままでは解像度を指定しても変わらず、これを変えるには生成設定を指定する必要があった。だが、このオプションを指定する箇所として「印刷→プロパティ→詳細設定」のダイアログでの「PDF Settings」の項目とページスプール後に表示される「ファイルを生成」ダイアログの「ドキュメント」タブでの「品質」の項目の2つがある。

20090817094907-BullzipDialogQualityA

20090817091259-BullzipDialgoQualityB
(A) PDF Settings

(B) (PDFの)品質

で、この2つは連動しておらず、しかも双方を設定しないときちんと動作しない場合があることが判明…。

生成サイズをチェックしてみると次のようになっていた(単位KB)。

(B) (PDFの)品質
既定

画面

Ebook

プリンタ

製版
(A) PDF
Settings

Default

1,363

276

1,488

2,856

5,628
Screen

1,487

274
Ebook

1,488
Printer

2,856
Prepress

5,628

(A)の設定が「Default」と「Screen」の場合は、(B)が「既定」のままだと、(A)の「Ebook」とほぼ同じサイズになってしまう(まったく同じというわけではない…)。また、(A)の「Default」は、後に続く(B)の設定が「既定」以外の場合に影響され、また(B)の設定は(A)の他の設定が既に行われていると有効にならない、ということか。疲れた…。

(B)のダイアログはBullzipのオプションで非表示にもできるんだが、設定が連動してないんだし、表示していないと動作がおかしいのに気づくのは難しいよなぁ。

(A)の設定を変えて生成したキャプチャ結果は以下のようになった(Default(B)既定の場合、(B)既定以外の場合)。

20090818130930-Bullzip-Default

20090817230320-Bullzip-Screen

20090817231019-Bullzip-Ebook

20090817232451-Bullzip-Printer

20090817233504-Bullzip-Preress

20090815233445-orig
Default

Screen

Ebook

Printer

Prepress

Orig
1,363KB

274KB

1,488KB

2,856KB

5,628KB

5,790KB

ここでは、Screen以外はほとんど区別がつかない感じになった。DefaultとScreenの間あたりで700KB程度になる画質のものが欲しいところ。

ダイアログでの解像度の指定を反映させるためには、印刷時の「詳細設定」オプション(上記の印刷プロパティの「詳細設定」とは別…)で「画像として印刷」を指定する必要があるらしい。ここでさらに、上記の「PDF Settings」を各種指定すると生成サイズはそれに応じて2~3倍程度にも変わるのだが、画質はあまり変わらないようだった(なぜか、144dpiでのScreenの場合に、72dpiの場合よりも粗いような結果になっている)。

72dpi

20090819094748-Bullzip-Image72dpi-Default

20090819094859-Bullzip-Image72dpi-Screen

20090819095008-Bullzip-Image72dpi-Ebook

20090819095226-Bullzip-Image72dpi-Printer

20090819095309-Bullzip-Image72dpi-Prepress
254KB

264KB

266KB

350KB

504KB
96dpi

20090819095909-Bullzip-Image96dpi-Default

20090819095942-Bullzip-Image96dpi-Screen

20090819100037-Bullzip-Image96dpi-Ebook

20090819100206-Bullzip-Image96dpi-Printer

20090819100301-Bullzip-Image96dpi-Prepress
363KB

380KB

382KB

582KB

810KB
144dpi

20090819100907-Bullzip-Image144dpi-Default

20090819101002-Bullzip-Image144dpi-Screen

20090819101037-Bullzip-Image144dpi-Ebook

20090819101201-Bullzip-Image144dpi-Printer

20090819101243-Bullzip-Image144dpi-Prepress
633KB

271KB

672KB

1,004KB

1,692KB
Default

Screen

Ebook

Printer

Prepress

これからすると、設定は「画像として印刷」+「PDF Settings: Default」+「印刷品質:144dpi」あたりで適当か。

また、「Program Files->Bullzip->PDF Printer->オプション」に「イメージ」タブがあり、ここでpdfwrite デバイスへの解像度設定が変更できる。解像度オプションは、プリンタの詳細設定ダイアログでも表示されてはいるのだが、非アクティブ化されていて、デフォルト値を変更できない。文書の解像度を変更したらそれに連動してくれよ…。とはいえ、今回はこの値を変更しても、生成ファイルへの効果は見られなかった。なお、カラー画像の圧縮オプションというのがあり、JPEG を指定すると 3MB で、Flate を指定すると 24MB になっていた。

Bullzip に関しては、Windowsでの扱い不能のファイル名を生成してしまう場合があるという話も↓。

Bullzip はオプションやダイアログが整理されていないようで、扱いに注意が必要かもしれないなぁ。

PrimoPDF

PrimoPDF v4.1J も試してみた。

生成文書自体は設定72dpiの見にくいものとなったのだが、ファイルサイズは9.33MB になっていた…。なんじゃそりゃ。また、Bullzip PDF Printer と同様に日本語ファイル名にも対応してない。出力時の対応形式は元は「カスタム」だったが、これを「画面」とするとファイルサイズは 351KB になった。

解像度を 72dpi から 144dpi に変えても、対応形式を「画面」としているとサイズは 351KB のままだった。dpi の設定は画面指定の場合は意味ないのか?

PDF reDirect v2

PDF reDirect v2.2.8 も試してみた。

日本語ファイル名がダイアログには出てくるが、それを保存しようとするとエラーになってしまう。また、スキャナかで取り込んだファイルを扱おうとした際に、暗号化もしてないのにサムネイルにEncrypted と出て、操作できないこともあった。インターフェースが大仰で、ファイル生成時にも大きくファイルダイアログなどが出てしまう。ファイルの連結などもできるようで便利なのかもしれないが、もう少しシンプルな表示にはできないのか。

ファイルサイズは、72dpi でも 1.89MB だった。で、ページ画像はキレイ。ってことは画像の解像度変換はやってないのか。Preferences を見ると Conversion Engine に GNU Ghostscript (Default) などとなっている。Ghostscript を使っている時点で Bullzip とほぼ同様と考えていいのかも?

CutePDF

CutePDF v2.8 も試してみる。

日本語ファイル名はきちんと扱えている。けっこう動作は遅い。Bullzip より遅いくらい?

72dpi を指定しているのに、ファイルサイズが 7.49MB になったよ…。ダメだこりゃ。

(瞬間PDF ZERO)

クセロの瞬間PDF ZEROも同様な用途に使えたようだが、現在はフリー版の配布は終了している。

ひとまずの結論

ということで、今のところいちばん doPDF が使いやすく用途にあっているらしい…。

[追記]
画像読み取りした文書に透明テキストを載せたPDFファイルのファイルサイズを小さくしようとこれらのツールを試したが、話としては当然なのだろうが、印刷すると透明テキストの情報は消えてしまった。これらの情報を残したまま解像度を変更したりすることはできないのかな。

ちなみに、文字認識からの透明テキストデータへ変換はソースネクストの「いきなりPDF to Data」で行なっている。けっこう使いやすい感じ。他のツールとのセットを購入したが、分割だったり統合だったりDataだったり、ツールが個別に分かれてしまっていてどれで何ができるのやらよくわからなくなりがちなので、それを統合した形でのアプリケーションもあるといいのだが。

Leave a comment

Your comment