J'ai trouvé l'extrait de code suivant qui fonctionne comme mes attentes, mais le problème est que, lorsqu'un fichier PDF est ouvert et l'utilisateur imprime le fichier PDF avec une autre imprimante du lecteur PDF et non fermer le lecteur PDF et encore imprimer le fichier PDF à partir de mon application, il imprimera avec l'imprimante qui est configurée sur le lecteur PDF pas l'imprimante que j'ai définie comme pour imprimer le fichier PDF.Impression d'un fichier PDF à partir de Qt
Exemple:
- Sur demande, je mis Printer_1 à imprimer le fichier PDF.
- Imprimez le fichier (il ouvrira le fichier dans le lecteur de PDF et imprime avec l'imprimante Printer_1).
- Sur le lecteur PDF, je vais au
CTRL + P
pour imprimer et là, je sélectionne Imprimante_2 et cliquez sur imprimer. - Je ne ferme pas le lecteur PDF et de nouveau sur l'application (imprimante est sélectionnée pour Printer_1), j'imprime le fichier PDF. La commande d'impression est maintenant envoyée à Printer_2 au lieu de Printer_1.
S'il vous plaît quel est le problème dans l'extrait de code suivant?
#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;
}