Печать изображений в цикле - PullRequest
0 голосов
/ 05 марта 2020

Я пытался распечатать целую папку изображений в качестве первого этапа проекта и не смог заставить его работать. Изображения называются «batch_X.jpg» (но тип файла может измениться, если что-то работает лучше), и для тестирования я просто заставляю его печатать в pdf, чтобы не тратить тысячи кусочков бумаги. Я могу завершить l oop до go и сделать файлы с именем «testX» в выходной папке, однако вместо того, чтобы быть изображением, которое я хочу напечатать, они всегда просто отображаются в виде пустых белых страниц.

Вот код, который я выполнял, со строками, закомментированными повсюду

QApplication app(int argc, char** argv());
    for (int q = 1; q <= 11; q++)
    {
    //int q = 4;
   QString fileName=QStringLiteral("/Users/user/Desktop/imageTests⁩/output/batch_%1.jpg").arg(q);         
            // QPrinter printer;
            //QPrintDialog *dlg = new QPrintDialog(&printer,0);
            //if(dlg->exec() == QDialog::Accepted) {
            QPrinter printer(QPrinter::ScreenResolution);
            printer.setResolution(3000);
            //printer.setPageLayout(page_layout);
            printer.setCopyCount(1);
            printer.setDoubleSidedPrinting(false);
            printer.setDuplex(QPrinter::DuplexNone);
            printer.setColorMode(QPrinter::Color);
            printer.setPageSize(QPrinter::Letter);
            printer.setPaperSize(QPrinter::Letter);
            printer.setPaperSource(QPrinter::Auto);
            //printer.setCreator("Inkjet Plumber");
            printer.setOrientation(QPrinter::Portrait);
            printer.setPageMargins(0.0, 0.0, 0.0, 0.0, QPrinter::Inch);
            //printer.setPageLayout(page_layout);
            QString outputFileName =              QStringLiteral("/Users/user/Desktop/testing/test%1.pdf").arg(q);
            printer.setOutputFileName(outputFileName);
                    printer.setOutputFormat(QPrinter::PdfFormat);
                    QImage img(fileName);
                    QPainter painter(&printer);
                    painter.drawImage(QPoint(0,0),img);
                    painter.end();
                    //QMessageBox::information(this, tr("Title"), QString(fileName));

            }

1 Ответ

0 голосов
/ 06 марта 2020

Ваш код выглядит правильно. Это работает на моей стороне. Единственное, что я бы исправил, это разрешение:

 printer.setResolution(300);
...