Я не понял вашего вопроса, но теперь я понял.Вы хотите напечатать файл PDF с использованием Qt, вы не хотите печатать в PDF, верно?
Qt не поддерживает загрузку и отображение PDF.Для поддержки PDF в Qt вам понадобится внешняя библиотека poppler.Отметьте эту статью .
Poppler позволяет вам рендерить файлы PDF в QImage, и вы можете легко распечатать QImage следующим образом .
Вот как это сделатьВы печатаете текст в файл PDF.
Я попытался отредактировать ваш код, чтобы я мог немного его протестировать, и он работает для меня, вы можете проверить?Возможно, попытайтесь проверить, возвращает ли QPrinter::isValid()
true
в вашей среде.
#include <QtGui>
#include <QtCore>
int main(int argc, char **argv) {
QApplication app(argc, argv);
QTextEdit parent;
parent.setText("We are the world!");
parent.show();
QString filename = QFileDialog::getOpenFileName(&parent,"Open File",QString(),"Pdf File(*.pdf)");
qDebug()<<"Print file name is "<<filename;
if(!filename.isEmpty()) {
if(QFileInfo(filename).suffix().isEmpty()) {
filename.append(".pdf");
}
QPrinter printer(QPrinter::HighResolution);
printer.setOutputFormat(QPrinter::PdfFormat);
printer.setOutputFileName(filename);
QPrintDialog*dlg = new QPrintDialog(&printer,&parent);
dlg->setWindowTitle(QObject::tr("Print Document"));
if(dlg->exec() == QDialog::Accepted) {
parent.print(&printer);
}
delete dlg;
}
return app.exec();
}