Hi !
В исходных кодах есть пример (qt-everywhere-opensource-src-4.8.4/examples/graphicsview/portedcanvas), в нем интересен только метод печати.
Поправил его так (добавил печать в pdf):
void Main::print()
{
//---------------add------------------
QPrinter printerP;
printerP.setOutputFormat(QPrinter::PdfFormat);
printerP.setOutputFileName("test.pdf");
printerP.setPaperSize(QSizeF(1, 1), QPrinter::Inch);
printerP.setPageMargins(0, 0, 0, 0, QPrinter::Inch);
QPainter pP(&printerP);
canvas.render(&pP);
pP.end();
//---------------add------------------
if ( !printer ) printer = new QPrinter;
QPrintDialog dialog(printer, this);
if(dialog.exec()) {
QPainter pp(printer);
printer->setPaperSize(QSizeF(1, 1), QPrinter::Inch);
printer->setPageMargins(0, 0, 0, 0, QPrinter::Inch);
canvas.render(&pp);
}
}
При этом test.pdf создается с желаемым размером, а если напечатать на реальный принтер (или в pdf средствами системы), то имею A4 - почему так ?
Также ms office word может распечатать (и на pdf) принтер с любыми размерами.
Т.о. что не хватает в приведенном коде для печати на желаемый размер бумаги ?