0

PDF 内の個々の文字の x/y、幅/高さ、およびページ番号を、理想的にはパーセンテージで取得する必要があります。

明らかに、Ghost Script はこれを行うことができます。それ以外の方法では PDF をラスター イメージに変換することはできないからです。Ghostscript でこの情報を取得する簡単な方法はありますか? または、この機能にフックするようにソースを変更する必要がありますか?

4

1 に答える 1

1

グリフは (FreeType を使用して) ビットマップにレンダリングされ、フォントとマトリックスでタグ付けされたグリフ キャッシュに格納されるため、一意に識別できます。テキストがページにレンダリングされると、最初にキャッシュが参照され、ヒットが存在する場合は、そのビットマップが現在のポイントに描画されます。そうでない場合、グリフはレンダリングされ、キャッシュされます。

ただし、非常に大きなポイント サイズはキャッシュされずに残され、キャッシュがいっぱいになったりオーバーフローしたりしないように毎回レンダリングされます。

したがって、Ghostscript を使用してこの情報を取得するには、一連のテキスト メソッドを持つデバイスを作成する必要があります。グリフの幅と高さを決定するには、グリフからビットマップをキャプチャする必要があり、現在のポイントはページ上の位置を示します。output_page メソッドは、ページが完了したことを通知するため、ページ番号を自分で追跡する必要があります。

テキストがどのように処理されるかを確認するには txtwrite デバイスを調べ、ビットマップを取得する方法を確認するには epswrite デバイスを調べることができます。両方の組み合わせが必要になります。

PDF ファイルの「テキスト」はテキストである必要はないことに注意してください。テキストのように見えるものは、ビットマップまたはベクトルである可能性があります。テキストは特殊な方法でエンコードされる可能性があり、グリフに関する Unicode やその他の識別可能な情報を取得する方法がない場合があります (可能であれば、そのような情報を抽出する方法を txtwrite デバイスが示しています)。

また、フォントは常に PDF ファイルに埋め込まれているとは限りません。その場合、代替フォントが使用され、幅/高さの情報が台無しになります。

これはかなり大きなプロジェクトです。

于 2013-07-19T07:15:24.040 に答える