Exemple #1
0
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();
    }
  }
}
Exemple #2
0
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();
}
Exemple #5
0
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;
}
Exemple #6
0
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;
}
Exemple #7
0
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();
  }

}
Exemple #8
0
void TablePrintDialog::on_pageSpinBox_valueChanged(int value)
{
  paintPage(value);
  pageScene.addRect(0,0,pageScene.width(),pageScene.height(),QPen(Qt::black, 2.0));
}
Exemple #9
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();
    }
}