我正在使用免费的pdf库libharu来生成PDF文件, 但我有一个编码问题,我无法在PDF文件上绘制泰语语言文字, 所有文字都显示“??? ..”
有人知道如何修复它吗? 感谢
答案 0 :(得分: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的fork,现在它已合并到master分支中。
答案 1 :(得分:0)
将文本写入PDF时,请使用正确的字体和编码。在libharu文档中,您拥有所有可能性:http://libharu.sourceforge.net/fonts.html
在您的情况下,您必须使用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]);