フリーソフトPopplerのpdftohtmlコマンドを利用するとPDFをHTMLに変換することが出来ます。

PopplerとはPDFビューア(XpdfReader)やPDF解析・変換ツールのフリーソフトです。PopplerはXpdf(フリーソフト)をベースとして機能を拡張して提供されています。
ソースコードも提供されているライブラリとなります。コマンドライン実行のため、VBAや他プログラムからも利用可能となります。
| コマンド |
|---|
| pdftohtml [options] <PDF-file> [<html-file> <xml-file>] |
| オプション | |
|---|---|
| 指定なし | PDFをHTMLに変換します。 「-c」「-s」のオプションを付けた方が見た目が奇麗に変換できます。 |
| -p | .pdfリンクを.htmlに変換します。 |
| -c | 1ページずつのHTMLが生成されます。 |
| -s | 全ページが1つのHTMLが生成されます。 |
| -i | PDF内の画像は無視されます。 |
| -noframes | PDFをフレームなしのHTMLに変換します。 |
| -stdout | 生成したHTMLテキストを画面に表示します。 |
| -zoom <fp> | 生成するHTMLの大きさを指定します。 |
| -xml | HTMLではなくXMLとして出力されます。 |
| -noroundcoord | XML内の座標値を丸めないで生成する。(XMLのみ) |
| -hidden | 隠しテキストを出力する。 |
| -nomerge | 段落を結合しない。 |
| -fmt <string> | 画像ファイルの出力形式(png または jpg)。 |
| -nodrm | ドキュメントのDRM設定を上書きする。 |
| -wbt <fp> | 単語区切りのしきい値を設定します。 |
| -fontfullname | HTML内のフォント定義がフルネームで出力されます。 |
| -enc <string> | 文字コードを指定します |
| -q | 変換時のメッセージ/エラーメッセージを非表示にします |
| -f <int> | 解析を行うPDFの開始ページを指定します |
| -l <int> | 解析を行うPDFの終了ページを指定します |
| -opw <string> | オーナーパスワード設定されている場合にパスワードを指定します |
| -upw <string> | ユーザーパスワード設定されている場合にパスワードを指定します |
| -v | バージョンとコピーライトを表示します |
| -h | コマンドの使用方法を表示します |
PDFをフレーム付きのHTMLに変換します。「-c」「-s」のオプションを付けた方が見た目は奇麗に変換されます。
>pdftohtml ../Sample_tohtml.pdf out_none.html
link to page 2 Page-1
Page-2
>dir none
7,598 out_none-1_1.jpg
8,001 out_none-1_2.jpg
5,504 out_none-2_1.jpg
386 out_none.html
2,804 out_nones.html
266 out_none_ind.html
>
| 元PDF | 抽出後テキスト |
|---|---|
| Sample_tohtml.pdf (342KB) |
dir_none.zip (23KB)
|
>pdftohtml -p ../Sample_tohtml.pdf out_p.html
link to page 2 Page-1
Page-2
>dir p
7,598 out_p-1_1.jpg
8,001 out_p-1_2.jpg
5,504 out_p-2_1.jpg
419 out_p.html
2,845 out_ps.html
260 out_p_ind.html
>
.pdfを.htmlに変換する機能と思われますが、PDF内の.pdfは変換されませんでした。
当サンプルは使用方法が間違っている可能性があります。
1ページずつのHTMLが生成されます。フレームのインデックスでページ切り替えが可能です。
「-c」はページ単位にテキスト部分以外が画像化され、テキストが上に配置されます。このため、ページの表示は見やすくなりますが、HTML全体のサイズが大きくなります。
>pdftohtml -c Sample_tohtml.pdf c/out_c.html
link to page 2 Page-1
Page-2
>dir c
6,576 out_c-1.html
8,518 out_c-2.html
422 out_c.html
270,891 out_c001.png
105,633 out_c002.png
258 out_c_ind.html
>
| 元PDF | 抽出後テキスト |
|---|---|
| Sample_tohtml.pdf (342KB) |
dir_c.zip (363KB)
|
全ページが1つのHTMLが生成されます。
「-s」はページ単位にテキスト部分以外が画像化され、テキストが上に配置されます。このため、ページの表示は見やすくなりますが、HTML全体のサイズが大きくなります。
>pdftohtml -s Sample_tohtml.pdf s/out_s.html
link to page 2 Page-1
Page-2
>dir s
7,598 out_s-1_1.jpg
8,001 out_s-1_2.jpg
5,504 out_s-2_3.jpg
9,829 out_s-html.html
270,891 out_s001.png
105,633 out_s002.png
665 out_ss.html
>
| 元PDF | 抽出後テキスト |
|---|---|
| Sample_tohtml.pdf (342KB) |
dir_s.zip (382KB)
|
>pdftohtml -i Sample_tohtml.pdf i/out_i.html
link to page 2 Page-1
Page-2
>dir i
421 out_i.html
2,746 out_is.html
260 out_i_ind.html
>
| 元PDF | 抽出後テキスト |
|---|---|
| Sample_tohtml.pdf (342KB) |
dir_i.zip (2KB)
|
>pdftohtml -noframes ../Sample_tohtml.pdf out_noframes.html
link to page 2 Page-1
Page-2
>dir noframes
7,598 out_noframes-1_1.jpg
8,001 out_noframes-1_2.jpg
5,504 out_noframes-2_1.jpg
3,206 out_noframes.html
>
| 元PDF | 抽出後テキスト |
|---|---|
| Sample_tohtml.pdf (342KB) |
dir_noframes.zip (22KB)
|
生成したHTMLテキストを画面に表示します。画像は指定ディレクトリに格納されます。
>pdftohtml -stdout -enc Shift-JIS Sample_tohtml.pdf stdout/out_stdout.html
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml" lang="" xml:lang="">
<head>
<title>stdout/out_stdout</title>
<meta http-equiv="Content-Type" content="text/html; charset=Shift-JIS"/>
<meta name="generator" content="pdftohtml 0.36"/>
<meta name="author" content="testUser"/>
<meta name="date" content="2025-09-12T14:16:21+00:00"/>
<style type="text/css">
<!--
.xflip {
-moz-transform: scaleX(-1);
-webkit-transform: scaleX(-1);
-o-transform: scaleX(-1);
transform: scaleX(-1);
filter: fliph;
}
.yflip {
-moz-transform: scaleY(-1);
-webkit-transform: scaleY(-1);
-o-transform: scaleY(-1);
transform: scaleY(-1);
filter: flipv;
}
.xyflip {
-moz-transform: scaleX(-1) scaleY(-1);
-webkit-transform: scaleX(-1) scaleY(-1);
-o-transform: scaleX(-1) scaleY(-1);
transform: scaleX(-1) scaleY(-1);
filter: fliph + flipv;
}
-->
</style>
</head>
<body bgcolor="#A0A0A0" vlink="blue" link="blue">
link to page 2 <a name=1></a><img src="stdout/out_stdout-1_1.jpg"/><br/>
<img src="stdout/out_stdout-1_2.jpg"/><br/>
HTML 変換用 PDF <br/>
<br/>
pdftohtml コマンドを利用して、PDF を HTML に変換するための PDF ファイルです。 <br/>
This is a PDF file for converting PDF to HTML using the pdftohtml <br/>
command. <br/>
<br/>
<br/>
<br/>
<br/>
フォントサイズ<br/>
30pt<br/>
10pt 20pt <br/>
<br/>
フォント種類など ゴシック 明朝 斜体 太字 下線 取り消し線 <br/>
リンク <br/>
<a href="https://note.cman.jp/">https://note.cman.jp/ </a><br/>
<a href="out_stdout.html#2">次ページ</a> <br/>
<a href="https://note.cman.jp/pdf/poppler/SamplePDF/pdftohtml/Sample_tohtml_LInk2.pdf">PDF へリンク </a><br/>
<hr/>
<a name=2></a><img src="stdout/out_stdout-2_1.jpg"/><br/>
<br/>
<b>No. </b><br/>
<b>商品 </b><br/>
<b>売上 </b><br/>
<b>前年比 </b><br/>
<b>担当 </b><br/>
<b>1 </b>商品 A <br/>
10,000 円 <br/>
150.8% 第一営業 <br/>
<b>2 </b>商品 B <br/>
20,000 円 <br/>
91.1% <br/>
<b>3 </b>商品 C <br/>
30,000 円 <br/>
266.6% 第二営業 <br/>
<b>4 </b>商品 D <br/>
40,000 円 <br/>
100.5% 第一営業 <br/>
<br/>
グラフ タイトル<br/>
10<br/>
5<br/>
0<br/>
カテゴリ 1<br/>
カテゴリ 2<br/>
カテゴリ 3<br/>
カテゴリ 4<br/>
系列 1<br/>
系列 2<br/>
系列 3<br/>
<br/>
<br/> <br/> <br/> <br/>
オブジェクト内文字 <br/>
<br/> <br/> <br/>
<br/>
<hr/>
</body>
</html>
>dir stdout
7,598 out_stdout-1_1.jpg
8,001 out_stdout-1_2.jpg
5,504 out_stdout-2_1.jpg
>
生成するHTMLの大きさを指定します(デフォルト1.5)
>pdftohtml -zoom 0.8 -s Sample_tohtml.pdf zoom/out_zoom08.html
link to page 2 Page-1
Page-2
>pdftohtml -zoom 2.2 -s Sample_tohtml.pdf zoom/out_zoom22.html
link to page 2 Page-1
Page-2
>dir zoom
7,598 out_zoom08-1_1.jpg
8,001 out_zoom08-1_2.jpg
5,504 out_zoom08-2_3.jpg
9,750 out_zoom08-html.html
110,607 out_zoom08001.png
43,652 out_zoom08002.png
665 out_zoom08s.html
7,598 out_zoom22-1_1.jpg
8,001 out_zoom22-1_2.jpg
5,504 out_zoom22-2_3.jpg
9,888 out_zoom22-html.html
452,334 out_zoom22001.png
179,285 out_zoom22002.png
665 out_zoom22s.html
>
| 元PDF | 抽出後テキスト |
|---|---|
| Sample_tohtml.pdf (342KB) |
dir_zoom.zip (792KB)
|
>pdftohtml -xml Sample_tohtml.pdf xml/out_xml
link to page 2 Page-1
Page-2
>dir xml
7,598 out_xml-1_1.jpg
8,001 out_xml-1_2.jpg
5,504 out_xml-2_1.jpg
12,069 out_xml.xml
>
| 元PDF | 抽出後テキスト |
|---|---|
| Sample_tohtml.pdf (342KB) |
dir_xml.zip (363KB)
|
XML内の座標値を丸めないで生成する。(XMLのみ)
>pdftohtml -noroundcoord -xml Sample_tohtml.pdf noroundcoord/out_noroundcoord
link to page 2 Page-1
Page-2
>dir noroundcoord
7,598 out_noroundcoord-1_1.jpg
8,001 out_noroundcoord-1_2.jpg
5,504 out_noroundcoord-2_1.jpg
15,604 out_noroundcoord.xml
>
| 元PDF | 抽出後テキスト |
|---|---|
| Sample_tohtml.pdf (342KB) |
dir_noroundcoord.zip (363KB)
|
>pdftohtml -hidden -s Sample_tohtml.pdf hidden/out_hidden.html
link to page 2 Page-1
Page-2
>dir hidden
7,598 out_hidden-1_1.jpg
8,001 out_hidden-1_2.jpg
5,504 out_hidden-2_3.jpg
9,864 out_hidden-html.html
270,891 out_hidden001.png
105,633 out_hidden002.png
665 out_hiddens.html
>
>pdftohtml -nomerge -s Sample_tohtml.pdf nomerge/out_nomerge.html
link to page 2 Page-1
Page-2
>dir nomerge
7,598 out_nomerge-1_1.jpg
8,001 out_nomerge-1_2.jpg
5,504 out_nomerge-2_3.jpg
10,277 out_nomerge-html.html
270,891 out_nomerge001.png
105,633 out_nomerge002.png
665 out_nomerges.html
>
画像ファイルも出力形式(png または jpg)。
PDF内に埋め込まれている画像ではなく「-s」「-i」等で背景として使用する画像の出力形式のようです。
>pdftohtml -fmt jpeg -s Sample_tohtml.pdf fmt/out_fmt.html
link to page 2 Page-1
Page-2
>dir fmt
7,598 out_fmt-1_1.jpg
8,001 out_fmt-1_2.jpg
5,504 out_fmt-2_3.jpg
9,845 out_fmt-html.htm
270,891 out_fmt001.jpeg
105,633 out_fmt002.jpeg
665 out_fmts.html
>
拡張子は.jpegに変わったのですが、中身はpngのままのようです。使用方法が違っている可能性があります。
>pdftohtml -nodrm -s Sample_tohtml.pdf nodrm/out_nodrm.html
link to page 2 Page-1
Page-2
>dir nodrm
7,598 out_nodrm-1_1.jpg
8,001 out_nodrm-1_2.jpg
5,504 out_nodrm-2_3.jpg
9,857 out_nodrm-html.htm
270,891 out_nodrm001.png
105,633 out_nodrm002.png
665 out_nodrms.html
>
単語区切りのしきい値を設定します(デフォルトは10パーセント)。
>pdftohtml -wbt 05 -s Sample_tohtml.pdf wbt/out_wbt05.html
link to page 2 Page-1
Page-2
>pdftohtml -wbt 50 -s Sample_tohtml.pdf wbt/out_wbt50.html
link to page 2 Page-1
Page-2
>dir wbt
7,598 out_wbt05-1_1.jpg
8,001 out_wbt05-1_2.jpg
5,504 out_wbt05-2_3.jpg
9,871 out_wbt05-html.html
270,891 out_wbt05001.png
105,633 out_wbt05002.png
665 out_wbt05s.html
7,598 out_wbt50-1_1.jpg
8,001 out_wbt50-1_2.jpg
5,504 out_wbt50-2_3.jpg
9,553 out_wbt50-html.html
270,891 out_wbt50001.png
105,633 out_wbt50002.png
665 out_wbt50s.html
>
一部で単語間隔が変わります。サンプルでは1行目の単語間隔に違いがあります。
| 元PDF | 抽出後テキスト |
|---|---|
| Sample_tohtml.pdf (342KB) |
dir_wbt.zip (363KB)
|
HTML内のフォント定義がフルネームで出力されます。
>pdftohtml -fontfullname -s Sample_tohtml.pdf fontfullname/out_fontfullname.html
link to page 2 Page-1
Page-2
>dir fontfullname
7,598 out_fontfullname-1_1.jpg
8,001 out_fontfullname-1_2.jpg
5,504 out_fontfullname-2_3.jpg
9,974 out_fontfullname-html.html
270,891 out_fontfullname001.png
105,633 out_fontfullname002.png
665 out_fontfullnames.html
>
共通的に使用されるコマンドオプション「-f」「-l」「-enc」「-opw」「-upw」「-v」「-h」等のオプションは こちら でご確認ください。
Windows版を使用しています。
pdftohtml version 24.08.0 Copyright 2005-2024 The Poppler Developers - http://poppler.freedesktop.org Copyright 1999-2003 Gueorgui Ovtcharov and Rainer Dorsch Copyright 1996-2011, 2022 Glyph & Cog, LLC Usage: pdftohtml [options] <PDF-file> [<html-file> <xml-file>] -f <int> : first page to convert -l <int> : last page to convert -q : don't print any messages or errors -h : print usage information -? : print usage information -help : print usage information --help : print usage information -p : exchange .pdf links by .html -c : generate complex document -s : generate single document that includes all pages -i : ignore images -noframes : generate no frames -stdout : use standard output -zoom <fp> : zoom the pdf document (default 1.5) -xml : output for XML post-processing -noroundcoord : do not round coordinates (with XML output only) -hidden : output hidden text -nomerge : do not merge paragraphs -enc <string> : output text encoding name -fmt <string> : image file format for Splash output (png or jpg) -v : print copyright and version info -opw <string> : owner password (for encrypted files) -upw <string> : user password (for encrypted files) -nodrm : override document DRM settings -wbt <fp> : word break threshold (default 10 percent) -fontfullname : outputs font full name
| 主な機能 | 概要 |
|---|---|
| pdfattach | PDFファイルに添付ファイルを埋め込みします |
| pdfdetach | PDF内に添付(埋め込み)されているファイルの一覧表示や抽出を行います |
| pdffonts | PDFファイルで使用されているフォントやフォントの埋め込み有無を調べる |
| pdfimages | PDFファイルで使用(埋め込み)されている画像を抽出する |
| pdfinfo | PDFファイルの情報(作成者、作成日時、ページ数など)を表示する |
| pdfseparate | PDFファイルを1ページごとに分割する |
| pdftocairo | PDFファイルを画像に変換する(Cairoベクターグラフィックスを使用) |
| pdftoppm | PDFファイルを画像に変換する |
| pdftops | PDFファイルをPostScriptファイルに変換する |
| pdftotext | PDFファイルからテキストを抽出する |
| pdfunite | 複数のPDFファイルをページ結合する |