使用JagPDF库在PDF文件上打印≤符号

时间:2019-03-20 18:02:11

标签: c++ pdf unicode

我正在使用JagPDF创建PDF文件,并且尝试打印≤符号,如下所示:

pdf::Document doc(pdf::create_file("report.pdf"));
doc.page_start(792,612);   
pdf::Font font = doc.font_load("standard; name=Times-Roman; size=12");
doc.page().canvas().text_font(font);
doc.page().canvas().color("f", 0);
doc.page().canvas().text_rendering_mode("f");
doc.page().canvas().text(100, 300, "PEP ≤ 90");
doc.page_end();
doc.finalize();

可以打印出

PEP ? 90

我尝试阅读文档,他们说了一些有关Unicode的内容,但不明白它们是如何工作的,它一定很容易,而且只是我所缺少的东西。有人可以帮我吗?

2 个答案:

答案 0 :(得分:0)

尝试:

doc.page().canvas().text(100, 300, "PEP \U+2264 90");

答案 1 :(得分:0)

我对JagPDF不熟悉,但是"PEP ≤ 90"应该可以正常工作,只要您将源代码保存为UTF-8,并且库也需要UTF-8字符串。您还可以将"PEP \u2264 90"\uXXXX一起使用,这是代码点U + XXXX的转义序列,但是显然可读性较低

根据文档,您可以设置编码并使用以下代码段输出文本

font = doc.font_load("file=DejaVuSans.ttf; size=14; enc=utf-8")
canvas.text_font(font)
text = unicode_text.encode('utf8')
canvas.text(50, 780, text)
     

http://www.jagpdf.org/doc/jagpdf/usersguide/text.htm

您还需要使用TrueType或OpenType字体,因为同一页面中Type 1字体下有一个注释

  

尽管JagPDF允许将内置的字体编码更改为UTF-8,但实际上,由于标准字体使用的字符集,我们实际上仅限于拉丁字母。

如果您使用的是C ++ 11及更高版本(应使用),则可以通过以下任意一种方式将编码强制为UTF-8

u8"PEP ≤ 90"
u8"PEP \U00002264 90"
u8"PEP \u2264 90"