gpt4 book ai didi

c++ - cmd.exe 打开pdf并打印

转载 作者:行者123 更新时间:2023-11-28 05:21:55 25 4
gpt4 key购买 nike

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

我有两个不同的代码来完成两个不同的任务:打开 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;
}

关于c++ - cmd.exe 打开pdf并打印,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41329100/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com