void TablePrintDialog::exportPdf(const QString &filename) { // file save dialog QString dialogcaption = "Export PDF"; QString exportname = QFileDialog::getSaveFileName(this, dialogcaption, filename, "*.pdf"); if (exportname.isEmpty()) return; if (QFileInfo(exportname).suffix().isEmpty()) exportname.append(".pdf"); // setup printer printer->setOutputFormat(QPrinter::PdfFormat); printer->setOutputFileName(exportname); // print pdf QPainter painter(printer); for (int pagenum=1; pagenum<=pages; pagenum++) { paintPage(pagenum); pageScene.render(&painter); if (pagenum < pages) { printer->newPage(); } } }
void NCPreviewPage::paintEvent( QPaintEvent *e ) { QPainter painter; painter.begin( this ); // paint in myWidget // border painter.setPen(Qt::black); painter.drawRect( 0,0, width()-1, height()-1 ); painter.setClipRect(e->rect()); if ( antialiased ) painter.setRenderHint(QPainter::Antialiasing); painter.scale( (double)(zoomLevel/100.0), zoomLevel/100.0); paintPage( painter ); //paintTest( painter ); painter.end(); }
void readerView::paintEvent(QPaintEvent *) { QPainter p(this); p.translate(interPageSpacing, interPageSpacing); //const int pages = doc->pageCount(); //for (int i = 0; i < pages; ++i) { p.save(); p.scale(scale, scale); paintPage(&p, page); p.restore(); p.translate(0, interPageSpacing + viewRect.height() * scale); //} }
void AbstractTemplateModel::render(QPainter *painter) { Q_ASSERT(painter != nullptr); device = painter->device(); QMargins paperMargins; QMargins pageMargins; paperMargins += mm(5); pageMargins += mm(5); QRect rect = QRect(0, 0, width(), height()).marginsRemoved(paperMargins); const QPoint center = rect.center(); cutHerePen.setWidthF(mm(penWidthMM)); painter->save(); painter->setRenderHint(QPainter::Antialiasing); painter->setPen(cutHerePen); painter->setBrush(Qt::NoBrush); painter->translate(cutPenWidth() / 2, cutPenWidth() / 2); // Horizontal and vertical center line painter->drawLine(center.x(), rect.y(), center.x(), rect.y() + rect.height() - cutPenWidth()); painter->drawLine(rect.x(), center.y(), rect.x() + rect.width() - cutPenWidth(), center.y()); // Printable area painter->drawRect(rect.x(), rect.y(), rect.width() - cutPenWidth(), rect.height() - cutPenWidth()); QRect page = QRect(rect.topLeft(), center); for (int y = rect.y(); y < rect.height() - 1; y += page.height()) { for (int x = rect.x(); x < rect.width() - 1; x += page.width()) { page.moveTo(x, y); painter->save(); paintPage(painter, page.marginsRemoved(pageMargins)); painter->restore(); } } painter->restore(); }
QPixmap KoPAPage::generateThumbnail( const QSize& size ) { // don't paint null pixmap if ( size.isEmpty() ) // either width or height is <= 0 return QPixmap(); KoZoomHandler zoomHandler; const KoPageLayout & layout = pageLayout(); KoPAUtil::setZoom( layout, size, zoomHandler ); QRect pageRect( KoPAUtil::pageRect( layout, size, zoomHandler ) ); QPixmap pixmap( size.width(), size.height() ); pixmap.fill( Qt::white ); QPainter painter( &pixmap ); painter.setClipRect( pageRect ); painter.setRenderHint( QPainter::Antialiasing ); painter.translate( pageRect.topLeft() ); paintPage( painter, zoomHandler ); return pixmap; }
bool KDReports::ReportPrivate::doPrint( QPrinter* printer, QWidget* parent ) { // caller has to ensure that we have been layouted for this printer already const int pageCount = m_layout->numberOfPages(); QProgressDialog* dialog = 0; if ( QThread::currentThread() == qApp->thread() ) { dialog = new QProgressDialog( QObject::tr( "Printing" ), QObject::tr( "Cancel" ), 0, pageCount, parent ); dialog->setWindowModality( Qt::ApplicationModal ); } QPainter painter( printer ); int fromPage = 0; int toPage = pageCount; if ( printer->printRange() == QPrinter::PageRange ) { fromPage = printer->fromPage() - 1; // it starts at 1 toPage = printer->toPage(); // -1 because it starts at 1, and +1 because of '<' if ( toPage == 0 ) toPage = pageCount; } bool firstPage = true; for ( int pageIndex = fromPage; pageIndex < toPage; ++pageIndex ) { if ( dialog ) { dialog->setValue( pageIndex ); if ( dialog->wasCanceled() ) break; } if ( !firstPage ) printer->newPage(); paintPage( pageIndex, painter ); firstPage = false; } delete dialog; return true; }
void TablePrintDialog::print() { //printDialog printer->setFromTo(1,pages); printer->setOutputFormat(QPrinter::NativeFormat); printer->setOutputFileName(""); QPrintDialog dialog(printer, this); dialog.setWindowTitle("Print Document"); if (dialog.exec() == QDialog::Rejected) { return; } setupPage(); // get num copies int doccopies; int pagecopies; if (printer->collateCopies()) { doccopies = 1; pagecopies = printer->numCopies(); } else { doccopies = printer->numCopies(); pagecopies = 1; } // get page range int firstpage = printer->fromPage(); int lastpage = printer->toPage(); if (firstpage == 0 && lastpage == 0) // all pages { firstpage = 1; lastpage =pages; } // print order bool ascending = true; if (printer->pageOrder() == QPrinter::LastPageFirst) { int tmp = firstpage; firstpage = lastpage; lastpage = tmp; ascending = false; } // loop through and print pages QPainter painter(printer); for (int dc=0; dc<doccopies; dc++) { int pagenum = firstpage; while (true) { for (int pc=0; pc<pagecopies; pc++) { if (printer->printerState() == QPrinter::Aborted || printer->printerState() == QPrinter::Error) { break; } // print page paintPage(pagenum); pageScene.render(&painter); if (pc < pagecopies-1) printer->newPage(); } if (pagenum == lastpage) break; if (ascending) { pagenum++; } else { pagenum--; } printer->newPage(); } if (dc < doccopies-1) printer->newPage(); } }
void TablePrintDialog::on_pageSpinBox_valueChanged(int value) { paintPage(value); pageScene.addRect(0,0,pageScene.width(),pageScene.height(),QPen(Qt::black, 2.0)); }
void TextPrinter::print(QPrinter *printer) { if (!printer || !tempdoc_) return; tempdoc_->setUseDesignMetrics(true); tempdoc_->documentLayout()->setPaintDevice(printer); tempdoc_->setPageSize(contentRect(printer).size()); // dump existing margin (if any) QTextFrameFormat fmt = tempdoc_->rootFrame()->frameFormat(); fmt.setMargin(0); tempdoc_->rootFrame()->setFrameFormat(fmt); // to iterate through pages we have to worry about // copies, collation, page range, and print order // get num copies int doccopies; int pagecopies; if (printer->collateCopies()) { doccopies = 1; pagecopies = printer->numCopies(); } else { doccopies = printer->numCopies(); pagecopies = 1; } // get page range int firstpage = printer->fromPage(); int lastpage = printer->toPage(); if (firstpage == 0 && lastpage == 0) { // all pages firstpage = 1; lastpage = tempdoc_->pageCount(); } // print order bool ascending = true; if (printer->pageOrder() == QPrinter::LastPageFirst) { int tmp = firstpage; firstpage = lastpage; lastpage = tmp; ascending = false; } // loop through and print pages QPainter painter(printer); painter.setRenderHints(QPainter::Antialiasing | QPainter::TextAntialiasing | QPainter::SmoothPixmapTransform, true); for (int dc=0; dc<doccopies; dc++) { int pagenum = firstpage; while (true) { for (int pc=0; pc<pagecopies; pc++) { if (printer->printerState() == QPrinter::Aborted || printer->printerState() == QPrinter::Error) { return; } // print page paintPage(&painter, tempdoc_, pagenum); if (pc < pagecopies-1) printer->newPage(); } if (pagenum == lastpage) break; if (ascending) pagenum++; else pagenum--; printer->newPage(); } if (dc < doccopies-1) printer->newPage(); } }