我正在使用Qt webkit Jambi API将HTML转换为PDF。
我的目标是为上面的转换创建一个jar,以便它可以在多线程环境中使用,但由于QWebPage和QWebframe(QT webkit)是GUI类,因此无法从子线程初始化jar类。
所以我被困住了,因为我不知道如何解决这个问题。
我也是QT的新手,任何人都可以提供有关QT应用程序生命周期,事件循环和相关内容的良好参考。
提前感谢。
与Ashish
答案 0 :(得分:2)
嗯,实际上,我只是使用Firefox来执行“打印到文件”并选择PDF作为文件类型。但这是手动工作 - 虽然我想你可以编写Firefox脚本。
我认为在Linux环境中 - 我假设Linux / Unix因为你提到了Qt - 你可能会将几个 n x命令行应用程序串起来。可能会有一些有用的东西。如果没有,我很确定我已经看到了其他解决方案,只是无法回想起它们。如果您可以将HTML转换为Postscript,那么从中获取PDF文件是微不足道的。
答案 1 :(得分:1)
如果HTML4和(部分)CSS1足以满足您的需求,那么您可以在单独的线程中将QTextDocument
与QPrinter
一起使用。
答案 2 :(得分:1)
“使用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'二进制文件。
此外,我从未参与过二江的建议,因为那时我已经离开了任务,没有时间去处理他的建议。