Qt 批量打印图片

Qt 调用打印机批量打印图片,输出为pdf;
void  showPrintDialog(const QStringList &paths) {
    QPrinter printer;
    printer.setOutputFormat(QPrinter::PdfFormat);
    QPixmap img;

    QPrintDialog* printDialog = new QPrintDialog(&printer, this);
    printDialog->resize(400, 300);
    m_printDialogVisible = true;
    if (printDialog->exec() == QDialog::Accepted) {
        QPainter painter(&printer);
        QList<QString>::const_iterator i;
        for(i = paths.begin(); i!= paths.end(); ++i){
            if (!img.load(*i)) {
                qDebug() << "img load failed" << *i;
                continue;
            }
            if (img.width() > img.height())
                printer.setPageOrientation(QPageLayout::Landscape);
            else
                printer.setPageOrientation(QPageLayout::Portrait);
            QRect pageOriginRect = printer.pageRect();
            QSize pageRect = QSize(pageOriginRect.width() - 8,
                                   pageOriginRect.height() - 8);
            img = img.scaled(pageRect, Qt::KeepAspectRatio, Qt::SmoothTransformation);

            painter.drawPixmap(0, 0, img);
            if (i != paths.end() - 1)
                printer.newPage();
        }
        painter.end();
        qDebug() << "print succeed!";
        return;
    }


    QObject::connect(printDialog, &QPrintDialog::finished,  this, [=]{
        printDialog->deleteLater();
        m_printDialogVisible =  false;
    });

    qDebug() << "print failed!";
}

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值