無料の PDF ライブラリ libharu を使用して PDF ファイルを生成していますが、エンコーディングの問題があり、PDF ファイルにタイ語のテキストを描画できません。すべてのテキストに「???..」と表示されます。
誰かがそれを修正する方法を知っていますか?ありがとう
無料の PDF ライブラリ libharu を使用して PDF ファイルを生成していますが、エンコーディングの問題があり、PDF ファイルにタイ語のテキストを描画できません。すべてのテキストに「???..」と表示されます。
誰かがそれを修正する方法を知っていますか?ありがとう
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 ブランチにマージされています。
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]);