Libharu C ++创建的PDF上的德语文本不合适

时间:2016-12-13 15:53:26

标签: c++ pdf libharu

我必须在Libharu创建的pdf上写德语文本。我将德语文本分配给字符串变量(即std::string TestString = "VariableGesamtlänge";),然后将该文本放入pdf。我的简单代码如下:

        //-----UTF8 Encoding
        HPDF_UseUTFEncodings(pdf);
        HPDF_SetCurrentEncoder(pdf, "UTF-8"); 
        const char *fontname = HPDF_LoadTTFontFromFile(pdf, "FreeSans.ttf", HPDF_TRUE);
        HPDF_Font font = HPDF_GetFont(pdf, fontname, "UTF-8");
        HPDF_Page_SetFontAndSize(page, font, 24);

        std::string TestString = "VariableGesamtlänge";
        DrawText(page, font, TestString.c_str(), y);

问题:我得到两个方框而不是ä。我正在使用 VS2010

1 个答案:

答案 0 :(得分:1)

'ä'不是ASCII字符。它可以存储为单个字符(在这种情况下,哪一个?),或者可以存储为多个字符(在这种情况下,哪些是?)。

您已告知HPDF功能,您将以UTF-8(这是一个完全明智的选择)传递文本。这意味着'ä'由0xC3 0xA4表示。

源文件几乎肯定是用8位文本编码的,使用(可能)代码页1252.所以'ä'将是单个字符0xE4。您需要告诉编译器将字符串存储为UTF-8,或者可以使用UTF-8重新编码源文件。

您的最终选择是将文本存储在(UTF-8)文件中,并从那里读取。