c – 如何将QTextBrowser的多个实例打印成一个PDF文件?

我正在研究的QT应用程序附带了一个教程.每章都是一个独立的
HTML文件,每个文件可以跨多个页面.现在我想将它们打印成一个PDF文件(带页码).

我天真的做法就是这样,但这是错误的:

#include <QApplication>
#include <QPrinter>
#include <QTextBrowser>
#include <QUrl>

int main(int argc, char *argv[])
{
  QApplication app(argc, argv);

  QPrinter printer;
  printer.setOutputFormat(QPrinter::PdfFormat);
  printer.setOutputFileName("/tmp/test.pdf");

  QTextBrowser *tp = new QTextBrowser();

  tp->setSource(QUrl("qrc:///help/tutorial_item_1.html"));
  tp->print(&printer);

  tp->setSource(QUrl("qrc:///help/tutorial_item_2.html"));
  tp->print(&printer);

  tp->setSource(QUrl("qrc:///help/tutorial_item_3.html"));
  tp->print(&printer);

  // etc...
}

但是,这将在每次print()调用时重新启动打印机,从新的PDF文件开始,覆盖旧的PDF文件.

使用QT将所有HTML打印成一个PDF文件的简单解决方案是什么?

最佳答案 开发你的“天真的方法”,我可以通过将几个页面附加到父QTextEdit来打印连接的html文件.它可能也可以使用第二个QTextBrowser.

  // ...
  QTextBrowser *tp = new QTextBrowser();
  QTextEdit te;

  tp->setSource(QUrl("qrc:///help/tutorial_item_1.html"));
  te.append(tp->toHtml());

  tp->setSource(QUrl("qrc:///help/tutorial_item_2.html"));
  te.append(tp->toHtml());

  te.print(&printer);

  // ...
点赞