C++ 如何在Qt中打印pdf文件

C++ 如何在Qt中打印pdf文件,c++,qt,pdf,printing,C++,Qt,Pdf,Printing,我曾尝试编写一些代码来使用Qt打印pdf文件,但不知何故它不起作用。 如果有人对解决这个问题有任何想法,请提供您的建议 void ChartViewer::onprintBtnClicked(){ String filename = QFileDialog::getOpenFileName(this,"Open File",QString(),"Pdf File(*.pdf)"); qDebug()<<"Print file name is "<<fi

我曾尝试编写一些代码来使用Qt打印pdf文件,但不知何故它不起作用。 如果有人对解决这个问题有任何想法,请提供您的建议

void ChartViewer::onprintBtnClicked(){ 
    String filename = QFileDialog::getOpenFileName(this,"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,this); 

        if(textedit->textCursor().hasSelection()) 
            dlg->addEnabledOption(QAbstractPrintDialog::PrintSelection); 

        dlg->setWindowTitle(tr("Print Document")); 

        if(dlg->exec() == QDialog::Accepted) { 
            textedit->print(&printer); 
        } 

        delete dlg; 
    } 
}
void ChartViewer::onprintbtclicked(){
字符串filename=QFileDialog::getOpenFileName(这是“打开的文件”,QString(),“Pdf文件(*.Pdf)”;
qDebug()exec()==QDialog::Accepted){
文本编辑->打印(&打印机);
} 
删除dlg;
} 
}

我不明白你的问题,但现在我明白了。你想用Qt打印PDF文件,你不想打印成PDF,对吗

Qt不支持加载和显示PDF。 对于Qt中的PDF支持,您需要外部库poppler。检查

Poppler允许您将PDF文件渲染成QImage,并且可以轻松打印QImage

下面是如何将文本打印到PDF文件中

我试着编辑你的代码,这样我可以测试它一点,它为我工作,你能检查吗? 可以尝试检查
QPrinter::isValid()
是否在您的环境中返回
true

#包括
#包括
int main(int argc,字符**argv){
QApplication应用程序(argc、argv);
QTextEdit父代;
setText(“我们就是世界!”);
parent.show();
QString filename=QFileDialog::getOpenFileName(&parent,“打开文件”,QString(),“Pdf文件(*.Pdf)”);

qDebug()发布不起作用的代码,否则我们无法帮助您。请编辑您的问题,将代码包含在其中。不要忘记使用
{}设置格式
编辑器中的按钮。@user671112我已将您的代码添加到您的问题中。下次自己添加。不要添加到评论中。@Bart:-当然可以,Bart…谢谢您的帮助。@user671112耐心!!虽然StackOverflow通常会以惊人的速度给出答案,但不要在发布后一小时内用“请帮助”来评论。此外,您还可以编辑您的帖子和删除您的评论。因此,您可以使用源代码删除您的长篇评论,以使此问题更清晰…亲爱的Thomas,非常感谢您的回答。我将对此进行检查并返回2 u。亲爱的Thomas,请帮助我在windows系统的打印机上打印pdf文件m environment?@user671112上面的代码在Windows环境中适用吗?您是否检查QPrinter::isValid()是否返回true?Qt是跨平台的,因此应该可以工作。亲爱的Lukas,它不适用于我,因为我收到警告“QPrintDialog:无法在非本机打印机上使用”而且无法打印pdf文件。我想我们不能使用QTextedit在QT中打印pdf文件(因为我从谷歌得到了信息)。如果可能的话,请您指导我如何在windows环境下通过打印机打印pdf文件。我是初学者,对此我没有任何更多的想法,但我正在尽最大努力。谢谢您的回复。您好,@user671112 Hm.。关于对话框,您是对的,我在Linux上测试过,我现在没有windows机器。但如果需要,您可以不使用打印对话框进行打印。只需将QPrintDialog相关行注释掉,然后仅调用
parent.print(&printer);