通过单线程Qt进行多线程Html到Pdf的转换

时间:2009-07-06 14:47:40

标签: html qt pdf

我正在使用Qt webkit Jambi API将HTML转换为PDF。

我的目标是为上面的转换创建一个jar,以便它可以在多线程环境中使用,但由于QWebPage和QWebframe(QT webkit)是GUI类,因此无法从子线程初始化jar类。

所以我被困住了,因为我不知道如何解决这个问题。

我也是QT的新手,任何人都可以提供有关QT应用程序生命周期,事件循环和相关内容的良好参考。

提前感谢。

与Ashish

5 个答案:

答案 0 :(得分:2)

嗯,实际上,我只是使用Firefox来执行“打印到文件”并选择PDF作为文件类型。但这是手动工作 - 虽然我想你可以编写Firefox脚本。

我认为在Linux环境中 - 我假设Linux / Unix因为你提到了Qt - 你可能会将几个 n x命令行应用程序串起来。可能会有一些有用的东西。如果没有,我很确定我已经看到了其他解决方案,只是无法回想起它们。如果您可以将HTML转换为Postscript,那么从中获取PDF文件是微不足道的。

答案 1 :(得分:1)

如果HTML4和(部分)CSS1足以满足您的需求,那么您可以在单独的线程中将QTextDocumentQPrinter一起使用。

答案 2 :(得分:1)

“Qt编程,第二版”,O'Reilly,非常出色,但仅涵盖Qt3。许多基本知识仍然适用于Qt 4.5。

“使用Qt 4(第2版)进行C ++ GUI编程”,ISBN 0132354160,也不错。

Qt文档也包含示例和教程。

答案 3 :(得分:1)

我不清楚为什么你不能从子线程中初始化带有GUI类的jar。这是巨魔对Jambi的人为限制吗?

我在Rendering a webpage with Qt and Webkit to a QPixmap上注意到了这个例子,理论上它不需要在屏幕上显示任何内容。 QWebPage和QWebFrame都继承了QObject。使用上面链接中的示例代码,应该可以在没有GUI的情况下获取网页的呈现内容。

答案 4 :(得分:0)

我的主要任务是获取html到pdf转换以打印pdf。

我试图让QT jambi(QT webkit C ++ api也能)在多线程环境中工作,但却无法工作。

我的最终解决方案如下:

我使用了来自here的'wkhtmltopdf'原生二进制文件,

编写了一个捕获标准输入和输出流的java包装器。

为每个需要html到pdf转换的java线程初始化'wkhtmltopdf'二进制文件。

此外,我从未参与过二江的建议,因为那时我已经离开了任务,没有时间去处理他的建议。