PDF 内の個々の文字の x/y、幅/高さ、およびページ番号を、理想的にはパーセンテージで取得する必要があります。
明らかに、Ghost Script はこれを行うことができます。それ以外の方法では PDF をラスター イメージに変換することはできないからです。Ghostscript でこの情報を取得する簡単な方法はありますか? または、この機能にフックするようにソースを変更する必要がありますか?
PDF 内の個々の文字の x/y、幅/高さ、およびページ番号を、理想的にはパーセンテージで取得する必要があります。
明らかに、Ghost Script はこれを行うことができます。それ以外の方法では PDF をラスター イメージに変換することはできないからです。Ghostscript でこの情報を取得する簡単な方法はありますか? または、この機能にフックするようにソースを変更する必要がありますか?
グリフは (FreeType を使用して) ビットマップにレンダリングされ、フォントとマトリックスでタグ付けされたグリフ キャッシュに格納されるため、一意に識別できます。テキストがページにレンダリングされると、最初にキャッシュが参照され、ヒットが存在する場合は、そのビットマップが現在のポイントに描画されます。そうでない場合、グリフはレンダリングされ、キャッシュされます。
ただし、非常に大きなポイント サイズはキャッシュされずに残され、キャッシュがいっぱいになったりオーバーフローしたりしないように毎回レンダリングされます。
したがって、Ghostscript を使用してこの情報を取得するには、一連のテキスト メソッドを持つデバイスを作成する必要があります。グリフの幅と高さを決定するには、グリフからビットマップをキャプチャする必要があり、現在のポイントはページ上の位置を示します。output_page メソッドは、ページが完了したことを通知するため、ページ番号を自分で追跡する必要があります。
テキストがどのように処理されるかを確認するには txtwrite デバイスを調べ、ビットマップを取得する方法を確認するには epswrite デバイスを調べることができます。両方の組み合わせが必要になります。
PDF ファイルの「テキスト」はテキストである必要はないことに注意してください。テキストのように見えるものは、ビットマップまたはベクトルである可能性があります。テキストは特殊な方法でエンコードされる可能性があり、グリフに関する Unicode やその他の識別可能な情報を取得する方法がない場合があります (可能であれば、そのような情報を抽出する方法を txtwrite デバイスが示しています)。
また、フォントは常に PDF ファイルに埋め込まれているとは限りません。その場合、代替フォントが使用され、幅/高さの情報が台無しになります。
これはかなり大きなプロジェクトです。