Scale's problem while printing
-
Hi,
I have a strange problem when trying to print to PDF : when I'm printing to a real printer, no problem, when I print to pdf printer using the QPrintDialog, no problem either...
But when I'm trying to print directly to PDF using :
@void pdfPrint()
{
QPrinter pdfprinter(QPrinter::ScreenResolution);
pdfprinter.setPageSize(QPrinter::A4);
pdfprinter.setPaperSize(QSizeF(595,842),QPrinter::Point);
pdfprinter.setOutputFormat(QPrinter::PdfFormat);
QString Filename= QFileDialog::getSaveFileName(0, "Export as PDF",QString(), "*.pdf");if (!Filename.isEmpty()) { if (QFileInfo(Filename).suffix().isEmpty()) Filename.append(".pdf"); } pdfprinter.setOutputFileName(Filename); MyWebView->print(&printer);
}@
it's printing fine... But it's scaling down to an A6 page size !!! So it only prints on a quarter of my page and I get a PDF with everything printed fine but scaled down to the upper left quarter of the page.
I would like my page to be an entire A4 page.
Any hint ??? I was thinking about some DPI problem, but wasn't able to figure out how to correct it. (Already tried to change printer's resolution and everything...)I also tried to find a workaround using QPainter, which works fine printing with the right scaling, but isn't able to print the entire page, since I have to scroll to see the bottom part...
@QPainter painter(&pdfprinter);
maVue->render(&painter, maVue->pos(), QWidget::rect());@ -
So I solved my problem using some ugly workaround, for those who have the same problem, here is my way out :
QPainter q(&pdfprinter); q.setRenderHint(QPainter::HighQualityAntialiasing, true); QWebView* tempp = new QWebView(this); tempp->setHtml(maVue->page()->mainFrame()->toHtml()); tempp->show(); q.scale(11,10.9); tempp->setGeometry(QRect(QPoint(0,0),QSize(9920, 28066))); tempp->page()->mainFrame()->render(&q,QRect(QPoint(0,0),QSize(9920, 28066))); delete tempp;
The problem now is that the quality is pretty bad... (Since I've got to magnify it 10 times to get it to the size of my page...)
And yes, I do need a temporary QWebView for it because I can't setGeometry on my main QWebView and because I want my whole page to be displayed, not only the part displayed by my main QWebView...
If anyone as a better solution, please, feel free to contribute.
I won't research it further but would be happy to get a better way to do it.