1

無料の PDF ライブラリ libharu を使用して PDF ファイルを生成していますが、エンコーディングの問題があり、PDF ファイルにタイ語のテキストを描画できません。すべてのテキストに「???..」と表示されます。

誰かがそれを修正する方法を知っていますか?ありがとう

4

2 に答える 2

1

libharu を使用して、象形文字テキスト (タイ語ではなく、中国語と日本語) のレンダリングに成功しました。まず、Unicode モードを使用しました。HPDF_UseUTFEncodings () 関数のドキュメントを参照してください。

C 言語の場合、問題を解決するために必要な一連の libharu API 呼び出しを次に示します。

HPDF_UseUTFEncodings(docHandle);
HPDF_SetCurrentEncoder(docHandle, "UTF-8");

これdocHandleが有効なHPDF_Docオブジェクトです。

次の部分は、UTF フォントでの適切な作業です。

const char * libFontName = HPDF_LoadTTFontFromFile(docHandle, fontFileName.c_str(), font_embed::EmbedFonts);
HPDF_Font font = HPDF_GetFont(docHandle, libFontName, "UTF-8");

これらの呼び出しの後、タイ文字を含む Unicode テキストをレンダリングできます。また、埋め込みフラグ (LoadTTFontFromFile の 3 番目のパラメーター) についても注意してください。外部フォント参照が原因で、PDF ファイルが読み取れない場合があります。出力 PDF のサイズに問題がない場合は、フォントを埋め込むだけでかまいません。

Google で見つかったタイ語の .ttf フォントをいくつかテストしたところ、正常にレンダリングされました。また(重要かもしれませんが、よくわかりません)libharu https://github.com/kdeforche/libharuのフォークを使用しており、現在 master ブランチにマージされています。

于 2015-03-24T18:00:33.420 に答える
0

PDFにテキストを書き込むときは、正しいフォントとエンコーディングを使用してください。libharuのドキュメントには、すべての可能性があります:https ://github.com/libharu/libharu/wiki/Fonts

あなたの場合、あなたは使用しなければなりませんISO8859-11 Thai, TIS 620-2569 character set

例(スペイン語):

    HPDF_Font fontEn = HPDF_GetFont(pdf, "Helvetica-Bold", "ISO8859-2");
    HPDF_Page_TextOut(page1, 50.00, 750.00, [@"Código para correcta codificación en libharu" cStringUsingEncoding:NSISOLatin1StringEncoding]);
于 2011-04-05T07:51:37.503 に答える