Skip to content
  • Categories
  • Recent
  • Tags
  • Popular
  • Users
  • Groups
  • Search
  • Get Qt Extensions
  • Unsolved
Collapse
Brand Logo
  1. Home
  2. International
  3. Italian
  4. Stampare PDF (QPrintDialog)
Forum Update on Monday, May 27th 2025

Stampare PDF (QPrintDialog)

Scheduled Pinned Locked Moved Solved Italian
5 Posts 2 Posters 2.0k Views
  • Oldest to Newest
  • Newest to Oldest
  • Most Votes
Reply
  • Reply as topic
Log in to reply
This topic has been deleted. Only users with topic management privileges can see it.
  • B Offline
    B Offline
    Bruschetta
    wrote on last edited by Bruschetta
    #1

    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

    1 Reply Last reply
    0
    • VRoninV Offline
      VRoninV Offline
      VRonin
      wrote on last edited by
      #2

      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

      "La mort n'est rien, mais vivre vaincu et sans gloire, c'est mourir tous les jours"
      ~Napoleon Bonaparte

      On a crusade to banish setIndexWidget() from the holy land of Qt

      B 1 Reply Last reply
      1
      • VRoninV VRonin

        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

        B Offline
        B Offline
        Bruschetta
        wrote on last edited by
        #3

        @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.

        1 Reply Last reply
        0
        • VRoninV Offline
          VRoninV Offline
          VRonin
          wrote on last edited by
          #4

          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);
            }
          

          "La mort n'est rien, mais vivre vaincu et sans gloire, c'est mourir tous les jours"
          ~Napoleon Bonaparte

          On a crusade to banish setIndexWidget() from the holy land of Qt

          B 1 Reply Last reply
          1
          • VRoninV VRonin

            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);
              }
            
            B Offline
            B Offline
            Bruschetta
            wrote on last edited by
            #5

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

            1 Reply Last reply
            0

            • Login

            • Login or register to search.
            • First post
              Last post
            0
            • Categories
            • Recent
            • Tags
            • Popular
            • Users
            • Groups
            • Search
            • Get Qt Extensions
            • Unsolved