2

私はテキスト編集プログラムを持っています。作成したドキュメントを PDF にエクスポートします。

また、一連の文字列を PDFDictionary に保存し、作成したドキュメントを再度開くことができるようにします。

PDF と私のプログラムのフォントには、Win7 システムから .ttf を抽出して BookAntiqua を使用しています。ホースフォントも問題なく表示できます。

しかし、私には問題があります。ユーザーが使用する一般的な文字は、šđčćž と ŠĐČĆŽ です。

プログラムに最初にそれらを入力すると、正しく表示されます。PDFに保存してAdobe Readerで開くとちゃんと表示されます。ただし、その PDF をプログラムに再度読み込むと、⎕ として表示されるか、まったく表示されません。

問題は、PDFDictionary に入力する方法にあると思います。string.replace("Ž", "/u017D");やのようなことをしようとしましstring.replace("Đ", "\u017D");たが、役に立ちませんでした。Eclipse から PDF を開くと、「Ž」を「/u0017D」のように保存する代わりに、「Ž」のように保存され、他の問題のある文字の一部が欠落していることに気付きました (PDFDictionary 内、すべて)。

私が知りたいのは、たとえば文字 "Ž" を PDFDictionary に印刷して、プログラムで一度読み取った文字が JTextArea などに文字 "Ž" として表示されるようにする方法です。

編集: すべての PDF 処理は iText で行われます!

コード:

保存時:

PDFobject = new PdfString("šđčćž ŠĐČĆŽ");
PDFName index =  new PdfName("1");

dictionary.put(index, object);

開くとき(ロードするとき):

PDFName index = new PdfName("1");
PDFObject line = dictionary.get(index);
String string = line.toString();

JTextArea abc= new JTextArea();
abc.setText(string);

行をこれに変更すると: PDFobject = new PdfString("šđčćž ŠĐČĆŽ", "UTF-8");、まだ出力としてランダムな意味不明なものが得られます...

4

2 に答える 2

2

(IDE) エディタはエンコーディングを使用し、Java コンパイラはエンコーディングを使用します。両方を同じエンコーディングに設定する必要があります。国際対応には UTF-8 を使用しています。次に、コンパイルされた Java (.class、.jar) は内部で Unicode を使用します。

正しいエンコーディングを保証するもう 1 つの方法は、 のような Unicode エスケープを使用すること\u017Dです。

iText には独自のエンコーディングがあります。そして、文字を表示できる必要があるフォントがあります。iText は、PDF 独自のフォントのいずれか、または埋め込みフォント (使用されるサブセットで PDF のサイズが大きくなります) を使用できます。

答えはありませんが、たとえば、文字エンコーディングなどを使用して、 iText API、DocumentFontを調べる必要があると思います。charExistscreateFont

于 2012-09-22T14:28:43.813 に答える
2

文字を適切にエンコードする必要があります。 Unicodeは、Java と PDF が共有する標準です。テキストを UTF-8 として明示的にエンコードして、両方が処理できるようにすることをお勧めします。

于 2012-09-22T13:41:20.317 に答える