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)
Qt 6.11 is out! See what's new in the release blog

Stampare PDF (QPrintDialog)

Scheduled Pinned Locked Moved Solved Italian
5 Posts 2 Posters 2.4k 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