Я хочу открыть и распечатать PDF-файл с определенного пути. Мой предыдущий код отлично работает и напрямую отправляет команду печати на принтер. Теперь у меня есть несколько принтеров, и я должен выбрать один, и после этого я хочу отправить команду print, я не хочу, чтобы я хотел использовать QPrintDialog, имя моего принтера хранится в текстовом поле и извлекает это имя и печатает его через тот принтер, который я поставил в текстовое поле:Печать файла в формате PDF с использованием Qt
мой предыдущий код упоминается ниже:
#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;
}
Вы можете использовать ** Ghostscript ** для печати pdf-файла: http://stackoverflow.com/questions/2599925/how-to-print-pdf-on-default-network-printer-using-ghostscript-gswin32c-exe-she – Yoonian