【ITニュース解説】Convert a PDF to HTML and back to PDF — why is it bigger
2026年09月09日に「Dev.to」が公開したITニュース「Convert a PDF to HTML and back to PDF — why is it bigger」について初心者にもわかりやすく解説しています。
ITニュース概要
PDFをHTMLへ変換し、再度PDFに戻すとファイルサイズが増えることがある。これは、見た目を忠実に再現する層と、テキストを選択・検索可能にする透明な層の二重構造でデータが保持されるためだ。変換時にこれら両方の情報が新しいPDFに引き継がれるため、サイズが大きくなるのは、機能維持のための構造的な必然であり、変換ミスではない。
ITニュース解説
PDFファイルをHTML形式に変換し、そのHTMLを再びPDFに戻すと、元のPDFファイルよりも最終的なPDFファイルのサイズが大きくなる現象は、一見すると「変換処理のどこかで情報が余計に増えてしまったのではないか」と感じられるかもしれない。しかし、このファイルサイズの増大は、変換ツールが間違った処理をした結果ではなく、むしろユーザーが求める「機能」を実現するための必然的な構造に起因するものである。この仕組みを理解すれば、なぜファイルサイズが大きくなるのか、その理由がはっきりと見えてくるだろう。
まず、「PDFからHTMLへの変換」がどのようなことを行っているのかを考える。PDFをウェブページ(HTML)に変換する主な目的は、そのPDFの内容をウェブブラウザで表示できるようにすること、そしてウェブページ上でPDFのテキストを選択したりコピーしたり、あるいは検索したりできるようにすることだ。この二つの目的、つまり「元のPDFと見た目を全く同じにする忠実な再現性」と「テキストを扱えるようにする機能性」を両立させるために、変換されたHTMLファイルは情報を二つの異なる層(レイヤー)に分けて保持する仕組みになっている。
一つ目の層は「見えるグラフィック層」と呼ばれるものだ。これは、元のPDFファイルに描かれているテキストや図形、画像といった要素が、PDF内の座標情報を元に、ベクターアウトラインという形で再構築されたものだ。ベクターアウトラインとは、点と線を元に形が描かれた図形情報であり、拡大しても画像がギザギザになったりぼやけたりせず、常に鮮明な表示を保つことができる。ウェブページ上では、このベクターアウトラインがSVG(Scalable Vector Graphics)という形式で表現され、私たちの目に見える視覚的な情報となる。
もう一つの層は「透明な選択可能なテキスト層」だ。この層は、ウェブページ上で目には見えないが、実際には表示されているグラフィック層の上に重ねて配置されている。ユーザーがマウスでテキストを選択したり、コピーしたり、あるいはウェブページの検索機能で文字を探したりできるのは、この透明なテキスト層が存在するからだ。つまり、私たちは「見えるグラフィック層」が描画した文字の形を目で見て、実際にはその上にある「透明なテキスト層」の文字を選択したり検索したりしているのだ。この二つの層がぴったりと重なり合って存在することで、「見た目は元のPDFと全く同じなのに、テキストとして扱える」という状態が実現されている。
元のPDFファイルでは、テキストは通常、フォント情報に基づいて文字の形を描画する一つの表現として存在している。しかし、これを「見た目の忠実さ」と「テキストの選択・検索可能性」の両方を兼ね備えたHTMLに変換する際には、上述の通り「ベクターアウトライン」と「透明なテキスト層」という二つの異なる情報セットに分割されるのだ。
次に、この二つの情報セットを持つHTMLファイルを、再びPDF形式に変換する際のことについて説明する。HTMLをPDFに再変換するツールは、入力として与えられたHTMLファイルに含まれる「ベクターアウトラインのグラフィック情報」と「透明なテキスト情報」の二つの情報セットを、どちらも欠かすことなく最終的なPDFファイルに組み込む必要がある。なぜなら、もしどちらか一方の情報を落としてしまえば、元のHTMLが持っていた「忠実な見た目」と「テキストの選択・検索可能性」のうち、どちらかの機能が失われてしまうからだ。結果として、再変換されたPDFファイルは、元のPDFが持っていた一つの情報セットに加え、さらに一つ追加された情報セット(透明なテキスト層)を持つことになる。このため、情報量が増え、ファイルサイズが元のPDFよりも大きくなるのは、構造上避けられない事実であり、変換ツールがエラーを起こしたわけではないのだ。
このPDFの再生成は、Google Chromeなどのウェブブラウザで使われているレイアウトエンジン(ChromiumやSkiaといった技術)の能力を利用して行われる。つまり、ファイルサイズが大きくなる理由は、このPDF生成の技術自体にあるのではなく、生成のためにツールに「二つの情報セット」が入力として渡されたことにある。
では、もしファイルサイズを小さくしたいのであれば、この二つの層のうち、片方を削除することはできないのだろうか。変換ツールであるImgIng(imging.ai)などの選択肢は、一般的にそうしないことにある。なぜなら、先ほども述べたように、それぞれの層がユーザーが求める重要な機能を提供しているからだ。例えば、透明なテキスト層を削除してしまえば、生成されたPDFからはテキストを選択したり検索したりする機能が失われてしまう。また、ベクターアウトラインを画像(ビットマップ画像)に変換してしまう(これをラスタライズという)と、PDFを拡大表示した際に画像がぼやけてしまい、視覚的な品質が低下するだけでなく、やはりテキストの選択や検索はできなくなる。つまり、ファイルサイズを削減するためにどちらかの層を削除することは、ユーザーが求めた「忠実な見た目」と「テキストの選択・検索可能性」という重要な機能の一部を犠牲にすることと引き換えになってしまうのだ。
したがって、PDFのファイルサイズが大きくなるという現象は、決して無駄な情報が増えたわけではなく、「元のPDFの見た目を忠実に再現しつつ、テキストも選択・検索可能にする」という二つの目的を達成するための、構造上必要なコストだと理解するべきである。もし、最終的に得られるPDFファイルでテキストの選択や検索の機能が必要ないのであれば、そもそも「選択可能なテキスト層を保持する」という変換パスを選ばなければ良い。しかし、「見た目の忠実さ」と「テキストの選択・検索可能性」の両方を求める限り、一度HTMLを介してPDFを再生成するとファイルサイズが大きくなることは避けられないのだ。この二つの層の仕組みを正しく理解すれば、ファイルサイズが増えたことに対して変換ツールを疑うことはなくなるだろう。増えたバイト数は、まさにあなたが求めた「選択可能で検索可能なテキスト」という機能を提供するための代償なのである。