cmd.exe打开PDF并打印它

cmd.exe to open pdf and print it

本文关键字:打印 PDF exe 打开 cmd      更新时间:2023-10-16

我正在使用qt4.8,我想要的是打开PDF并通过cmd.exe自动打印该PDF,而无需单击PDF阅读器中的PRINT按钮:

我有两个不同的代码,这些代码执行了两个不同的任务:Opne PDF

QString scmd= "cmd.exe";
list.push_back("/C");
list.push_back("test.pdf");
Process.start(scmd, list);
Sleep(2000);

打印pdf而不打开它

QString scmd2 = "C:/Program Files (x86)/Adobe/Reader 11.0/Reader/AcroRd32.exe.exe"
list2.push_back("/t");
list2.push_back("test.pdf");
Process.start(scmd2, list2);
Sleep(2000);

所以我想合并这个命令,我不知道该怎么做?请给我建议

您可以从Windows注册表的HKEY_CLASSES_ROOT获取所有信息。

这是一个示例,如何获取打印软件的默认路径以及如何运行它。我在QT 5.7

上测试了它
#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;
}