Stampare PDF (QPrintDialog)



  • Salve a tutti.
    Sto cercando di stampare un PDF però , nel momento in cui mi si dovrebbe aprire il dialog per la scelta della stampante, ricevo il seguente errore:

    QPrintDialog: Cannot be used on non-native printers
    

    Il codice che sto utilizzando è il seguente:

      QTextDocument *document = new QTextDocument();
      document->setHtml(strStream);
    
      QPrinter printer(QPrinter::HighResolution);
      printer.setPageSize(QPrinter::A4);
      printer.setOutputFormat(QPrinter::PdfFormat);
      printer.setOutputFileName("Report.pdf");
      document->print(&printer);
    
      QPrintDialog *dialog = new QPrintDialog(&printer, NULL);
      if (dialog->exec() == QDialog::Accepted) {
          document->print(&printer);
      }
      delete document;
    

    Premetto che il file viene creato correttamente.

    Il dialog per la selezione della stampante mi viene fuori solo se modifico questi parametri

    printer.setOutputFormat(QPrinter::NativeFormat);
     printer.setOutputFileName("Report");
    

    A quel punto però mi genera un file che è tutto che un PDF.

    Qualcuno sa darmi qualche dritta? Grazie per il tempo che mi dedicherete :)

    PS: Ovviamente ho incluso
    #include <QPrinter>
    #include <QPainter>
    #include <QProgressDialog>

    E

    printsupport nel .PRO file



  • Non mi e' chiaro lo scopo finale.

    Vuoi che il tuo documento venga salvato in pdf o vuoi prendere un pdf esistente e stamparlo su una stampante fisica?

    Nel frattempo: https://wiki.qt.io/Handling_PDF



  • @VRonin
    Vorrei che il documen to che sto creando venga salvato su HD (e questo lo sta facendo correttamente), a seguito vorrei che lo stesso file possa essere stampato fisicamente.



  • Ok quindi la prima stampante stampa su pdf ora te ne serve un'altra che stampi fisicamente:

    QTextDocument document;
      document.setHtml(strStream);
    
      QPrinter pdfPrinter(QPrinter::HighResolution);
      pdfPrinter.setPageSize(QPrinter::A4);
      pdfPrinter.setOutputFormat(QPrinter::PdfFormat);
      pdfPrinter.setOutputFileName("Report.pdf");
      document.print(&printer);
    
    QPrinter printer;
      QPrintDialog dialog (&printer);
      if (dialog.exec() == QDialog::Accepted) {
          document.print(&printer);
      }
    


  • @VRonin
    Grazie, utilizzando una nuova stampante ha funzionato tutto! :)


Log in to reply