36

私のプログラムは、要求に応じて比較的単純なPDFドキュメントを生成しますが、漢字や奇妙な数学記号などのUnicode文字に問題があります。通常の文字列をPDFで書き込むには、角かっこで囲みます。

(something)

8進コードで文字をエスケープするオプションもあります。

(\527)

しかし、これは最大512文字になります。上位の文字をどのようにエンコードまたはエスケープしますか?バイトストリームと16進エンコードされた文字列への参照を見たことがありますが、実際にそれを行う方法を教えてくれる参照はありません。


編集:あるいは、私のために仕事をしてくれる良いJavaPDFライブラリを教えてください。私が現在使用しているのはgnujpdfのバージョンです(元の作者はAWOLになっているように見えるので、いくつかのバグを修正しました)。これにより、AWTグラフィックスインターフェイスに対してプログラミングできます。同じ。

代替案は、HTML-> PDFか、HTMLに非常によく似た段落とボックスに基づくプログラムモデルのいずれかであるように思われます。iTextは後者の例です。これは私の既存のコードを書き直すことを意味します、そして私はそれらが私にレイアウトにおいて同じ柔軟性を与えるとは確信していません。


編集2:以前は気づいていませんでしたが、iTextライブラリにはGraphics2D APIがあり、Unicodeを完全に処理しているように見えるので、これを使用します。尋ねられた質問に対する答えではありませんが、それは私にとって問題を解決します。


編集3: iTextは私にとってうまく機能しています。レッスンは、無意味に難しいと思われる何かに直面したときに、あなたよりもそれについてもっと知っている誰かを探すことだと思います。

4

7 に答える 7

40

第 3 章の PDF リファレンスでは、Unicode について次のように述べています。

テキスト文字列は、PDFDocEncoding または Unicode 文字エンコードでエンコードされます。PDFDocEncoding は、ISO Latin 1 エンコーディングのスーパーセットであり、付録 D に記載されています。Unicode でエンコードされたテキスト文字列の場合、最初の 2 バイトは 254 で、その後に 255 が続く必要があります。 Unicode 規格で指定されています。(このメカニズムは、2 文字の thorn ydieresis で PDFDocEncoding を使用して文字列を開始することを排除します。これは、単語またはフレーズの意味のある開始である可能性は低いです)。

于 2008-10-02T15:39:12.637 に答える
15

簡単な答えは、簡単な答えはないということです。PDF の仕様を見てみると、テキスト表示のメカニズムに専念する 1 つの章 (そして長い章) があることがわかります。私は自分の会社ですべての PDF サポートを実装しましたが、テキストの処理は演習の中で最も複雑な部分でした。あなたが発見した解決策 — サードパーティのライブラリを使用して作業を行う — は、PDF ファイルに対して非常に具体的で特別な目的の要件がない限り、実際には最良の選択です。

于 2008-09-27T14:28:03.880 に答える
5

dredkin が指摘したように、ページ コンテンツ ストリームでは Unicode 文字値の代わりにグリフ インデックスを使用する必要があります。PDF で Unicode テキストを表示するにはこれで十分ですが、Unicode テキストは検索できません。テキストを検索可能にしたり、テキストをコピーして貼り付けたりするには、/ToUnicode ストリームも含める必要があります。このストリームは、ドキュメント内の各グリフを実際の Unicode 文字に変換する必要があります。

于 2016-08-17T22:57:00.170 に答える
4

PDF 仕様の付録 D (995 ページ) を参照してください。PDF コンシューマー アプリケーションで事前定義されているフォントと文字セットの数には制限があります。他の文字を表示するには、それらを含むフォントを埋め込む必要があります。ファイルサイズを小さくするために、必要な文字のみを含むフォントのサブセットのみを埋め込むこともお勧めします。PDFでUnicode文字を表示する作業も行っていますが、これは大きな手間です。

PDFBoxまたはiTextをチェックしてください。

http://www.adobe.com/devnet/pdf/pdf_reference.html

于 2008-10-02T15:31:06.150 に答える
-2

私は PDF の専門家ではなく、(Ferruccio が言ったように) Adob​​e の PDF 仕様がすべてを教えてくれるはずですが、ある考えが頭に浮かびました:

必要なすべての文字をサポートするフォントを使用していますか?

私たちのアプリケーションでは、(サードパーティのライブラリを使用して) HTML ページから PDF を作成しましたが、キリル文字でこの問題が発生しました...

于 2008-09-24T16:57:31.840 に答える