pdf2htmlEX:PDFをHTMLへ変換するツール [永遠に作業中:8]

TOP > *


Girls gone wild !!

概要

PDFを画像では無く、純粋なHTMLへ驚くほど高精度に変換します。

 

まずは下のどちらがPDFでどちらがHTMLでしょうか?

▽サンプル①

pdf2htmlEX:PDFをHTMLへ変換するツール・変換前のPDF

▽サンプル②

pdf2htmlEX:PDFをHTMLへ変換するツール・変換後のHTML

正解は①がPDF、②がHTMLです。上記の画像をクリックするとハッキリと判ります。

②は①を変換したHTMLです。ページヘ移動するリンク、上記には表示してませんが しおり、文字列の選択、コピー、検索も可能です。

 

これ以降は Windows版 バージョン 0.14.6 での解説になります。

 

特徴

  1. フリーソフト(GPL3 ライセンス)
  2. 画像では無く、検索可能なHTMLに変換
  3. フォントをPDFから抽出してHTMLに含める
    (Type 3フォントは未サポート)
  4. 変換後のHTMLは選択やコピーが可能
  5. しおり も使えます 
  6. ネットでの評価は非常に良い 
  7. 頻度は落ちているがバージョンアップは停止してない
  8. マルチバイト(漢字)対応。
    ※しかし現時点(2016/7/10) v 0.14.6 のWin版は日本語処理が確認できず
  9. (発表時は)香港の学生?が作成。

 

日本語の対応

公開サイトでは堂々と「日本語をサポート」と書かれています。

しかし最新バージョンの 0.14.6 Windows 版で日本語を含むPDFの変換ができない現象を確認しています。2016/7/10時点で開発者のGitHUBサイトのISSUSEにて確認を行っている最中です。Windows版バイナリー公開サイトへも確認中です。

ただコチラで動作確認をしたところ、旧バージョン 0.12 と 0.11 では変換中に多少のエラーは出ますが基本部分は問題無く、HTMLへ変換できました。

よってココでの紹介は 0.14.6 内容ですが。日本語PDFの変換が出来ない場合は旧バージョン 0.12 をご使用ください。

 

ダウンロード

Windows 版のダウンロードはココからです。以下の2つをダウンロードしてください。

  1. pdf2htmlEX-win32-0.14.6-upx-with-poppler-data.zip 又は
    pdf2htmlEX-win32-0.14.6-with-poppler-data.zip
    UPXの圧縮EXE版は「-upx-」の方です。迷う方は下の「-upx-」無し版をオススメします。EXE本体が圧縮されているか、無いかの違いだけです。
      
  2. pdf2htmlEX v0.12-win32-static(pdf2htmlEX-0.12-win32-static-with-poppler-data.zip)
    旧バージョン(更新:2014/11/11)です。ダウンロードして保管してください。理由は既に説明済み。

pdf2htmlEX のWindows版のダウンロード

 

インストール

pdf2htmlEX-win32- ・・・ -with-poppler-data.zipを全て解凍して、適当なフォルダにそのままで全ファイルを置くだけです。EXE 以外のファイルやフォルダも同じ状態で解凍してください。

できれば半角の空白が入らないフォルダの下に入れてください。半角の空白が入るとプログラムからコマンドライン起動する時に起動できない問題が発生してしまいます。

必要な方はWindowsの環境変数「PATH=」にパスを追加してください。

 

バージョンとHelp の内容

 

形式

pdf2htmlEX  [options]  <input.pdf>  [<output.html>]

  • options : オプション。複数の組み合わせ可能。
  • input.pdf : 入力のPDFファイル名
  • output.html : 出力するHTMLトファイル名
    未指定時はカレントフォルダに拡張子.html で同じファイル名で作成します。
    保存先フォルダもココで指定できます。相対、フルパスもOK。詳細は後で。

各区切りは1つ以上の半角の空白です。

 

Options : オプション

多くのオプションが有りますが、基本はデフォルトで動作するようにセッティングされています。

各オプションはオプション文字列の前にハイフン2つ「--」又はハイフン1つ「-」、そしてオプション名です。更に値が続く場合は1つ以上の半角の空白を入れてから、値を入れます。複数のオプションを入れる時も1つ以上の半角の空白を入れて連続させます。

オプション名の入力ミス時は「--help」と同じ動作をします。

例:2ページから10ページ 

-f  2  -l  10

例:2ページから10ページ

--first-page  2  --last-page  10

 

ページ 関連のオプション

 

-f, --first-page <num> (Default: 1)

処理するための最初のページを指定します。デフォルトは1頁からです。

 

-l, --last-page <num> (Default: last page)

処理するための最後のページを指定します。デフォルトは最終頁です。

 

寸法 関連のオプション

 

--zoom <ratio>

変換後の表示ズームの倍率を指定します。

例: 1.5倍

>pdf2htmlex  --zoom 1.5  data2¥input.pdf  save¥out.html

 

--fit-width <width>

ページの最大の幅をピクセル単位で指定します。

縦横比は維持されます。各ページのサイズが異なる場合は最大サイズのページの幅を指定値にして、他の小さいページは同じ倍率で幅を調整します。(目視で確認

例: 幅を700ピクセル

>pdf2htmlex  --fit-width 700  data2¥input.pdf  save¥out.html

 

--fit-height <height>

ページの最大の高さをピクセル単位で指定します。

縦横比は維持されます。各ページのサイズが異なる場合は最大サイズのページの高さを指定値にして、他の小さいページは同じ倍率で高さを調整します。(目視で確認

例: 高さを500ピクセル

>pdf2htmlex  --fit-height 500  data2¥input.pdf  save¥out.html

 

複数の値が指定されている場合は、最小のものが使用されます。

何も指定されていない場合、ページは72dpiとして表示されます。

 

--use-cropbox <0|1> (Default: 1)

出力時はMediaBox(メディアボックス)の代わりにCropBox(クロックボックス)を使用します。デフォルト1:使用する。0:使用しない。(テスト確認できるPDF無し

例:

>pdf2htmlex  --use-cropbox 0  data2¥input.pdf  save¥out.html

Poppler : Pdfinfo の使い方 より
MediaBox : メディアボックス
ページ内の余白を含まない領域です。
CropBox : クロックボックス
ページの余白も含んだ可視領域です。

 

--hdpi <dpi>, --vdpi <dpi> (Default: 144)

画像の水平方向、垂直方向のDPI(解像度)を指定します。ここでの解像度は変換後の画像の部分の事を言っているみたいです。デフォルトは144DPIです。

目視で144と4000を見比べたですが、・・・テキスト部分に関しては違いは確認できず。画像部分に関しては拡大して見比べると、144がやや粗くなっている程度でした。よって画像を使っていて、より美しく見せたい時は値を大きくしましょう。その分だけファイルのサイズは大きくなります。大きくなる割合は画像の使用量によって変わります。

また、値を3000等の大きくすると画像部分のみが表示できない現象を確認しています。指定時は必ず各種ブラウザで確認してください。

 

出力 関連のオプション

 

--embed <string>

--embed-css <0|1> (Default: 1)

--embed-font <0|1> (Default: 1)

--embed-image <0|1> (Default: 1)

--embed-javascript <0|1> (Default: 1)

--embed-outline <0|1> (Default: 1)

出力HTMLファイルに埋め込まれるべき要素(CSS、フォント、画像、Javascript、アウトライン)を指定します。オフ(0) 時、対応する要素はHTML以外の別ファイルとして出力されます。

以下、0:別ファイルへ。1:含める。デフォルトは全て1の「含める」です。

--embed-css <0|1> はCSSをHTMLに含めるかを指定します。

--embed-font <0|1> はフォントをHTMLに含めるかを指定します。

--embed-image <0|1> は画像をHTMLに含めるかを指定します。

--embed-javascript <0|1> はJavaScriptをHTMLに含めるかを指定します。

--embed-outline <0|1> はアウトラインをHTMLに含めるかを指定します。

上記の--embed-css、--embed-font、--embed-image、--embed-javascript、--embed-outline を1つでまとめて設定できるのが --embed <string> です。

--embed <string> の引数の文字列は --embed-X** オプションのXの1文字に相当する文字を指定します。Xが大文字の時は「含める」の1になり、Xが小文字の時は「別ファイルへ」の0になります。

例:

--embed cfijo  :全ての要素を別ファイルへ出力します。

--embed CFIJO  :全ての要素をHTMLへ含めます。

--embed i  :画像以外はHTMLへ含めます。

 

--dest-dir <dir> (Default: .)

Specify destination folder.
元のインストール先フォルダを指定します。EXEだけを別フォルダにコピーして使用したい時に使います。なおこのオプションを指定した時、--data-dir オプションでインストール先のdata フォルダも指定する必要があります。

例:

I:¥Tools¥Run¥pdf2htmlEX-0.14.6¥Testforuda>pdf2htmlex  --dest-dir ..  --data-dir ..¥data  ..¥data2¥input.pdf

このオプションを使うと他の設定も考慮する必要があるので、あまり使わない方をオススメします。

 

--css-filename <filename> (Default: <none>)

HTMLにCSSが埋め込まれていない場合( --embed-css 0 )は、生成されるCSSのファイル名を指定します。ココのファイル名が空の場合は自動的に決定されます。

 

--page-filename <filename> (Default: <none>)

各ページ単位にファイル分割(--split-pages 1 )する時の各ファイル名のテンプレートを指定します。

%d のプレースホルダーはページ番号を配置する場所を示すために filename に含めることが出来ます。プレースホルダは指定された幅とゼロパディングを含む通常の数値プレースホルダの限られたサブセットをサポートしています。

filename にページ番号のプレースホルダが含まれていない場合はページ番号はファイル拡張子の前に直接挿入されます。ファイル名は拡張子を持っていない場合はページ番号はファイル名の末尾に配置されます。             

--page-filename を指定しない場合は、<input-filename>は.PAGE を拡張子に交換し、拡張子の前に直接ページ番号を追加し、出力ファイル名に使用されます。

例:

>pdf2htmlEX --split-pages 1 foo.pdf

生成されるファイル foo1.page, foo2.page, ・・・

>pdf2htmlEX --split-pages 1 foo.pdf --page-filename bar.baz

生成されるファイル bar1.baz, bar2.baz, ・・・

>pdf2htmlEX --split-pages 1 foo.pdf --page-filename page%dbar.baz





生成されるファイル  page1bar.baz, page2bar.baz, ・・・

>pdf2htmlEX --split-pages 1 foo.pdf --page-filename bar%03d.baz

生成されるファイル  bar001.baz, bar002.baz, ・・・

 

--outline-filename <filename> (Default: <none>)

HTMLにアウトラインが埋め込まれていない場合( --embed-outline 0 )は、生成されるアウトラインのファイル名を指定します。ココのファイル名が空の場合は自動的に決定されます。

 

--process-nontext <0|1> (Default: 1)

(画像など)の非テキストオブジェクトを処理するかどうか。1:処理する。0:処理しない。

 

--process-outline <0|1> (Default: 1)

生成されたHTMLでアウトラインを表示するかどうか。1:表示する。0:表示しない。

 

--printing <0|1> (Default: 1)

印刷を可能にします。デフォルト1:可能にする。0:可能にしない。このオプションを無効にするとCSSのサイズを小さくすることができます。

 

--fallback <0|1> (Default: 0)

フォールバックモードでの出力は、優れた精度とブラウザの互換性の為ですが、サイズが大きくなります。

※フォールバックモード:精度が低下しても表示を可能な限り維持する。(と思う。

 

--tmp-file-size-limit <limit> (Default: -1)

出力ファイルの合計サイズを制限する為に一時ファイルの合計サイズ(KB単位)を制限します。これは推定値で、一時ファイルの合計サイズがこの数よりも大きくなると、その時点でページ処理を途中停止します。その時のメッセージは「Stop processing, reach max size」です。 -1 は無制限を意味し、デフォルトです。

要は、サイズが大きくなり過ぎないようにしたい時に、一時ファイルのサイズを制限します。デフォルは制限無し。

例: 1000 KB で制限

>pdf2htmlex  --tmp-file-size-lim 1000  input.pdf
Preprocessing: 16/16
Stop processing, reach max size  <-停止のメッセージ
Working: 16/16

変換後のHTMLファイルのサイズが9000KBぐらいの時、一時ファイルのサイズは3000KBぐらいまで落とさないと途中停止は発生しないテスト結果が一部で出ています。注意してください。

 

フォント 関連のオプション

 

--embed-external-font <0|1> (Default: 1)

HTMLに埋め込まれるべきで、PDFに埋め込まれていないフォントに対して、ローカルでマッチしたフォントを指定します。

このスイッチがオフ(0)の場合、唯一のフォント名はWebブラウザが適切なフォントを自分自身で見つけることを試みることができようにエクスポートされます。それは正しくないフォントメトリックに関する問題を引き起こす可能性があります。

 

--font-format <format> (Default: woff)

PDFファイルから抽出されたフォントの形式を指定します。デフォルトはwoff です。

 

--decompose-ligature <0|1> (Default: 0)

合字を分解します。例えば 'fi' - > 'f''i' 。

 

--auto-hint <0|1> (Default: 0)

1に設定すると、ヒントは fontforge を使用しているフォントで生成されます。これは --external-hint-tool が先行することができます。

 

--external-hint-tool <tool> (Default: <none>)

tool が指定された場合、フォントの強化ヒンティングするために呼び出されます。これは--auto-hint が先行します。

tool は--font-format のために指定されるようにサフィックスが同じになる、'<tool> <in.suffix> <out.suffix>' の順で呼ばれます。

 

--stretch-narrow-glyph <0|1> (Default: 0)

1 に設定すると、PDFに記載されているよりも狭いグリフ(絵文字)は伸縮されます。それ以外の場合はスペースがグリフ(絵文字)の右側にパディングされます。

 

--squeeze-wide-glyph <0|1> (Default: 1)

1の場合は、PDFファイルに記載さよりも広いグリフ(絵文字)は圧縮されます。
それ以外の場合はそれは切り捨てられます。

 

--override-fstype <0|1> (Default: 0)

TTF/ OTFフォントでの fstype ビットをクリアします。Internet Explorer が「アクセス許可はインストール可能でなければならない」と文句を言う場合、あなたがそうする権限を持っているなら、これをオンにします。

 

--process-type3 <0|1> (Default: 0)

オンにした場合、pdf2htmlEXはテキストがHTMLでネイティブにレンダリングすることができるように、Type 3 のフォントを変換しようとします。それ以外の場合は、Type 3 フォントですべてのテキストを画像としてレンダリングされます。
この機能は非常に実験的です。

 

テキスト 関連のオプション

 

--heps <len> , --veps <len> (Default: 1)

最大許容垂直/水平方向のオフセット(ピクセル単位)を指定します。pdf2htmlEXはこの距離内でテキストを移動して生成されたHTMLファイルを最適化しようとします。デフォルト1:最適化する。0:しない。

 

--space-threshold <ratio> (Default: 0.125)

同じ行に2つの連続した文字の間の距離が ratio * フォントサイズよりも広い場合、pdf2htmlEX は空白文字を挿入します。

 

--font-size-multiplier <ratio> (Default: 4.0)

多くのWebブラウザは、最小フォントサイズを制限し、多くは与えられたフォントサイズを丸めることになります。それは間違ったレンダリングを結果として生じます。

この問題を解決するだろう1よりも比率も大きいを指定します。しかし、それは一部のブラウザがフリーズすることがあります。

Firefoxの一部のバージョンについて。しかしながら小さい方の値をここで指定する必要がある場合にはフォントサイズが大きすぎるという問題があるでしょう。

 

--space-as-offset <0|1> (Default: 0)

1に設定すると、空白文字はオフセットとして扱われ、より良い最適化を可能にします。良くないエンコーディングのPDFファイルの場合は、このオプションをオン(1)にすると文字を失う恐れがあります。

 

--tounicode <-1|0|1> (Default: 0)

ToUnicodeマップは文字の「意味」を示すPDF内の各フォントを設けているのかもしれない。しかし多くの場合は、Type 0/1 フォントに良いToUnicode 情報が有り、時々提供されるToUnicodeマップが間違っています。この値が1に設定されている場合は、ToUnicodeマップが常に適用され、PDFで提供される場合、衝突が存在する場合は文字がHTMLで正しくレンダリングされない事があります。

-1に設定した場合、カスタマイズされたマップはレンダリングがHTML(視覚的に同じ)で適切となるように使用されますが、選択&コピー&ペーストで正しい文字を取得することはできません。

0に設定するとpdf2htmlEXは上記の2つの方法のバランスをとるためにベストを試みます。

 

--optimize-text <0|1> (Default: 0)

1に設定するとpdf2htmlEXはテキストに使用されるHTML要素の数を削減しようとします。何かうまくいかない場合はオフにしてください。

 

背景画像 関連のオプション

 

--bg-format <format> (Default: png)

背景画像形式を指定します。すべてのサポートされる形式をチェックするために’pdf2htmlEX -v’を実行してください。

 

PDF保護 関連のオプション

 

-o , --owner-password <password>

オーナーパスワードを指定します。

 

-u , --user-password <password>

ユーザーパスワードを指定します。

 

--no-drm <0|1> (Default: 0)

文書のDRM(デジタル著作権管理)設定を上書きします。あなたが権限を持っている場合にのみ、このオプションをオン(1)にします。

 

その他のオプション

 

--clean-tmp <0|1> (Default: 1)

オフ(0)にした場合、中間ファイルは最後に削除されることはありません。

 

--data-dir <dir> (Default: pdf2htmlEX/data)

manifest ファイルやその他の動作に関連するファイルを保持しているフォルダを指定します。デフォルトはカレントフォルダ下のdataフォルダです。

 

--tmp-dir <dir> (Default: /tmp)

一時ファイル用に使用する一時フォルダを指定します。デフォルトは "C:¥Users¥ [ユーザー名] ¥AppData¥Local¥Temp/")

 

--css-draw <0|1> (Default: 0)

実験およびサポートされていないCSSの描画。

 

--debug <0|1> (Default: 0)

デバッグ情報の表示します。

 

メタ 関連のオプション

 

-v, --version

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

 

--help

使用情報を表示します。

 

終了コード

ドキュメントに記載が無いので不明です。

 

VBA関数からの起動

以下のVBA関数を利用してpdf2htmlEX.exe をコマンドライン起動できます。 

 

PDF内のJavaScriptについて

PDFの中にはAcrobat JavaScript と言うAcrobat PDF専用の拡張型 JavaScript を入れる事ができます。これはWebで使っているJavaScriptと100%同じではありません。全てがHTMLに対応した形で変換できるかは未確認です。

POPPLER : PDFINFO の使い方」の「-js」オプションでPDFにJavaScript が入っているかを事前確認出来ます。

 

エラーメッセージ

Error: Cannot open the manifest file

data フォルダが見つからない時に出ます。--data-dir オプションでインストール先のdata フォルダも指定する必要があります。又はmanifest ファイルが存在しない時に出ます。インストール状態を再確認してください。

Stop processing, reach max size

--tmp-file-size-limit オプションの指定サイズを越えた時に出るメッセージです。

 

 

< TOPへ戻る >

 

pdf2htmlEX の検証結果での問題点

 

現象

日本語を含むPDFをHTMLに変換すると、日本語の文字列の部分のみブランクの状態になる。

▽変換前のPDF

▽変換後のHTML

元のPDF:  注記)サンプルです。解決後は削除します。

  1. acrobatpro_datasheet.pdf
  2. 511727_js_api_reference.pdf

変換後のHTML:

  1. acrobatpro_datasheet.html
  2. 511727_js_api_reference.html

 

pdf2htmlEXのバージョン

 

検証したブラウザ:全て最新バージョン

( Windows 10 64bit Pro + )

  1. Internet Explorer
  2. Google Chrome
  3. Firefox
  4. Vivaldi

 

pdf2htmlEX の過去バージョンでの検証

  1. pdf2htmlEX-win32-0.13.6.zip : 日本語の文字は同様にブランクになる
  2. pdf2htmlEX-0.12-win32-static-with-poppler-data.zip : 日本語が表示できた!

バージョン 0.12 は日本語が変換できました。バージョン 0.13.6 と0.14.6 は日本語文字の部分がブランクで表示される。他のPDFも試したが結果は同じ。 なぜ? どこの設定を直したらいいのか? オプション「 --tounicode -1」を追加してもダメでした。他のオプションも試したがダメでした。

バージョン0.14.6のmanifest ファイルを0.12のに置き換えてみたが、結果に変化は無し。

どこを直したらいいんだろうか?(汗

 

< TOPへ戻る >

「pdf2htmlEX:PDFをHTMLへ変換するツール [永遠に作業中:8]」への3件のフィードバック

  1. わかりやすい解説ありがとうございます。
    pdf2htmlEX-win32-0.14.6-upx-with-poppler-data.zip (pdf2htmlEx.exe is packed with UPX )
    これをDLしたところウィルス検出(Trojan: Win32/Spursint.F!cl
    )されたのですが同様の症状はないでしょうか。

  2. たかし さん はじめまして。

    コチラではその症状は検出されませんでした。
    PDF関連のコマンドライン・ツールはその手のエラーが出やすいみたいです。
    (Popplerの最新バージョンは出まくりです!)
    原因&詳細は不明です。
    使用の可否はソチラで判断して下さい。

コメントを残す

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

CAPTCHA


出来るだけ早く返答する様には心がけています。
が、遅くなる時もありますのでご了承ください。


SAMURAI Plugin