Использование CIMG и JAGPDF для печати сетки - PullRequest
0 голосов
/ 28 марта 2019

Мне нужно напечатать сетку, подобную той, что на фотографии, в документе PDF Sample grid Я использую CIMG для создания изображения в формате bmp, затем сохраняю его в формате jpg и вставляю в PDFиспользуя JagPDF

Код для графика выглядит следующим образом:

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, я поместил его в PDF с помощью jagPDF следующим образом:

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();

Мне нужно, чтобы сетка была на расстоянии 1 мм между линиями (5 мм - жирным шрифтом), когда я помещаю 3 пикселя в качестве разделения, когда я печатаю, это чуть больше 1 мм, а если я ставлю 2 пикселя, то это меньше 1 мм.

Помещение не целых чисел (например, int lineseparation = 2.9;) в качестве входных данных позволяет мне выделять жирные линии ближе к 5 мм, но маленькие линии неравномерны.Сохранение рисунка в формате BMP и его изменение мешают работе с сеткой.

Как заставить его печатать в правильном размере?

Примечание: BMP и JPG имеют одинаковый размер в пикселях.Я делаю преобразование без изменения размера (хотя я тоже это пытался).

...