我目前正在使用Java構建基於PDF的報表。我看過的iText和BIRT,但它似乎是一個很大的努力去學習他們的API就是我試圖找到一個解決方案,可以讓我在HTML中生成報告(事我已經知道了),並輸出爲PDF。誰能提供一些可能的解決方案? - 謝謝! - 鄧肯克雷布斯Java HTML-> PDF解決方案?
回答
飛碟XHTML轉換爲PDF。太好了。這並不快。如果您的XHTML語法中存在輕微錯誤,它將失敗。 (如<br>
當它應該是<br/>
)
這是讓我開始的鏈接。它似乎使用iText,但一旦你有事情的工作,只需更改HTML和它的更新。
http://today.java.net/pub/a/today/2007/06/26/generating-pdfs-with-flying-saucer-and-itext.html
有可能是一個更好的辦法,這是我做到了。
偉大的,這使得我的生活更容易感謝帖子! – 2011-04-06 16:58:20
如果你的HTML源文件的樣式與CSS並不見得很好形成,嘗試PD4ML庫(免費爲非營利性使用)。
歡迎來到堆棧溢出!感謝您發佈您的答案!請務必仔細閱讀[自助推廣常見問題](http://stackoverflow.com/faq#promotion)。另請注意,每次鏈接到您自己的網站/產品時,您都必須*發佈免責聲明。 – 2012-11-05 17:54:52
我可以推薦jodconverter它使用的OpenOffice在headless模式
1安裝(爲Linux 「zypper的安裝的LibreOffice」)
2 WIN把它放在路徑變量所以 「soffice」 OpenOffice的可運行來自世界各地,對我來說,這是 「C:\ Program Files文件(x86)的\ LibreOffice的4 \程序」
3 LINUX確保它運行的Java進程的用戶擁有自己的主目錄,因爲 OpenOffice的需要存儲CONFIGS有,對我來說,tomcat運行的過程,但它的主目錄是由根
4附加jodconverter-lib添加到您的Java項目
<dependency>
<groupId>com.artofsolving</groupId>
<artifactId>jodconverter</artifactId>
<version>2.2.1</version>
</dependency>
轉換
// ensure open office is running
String[] commands = new String[] {"soffice","--headless","--accept=socket,host=localhost,port=8100;urp;"};
Runtime.getRuntime().exec(commands);
// convert
String html = "<div>hey there</div>";
ByteArrayOutputStream pdfOutputStream = new ByteArrayOutputStream();
DefaultDocumentFormatRegistry defaultDocumentFormatRegistry = new DefaultDocumentFormatRegistry();
OpenOfficeConnection connection = new SocketOpenOfficeConnection(8100);
connection.connect();
DocumentConverter converter = new OpenOfficeDocumentConverter(connection);
converter.convert(IOUtils.toInputStream(html, Charset.forName("UTF-8")), defaultDocumentFormatRegistry.getFormatByFileExtension("html"), pdfOutputStream, defaultDocumentFormatRegistry.getFormatByFileExtension("pdf"));
connection.disconnect();
byte[] pdfBytes = pdfOutputStream.toByteArray();
使用phantomjs,您可以HTML轉換爲PDF格式很容易:
import org.openqa.selenium.phantomjs.PhantomJSDriver;
import org.openqa.selenium.phantomjs.PhantomJSDriverService;
import org.openqa.selenium.remote.DesiredCapabilities;
public class Screenshot {
public static final String SCRIPT = "var page = require('webpage').create();\n" +
"page.open('@@[email protected]@', function() {\n" +
" page.render('@@[email protected]@');\n" +
"});\n";
public static void main(String[] args) {
final String url = args[0];
final String file = args[1];
final String script = SCRIPT.replace("@@[email protected]@", url).replace("@@[email protected]@", file);
final DesiredCapabilities capabilities = new DesiredCapabilities();
capabilities.setCapability(PhantomJSDriverService.PHANTOMJS_EXECUTABLE_PATH_PROPERTY,
"/path/to/phantomjs/bin/phantomjs");
try {
PhantomJSDriver phantomJSDriver = new PhantomJSDriver(capabilities);
phantomJSDriver.executePhantomJS(script);
} finally {
phantomJSDriver.close();
}
}
}
如果file
名稱與.pdf
結束,然後該網頁將被保存爲PDF格式。 Phantomjs還支持PNG,JPG和GIF輸出。
這是一個非常簡單的例子,更一般地,屏幕快照過程是非常定製(組視口大小,啓用/禁用JavaScript的,等等)。有關更多信息,請參閱PhantomJS的screen capturing頁面。
- 1. C#免費Doc 2 PDF解決方案
- 2. VS 2010解決方案取決於另一個解決方案
- 3. 同樣的解決方案,在Codechef(JAVA)
- 4. 尋找解決方案[Java,Regex?]
- 5. 基於Java的Webmail解決方案
- 6. 替代(?)Java解決方案| ArrayList
- 7. Java的全文搜索解決方案?
- 8. Java網絡安全解決方案
- 9. Java GUI解決方案獨立縮放
- 10. Java音頻播放解決方案?
- 11. 長Java類路徑解決方案
- 12. Java服務器縮放解決方案
- 13. codechef解決方案
- 14. MSBuild解決方案
- 15. Qt:QStackedWidget解決方案
- 16. squarepie解決方案
- 17. Python解決方案
- 18. google.appengine.runtime.DeadlineExceededError解決方案?
- 19. 算法解決方案Leda
- 20. Couchdb衝突解決方案
- 21. 尋找.Net解決方案的免費授權解決方案
- 22. 遞歸解決方案的動態編程解決方案
- 23. 我的緩存解決方案解決方案是否安全?
- 24. 重構解決方案文件夾到新解決方案
- 25. 爲VS2008解決方案創建VS2010解決方案文件
- 26. Ruby解決方案替代.NET解決方案
- 27. 從C#解決方案調試C++解決方案
- 28. Visual Studio:單一解決方案還是很多解決方案?
- 29. 解決方案與2010年解決方案
- 30. imacros解決解決方案captcha
您可以查看此:http://stackoverflow.com/questions/235851/using-itext-to-convert-html-to-pdf – Beez 2011-04-06 16:52:51