Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <QApplication>
- #include <QCommandLineParser>
- #include <QFile>
- #include <QTextStream>
- #include <QWebEnginePage>
- #include <functional>
- using namespace std;
- using namespace std::placeholders;
- class Html2PdfConverter : public QObject
- {
- Q_OBJECT
- public:
- explicit Html2PdfConverter(QString inputPath, QString outputPath);
- int run();
- private slots:
- void loadFinished(bool ok);
- void pdfPrintingFinished(const QString &filePath, bool success);
- private:
- QString m_inputPath;
- QString m_outputPath;
- QScopedPointer<QWebEnginePage> m_page;
- };
- Html2PdfConverter::Html2PdfConverter(QString inputPath, QString outputPath)
- : m_inputPath(move(inputPath))
- , m_outputPath(move(outputPath))
- , m_page(new QWebEnginePage)
- {
- connect(m_page.data(), &QWebEnginePage::loadFinished,
- this, &Html2PdfConverter::loadFinished);
- connect(m_page.data(), &QWebEnginePage::pdfPrintingFinished,
- this, &Html2PdfConverter::pdfPrintingFinished);
- }
- int Html2PdfConverter::run()
- {
- m_page->load(QUrl::fromUserInput(m_inputPath));
- return QApplication::exec();
- }
- void Html2PdfConverter::loadFinished(bool ok)
- {
- if (!ok) {
- QTextStream(stderr)
- << tr("failed to load URL '%1'").arg(m_inputPath) << "\n";
- QCoreApplication::exit(1);
- return;
- }
- m_page->printToPdf(m_outputPath);
- }
- void Html2PdfConverter::pdfPrintingFinished(const QString &filePath, bool success)
- {
- if (!success) {
- QTextStream(stderr)
- << tr("failed to print to output file '%1'").arg(filePath) << "\n";
- QCoreApplication::exit(1);
- } else {
- QCoreApplication::quit();
- }
- }
- int main(int argc, char *argv[])
- {
- QApplication app(argc, argv);
- QCoreApplication::setApplicationName("html2pdf");
- QCoreApplication::setApplicationVersion(QT_VERSION_STR);
- QCommandLineParser parser;
- parser.setApplicationDescription(
- QCoreApplication::translate("main", "Converts the web page INPUT into the PDF file OUTPUT."));
- parser.addHelpOption();
- parser.addVersionOption();
- parser.addPositionalArgument(
- QCoreApplication::translate("main", "INPUT"),
- QCoreApplication::translate("main", "Input URL for PDF conversion."));
- parser.addPositionalArgument(
- QCoreApplication::translate("main", "OUTPUT"),
- QCoreApplication::translate("main", "Output file name for PDF conversion."));
- parser.process(QCoreApplication::arguments());
- const QStringList requiredArguments = parser.positionalArguments();
- if (requiredArguments.size() != 2)
- parser.showHelp(1);
- Html2PdfConverter converter(requiredArguments.at(0), requiredArguments.at(1));
- return converter.run();
- }
- #include "html2pdf.moc"
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement