使用CIMG和JAGPDF打印网格

时间:2019-03-28 20:33:01

标签: c++ jpeg bmp cimg

我需要在PDF文档上打印像照片中的网格一样的网格Sample grid  我正在使用CIMG在bmp中创建图像,然后将其另存为jpg并使用JagPDF粘贴到PDF中

该图的代码如下:

int lineseparation=3;
int lineseparationbold=lineseparation*5;
CImg<unsigned char> graph1;
graph1.assign(50*lineseparationbold+1, 28*lineseparationbold+1, 1, 3, 255);
static const unsigned char black[] = { 0, 0, 0 }, white[] = { 255, 255, 255 };
static const unsigned char gray2[] = { 110, 110, 110 }, ngray[] = { 35, 35, 35 }, gray[] = { 220, 220, 220 };
static const unsigned char red[] = { 255, 200, 200 }, bred[] = { 255, 100, 100 };

graph1.draw_grid(lineseparation, lineseparation, 0, 0, false, true, red, 10.0f, 0xFFFFFFFF, 0xFFFFFFFF);
graph1.draw_grid(lineseparationbold, lineseparationbold, 0, 0, false, true, bred, 10.0f, 0xFFFFFFFF, 0xFFFFFFFF);
graph.save("plot.bmp");

然后将其另存为JPG之后,我通过jagPDF将其放入PDF中:

pdf::Document doc(pdf::create_file("report.pdf"));
doc.page_start(pagewidth, pageheight);
pdf::Image imag2 = doc.image_load_file("plot1.jpg");
doc.page().canvas().image(imag2, 10, 50);
doc.page_end();
doc.finalize();

我需要网格在行与行之间保持1mm的间距(粗体为5mm),当我在打印时将3个像素作为间距时,它应大于1mm,而如果我将2个像素设为1mm以下,则间距应小于1mm。

输入非整数(例如int lineseparation = 2.9;)作为输入,可以使我获得接近5mm的粗线,但细线不均匀。将图形另存为BMP并调整其大小会干扰网格。

如何使它以正确的尺寸打印?

注意:BMP和JPG的像素大小相同。我进行了转换而没有调整大小(尽管我也尝试过)。

0 个答案:

没有答案