【发布时间】:2017-02-07 06:58:50
【问题描述】:
我想从特定路径打开和打印 PDF 文件,我之前的代码可以完美打开并直接将打印命令发送到打印机。 现在我想要的是有多台打印机,我必须选择一台,然后我想发送打印命令,我不想使用 QPrintDialog,我的打印机名称存储在 TextBox 中并检索该名称并通过打印我在文本框中设置的那台打印机:
我之前提到的代码如下:
#include <QSettings>
#include <QProcess>
#include <QDebug>
int main(int argc, char *argv[])
{
const QString classesRoot = "HKEY_CLASSES_ROOT";
// get ID of .pdf extension
QSettings pdfSettings(classesRoot + "\\.pdf", QSettings::NativeFormat);
QString pdfId = pdfSettings.value("Default").toString();
// get path to default program that associated with PDF files
QString printPath = QSettings(classesRoot + "\\" + pdfId + "\\shell\\print\\command", QSettings::NativeFormat).value("Default").toString();
QString openPath = QSettings(classesRoot + "\\" + pdfId + "\\shell\\open\\command", QSettings::NativeFormat).value("Default").toString();
qDebug() << "print path" << printPath;
qDebug() << "open path" << openPath;
// open .pdf file
QProcess::startDetached(openPath.arg("full path to pdf file.pdf") );
// print .pdf file
QProcess printProcess;
printProcess.start(printPath.arg("full path to pdf file.pdf") );
printProcess.waitForFinished(-1);
return 0;
}
【问题讨论】:
-
您可以使用Ghostscript打印pdf文件:stackoverflow.com/questions/2599925/…