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 的第三个参数) - 由于外部字体引用,您的 PDF 文件可能不可读。如果您对输出 PDF 大小不感兴趣,您可以只嵌入字体。

我已经测试了在 Google 中找到的几个泰语 .ttf 字体,它们的渲染效果很好。另外(这可能很重要,但我不确定)我正在使用 libharu 的 fork 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 回答