2017-02-07 8 views
0

Ich möchte öffnen und drucken Sie eine PDF-Datei von bestimmten Pfad, Meine vorherigen Code arbeiten perfekt geöffnet und senden Sie direkt Druckbefehl zum Drucker. Nun, was ich will, ist mehrere Drucker sind da und ich muss eine auswählen, und danach möchte ich Druckbefehl senden, möchte ich nicht verwenden QPrintDialog, Mein Druckername sind in einer TextBox gespeichert und diesen Namen abrufen und drucken durch den Drucker, die ich in Textbox gesetzt:Drucken Sie eine PDF-Datei mit Qt

meine vorherigen Code Erwähnung unter:

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

Sie können ** Ghostscript ** verwenden, um eine PDF-Datei zu drucken: http://stackoverflow.com/questions/2599925/how-to-print-pdf-on-default-network-printer- using-ghostscript-gswin32c-exe-she – Yoonian

Antwort

0

Oder Sie können während des Druckens des Druckers als Standarddrucker ändern.

  1. ändern Standarddrucker an Ihren Drucker
  2. pdf print
  3. alten Drucker
  4. Standard wiederherstellen

Wie abzurufen und den Standarddrucker in Windows festgelegt: http://support.microsoft.com/default.aspx?scid=kb;EN-US;246772

Da QT hat keine Funktionen für die Systemverwaltung Für QT,

  1. ändern Standarddrucker an Ihren Drucker

    Wie Standarddruckernamen bekommen?

    QPrinterInfo::defaultPrinterName()

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

    Wie Standarddrucker einstellen?

    von Executing, RUNDLL32 PRINTUI.DLL,PrintUIEntry /y /n "your printer name"

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

  2. ausdrucken pdf wie Sie wissen

  3. alten Druckerstandard wiederherstellen

    Durch Ausführung, RUNDLL32 PRINTUI.DLL,PrintUIEntry /y /n "old default printer name"

+0

Wie kann ich das in QT tun? – User041188

+0

Sicher, Sie können es implementieren, da Sie Windows verwenden. – Yoonian

+0

Nur hinzugefügt, wie es in QT zu tun – Yoonian