我正在研究的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);
// ...