提问人:Stefan Koch 提问时间:9/27/2023 最后编辑:ÐаnStefan Koch 更新时间:9/27/2023 访问量:68
如何使用 libharu 将 utf-8 字符串打印到 pdf 文件中
How to print utf-8 strings into a pdf file useing libharu
问:
我正在尝试编写带有中文字符串的 PDF 文档。这些字符串在编码为 utf-8 的源代码中可用。
当我编译并运行以下内容(在 linux Debian 上)时,我收到“错误:error_no=1028,detail_no=0”的错误。
如果我将字体选择从“SimSun”更改为“Helvetica”,则不会出现错误。(显然输出中没有中文,因为该字体不包含这些字符。
我怀疑我错过了一些简单的东西,但我不知道它是什么。
我试图从我找到的示例中做到这一点(见下面的代码),但我没有看到他们打印中文并在源代码中有 utf-8 字符串的示例。
#include <stdio.h>
#include <setjmp.h>
#include "hpdf.h"
jmp_buf env;
void error_handler (HPDF_STATUS error_no,
HPDF_STATUS detail_no,
void *user_data)
{
printf ("ERROR: error_no=%04X, detail_no=%u\n", (HPDF_UINT)error_no, (HPDF_UINT)detail_no);
longjmp(env, 1);
}
int main (int argc, char **argv)
{
HPDF_Doc pdf = HPDF_New (error_handler, NULL);
if (!pdf) {
printf ("error: cannot create PdfDoc object\n");
return 1;
}
if (setjmp(env)) {
HPDF_Free (pdf);
return 1;
}
HPDF_UseUTFEncodings(pdf);
HPDF_SetCurrentEncoder(pdf, "UTF-8");
HPDF_UseCNSFonts (pdf);
HPDF_Page page = HPDF_AddPage (pdf);
HPDF_REAL height = HPDF_Page_GetHeight (page);
HPDF_REAL width = HPDF_Page_GetWidth (page);
HPDF_Font def_font = HPDF_GetFont (pdf, "SimSun", NULL);
//HPDF_Font def_font = HPDF_GetFont (pdf, "Helvetica", NULL);
HPDF_Page_SetFontAndSize (page, def_font, 24);
//const char* text = "Hello World!";
const char* text = "Hello: 警告:温度控制已禁用。";
HPDF_REAL tw = HPDF_Page_TextWidth (page, text);
HPDF_Page_BeginText (page);
HPDF_Page_TextOut (page, (width - tw) / 2, height - 50, text);
HPDF_Page_EndText (page);
HPDF_SaveToFile (pdf, "a.out.pdf");
HPDF_Free (pdf);
return 0;
}
答: 暂无答案
评论
setjmp
volatile
goto
throw
pdf
volatile