簡體   English   中英

使用Qt打印PDF文件

[英]Print a PDF file using Qt

我想從特定路徑打開並打印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;
}

或者,您可以在打印過程中將打印機更改為默認打印機。

  1. 將默認打印機更改為您的打印機
  2. 打印pdf
  3. 恢復舊的默認打印機

如何在Windows中檢索和設置默認打印機: http : //support.microsoft.com/default.aspx?scid=kb;EN-US;246772

由於QT沒有用於系統管理的功能。 對於QT

  1. 將默認打印機更改為您的打印機

    如何獲得默認打印機名稱?

    QPrinterInfo::defaultPrinterName()

    來自: http : //doc.qt.io/qt-5/qprinterinfo.html#defaultPrinterName

    如何設置默認打印機?

    通過執行RUNDLL32 PRINTUI.DLL,PrintUIEntry /y /n "your printer name"

    來自: http : //windowsitpro.com/windows/jsi-tip-8415-how-can-i-set-users-default-printer-batch-script

  2. 隨心所欲打印pdf

  3. 恢復舊的默認打印機

    通過執行, RUNDLL32 PRINTUI.DLL,PrintUIEntry /y /n "old default printer name"

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM