有没有人在c ++上使用过jagPDF?
我正在尝试从他们在http://www.jagpdf.org/doc/index.htm提供的手册中学习如何使用它。不幸的是,他们所有的例子都在Python中。有时候适应C ++并不是什么大问题,但有时候会让人感到困惑。
例如,我正在尝试学习如何对齐文本,教程中的文本位于Text Aligment。找到填充后,将填充放在文本行中的函数是:
canvas.text(txt, [padding / 2.0], [0])
查看该函数的引用,转换表为:
[py] text(txt_u, offsets, positions)
[c++] void text(Char const* txt_u, Double const* offsets, UInt offsets_length, Int const* positions, UInt positions_length);
参数:
我已经尝试了几件事,但我还没有弄清楚c ++需要的两个额外的输入参数。如果那里有人使用过jagPDF并且知道如何用c ++来做,我会非常感激。
答案 0 :(得分:0)
这是我对JagPDF的第一次接触。有部分文本对齐,但代码是在Python上编写的。
在C ++中它应该是:
// line width
pdf::Double line_width = 597.6;
// text to show
pdf::Char *txt = "Everything should be made as simple as possible, but no simpler.";
// calculate text width
pdf::Double text_width = font.advance(txt);
// calculate gap - difference in line_width and text_width
pdf::Double gap = line_width - text_width;
// calculate the text padding
pdf::Double padding = -1000.0 / font.size() * gap;
// create array with paddings - I set all padings, but is used only 1
pdf::Double const pp[] = { padding, padding / 2.0 }; // index 0 for right alignment, 1 for center
// not sure what are positions, but need for function `text()` - set as Doc to zero (0)
pdf::Int const dd[] = { 0};
// get canvas where the text is written
pdf::Canvas canvas = doc.page().canvas();
// start text block
canvas.text_start(0, 480);
// set font
canvas.text_font(font);
// right alignment text
canvas.text(txt, pp, 1, dd, 1);
canvas.text_translate_line(0, font.height());
// center alignment text
canvas.text(txt, &pp[1], 1, dd, 1);
canvas.text_translate_line(0, font.height());
// finish text block
canvas.text_end();
希望有所帮助