gpt4 book ai didi

c++ - 从 Qt 打印 PDF 文件

转载 作者:太空狗 更新时间:2023-10-29 22:57:31 26 4
gpt4 key购买 nike

我发现以下代码片段符合我的预期,但问题是,当打开 PDF 文件并且用户使用 PDF 阅读器中的其他打印机打印 PDF 文件而不关闭 PDF 阅读器并再次打印时来 self 的应用程序的 PDF 文件,它将使用 PDF 阅读器上配置的打印机打印,而不是我设置为打印 PDF 文件的打印机。

例子:

  1. 在应用程序中,我将 Printer_1 设置为打印 PDF 文件。
  2. 打印文件(它将在 PDF 阅读器中打开文件并使用 Printer_1 打印机打印)。
  3. 在 PDF 阅读器上,我转到 CTRL + P 进行打印,然后选择 Printer_2 并点击打印。
  4. 我没有关闭 PDF 阅读器,而是再次在应用程序(打印机被选为 Printer_1)上打印了 PDF 文件。现在打印命令被发送到 Printer_2 而不是 Printer_1。

请问下面的代码片段有什么问题?

#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;
}

最佳答案

代替线

QString printPath = QSettings(classesRoot + "\\" + pdfId + "\\shell\\print\\command", QSettings::NativeFormat).value("Default").toString();

按预期使用它和所有工作:

QString printPath = QSettings(classesRoot + "\\" + pdfId + "\\shell\\printto\\command", QSettings::NativeFormat).value("Default").toString();

并传递“文件名”、“打印机名称”、“打印机驱动程序”和“端口”[驱动程序名称和端口不是必需的]

关于c++ - 从 Qt 打印 PDF 文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43775703/

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