Qt wiki will be updated on October 12th 2023 starting at 11:30 AM (EEST) and the maintenance will last around 2-3 hours. During the maintenance the site will be unavailable.

Exporting a document to PDF: Difference between revisions

From Qt Wiki
Jump to navigation Jump to search
No edit summary
(fix code rendering)
 
(5 intermediate revisions by 4 users not shown)
Line 1: Line 1:
Found it very easy to convert a {{DocLink|QTextDocument}} to PDF in Qt, and useful in scenarios like creating reports etc.
{{Cleanup|reason=No print support on mobile platform (iOS), different issues on different targets}}


For example, consider the following snippet:
{{LangSwitch}}


<code lang="cpp">
For a more advanced example that can handle HTML5, see [https://doc.qt.io/qt-6/qtwebengine-webenginewidgets-html2pdf-example.html Qt WebEngine Widgets html2PDF example]
QString fileName = QFileDialog::getSaveFileName(this, tr("Save File"), "untitled", tr("PDF Document (....pdf)"));
 
QPrinter printer;
Here is a minimal example of how to print a {{DocLink|QTextDocument}} to PDF:
printer.setOutputFormat(QPrinter::PdfFormat);
 
printer.setOutputFileName(fileName);
<syntaxhighlight lang="cpp">
QTextDocument doc;
#include <QtWidgets>
doc->print(&printer);
#ifndef QT_NO_PRINTER
</code>
#include <QPrinter>
#endif
 
int main(int argc, char *argv[])
{
    QApplication app(argc, argv);
    QString fileName = QFileDialog::getSaveFileName((QWidget* )0, "Export PDF", QString(), "*.pdf");
    if (QFileInfo(fileName).suffix().isEmpty()) { fileName.append(".pdf"); }
 
    QPrinter printer(QPrinter::PrinterResolution);
    printer.setOutputFormat(QPrinter::PdfFormat);
    printer.setPaperSize(QPrinter::A4);
    printer.setOutputFileName(fileName);
 
    QTextDocument doc;
    doc.setHtml("<h1>Hello, World!</h1>\n<p>Lorem ipsum dolor sit amet, consectitur adipisci elit.</p>");
    doc.setPageSize(printer.pageRect().size()); // This is necessary if you want to hide the page number
    doc.print(&printer);
}
</syntaxhighlight>


[[Category:snippets]]
[[Category:snippets]]

Latest revision as of 23:25, 22 November 2022

This article may require cleanup to meet the Qt Wiki's quality standards. Reason: No print support on mobile platform (iOS), different issues on different targets
Please improve this article if you can. Remove the {{cleanup}} tag and add this page to Updated pages list after it's clean.

En Ar Bg De El Es Fa Fi Fr Hi Hu It Ja Kn Ko Ms Nl Pl Pt Ru Sq Th Tr Uk Zh

For a more advanced example that can handle HTML5, see Qt WebEngine Widgets html2PDF example

Here is a minimal example of how to print a QTextDocument to PDF:

#include <QtWidgets>
#ifndef QT_NO_PRINTER
#include <QPrinter>
#endif

int main(int argc, char *argv[])
{
    QApplication app(argc, argv);
 
    QString fileName = QFileDialog::getSaveFileName((QWidget* )0, "Export PDF", QString(), "*.pdf");
    if (QFileInfo(fileName).suffix().isEmpty()) { fileName.append(".pdf"); }

    QPrinter printer(QPrinter::PrinterResolution);
    printer.setOutputFormat(QPrinter::PdfFormat);
    printer.setPaperSize(QPrinter::A4);
    printer.setOutputFileName(fileName);

    QTextDocument doc;
    doc.setHtml("<h1>Hello, World!</h1>\n<p>Lorem ipsum dolor sit amet, consectitur adipisci elit.</p>");
    doc.setPageSize(printer.pageRect().size()); // This is necessary if you want to hide the page number
    doc.print(&printer);
}