如何使用libharu库将泰语文本绘制为PDF文件

时间:2010-07-31 02:57:18

标签: libharu

我正在使用免费的pdf库libharu来生成PDF文件, 但我有一个编码问题,我无法在PDF文件上绘制泰语语言文字, 所有文字都显示“??? ..”

有人知道如何修复它吗? 感谢

2 个答案:

答案 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]);