ホームページ  >  記事  >  ウェブフロントエンド  >  Java は PDF ドキュメントを生成する HTML コードを実装_html/css_WEB-ITnose

Java は PDF ドキュメントを生成する HTML コードを実装_html/css_WEB-ITnose

WBOY
WBOYオリジナル
2016-06-21 08:48:371355ブラウズ

タグ: java html コード| 公開時間: 2016-05-13 07:40 | 著者: hunan84229247

出典: http://www.iteye.com

http://blog.csdn.net/zdtwyjp/article/details/5769353

http://www.xuebuyuan.com/2056017.html

1. IText は html2pdf を実装します。これは高速ですが、エラー修正機能が不十分です (Unicode エンコーディングを使用するには HTML が必要です)。オープンソースの中国語フォント。

2. Flying Sauser は html2pdf を実装していますが、エラー修正機能が不十分で、複数の中国語フォントをサポートしており (一部のスタイルは認識できません)、オープンソースです。

3. PD4ML は、高速で強力なエラー修正機能を備えた html2pdf を実装し、複数の中国語フォントをサポートしており、商用です。

(1) IText

公式 Web サイト: http://www.itextpdf.com/

テスト ケース: TestIText.java

jar に依存パッケージ: iText-2.0.8.jar、iTextAsian.jar (中国語をサポート)

以下は単なる小さなテスト ケースです。このコンポーネントがプロジェクトで使用されている場合、API を参照してテストを完了できます。プロジェクトチームの対応する機能!

[c-sharp] プレーンコピーを表示

  1. import java.io.FileOutputStream;  
  2. import java.io.FileReader;  
  3. import java.util.ArrayList;  
  4. import com.lowagie.text.Document;  
  5. import com.lowagie.text.Element;  
  6. com.lowagie.text.Font をインポートします。  
  7. import com.lowagie.text.PageSize;  
  8. import com.lowagie.text.Paragraph;  
  9. import com.lowagie.text.html.simpleparser.HTMLWorker;  
  10. import com.lowagie.text.html.simpleparser.StyleSheet;  
  11. import com.lowagie.text.pdf.BaseFont;  
  12. import com.lowagie.text.pdf.PdfWriter;  
  13. public class TestIText{
  14. public static void main(String[] args) {
  15. TestIText ih = new TestIText();  
  16. ih.htmlCodeComeFromFile("D://Test//iText.html", "D://Test//iText_1.pdf");  
  17. ih.htmlCodeComeString("Hello中文", "D://Test//iText_2.pdf");  
  18. }
  19. public void htmlCodeComeFromFile(String filePath, String pdfPath) {
  20. Document document = new Document();  
  21. 試し {
  22. StyleSheet st = new StyleSheet();  
  23. st.loadTagStyle("body", "leading", "16,0");  
  24. PdfWriter.getInstance(document, new FileOutputStream(pdfPath));  
  25. document.open();  
  26. ArrayList p = HTMLWorker.parseToList(new FileReader(filePath), st);  
  27. for(int k = 0; k < p.size(); ++k) {
  28. document.add((Element)p.get(k));  
  29. }
  30. document.close();  
  31. System.out.println("文档创建成功");  
  32. }catch(Exception e) {
  33. e.printStackTrace();  
  34. }
  35. }  
  36. public void htmlCodeComeString(String htmlCode, String pdfPath) {
  37. Document doc = new Document(PageSize.A4);  
  38. 試してください {
  39. PdfWriter.getInstance(doc, new FileOutputStream(pdfPath));  
  40. doc.open();  
  41. // 解决中文问题
  42. BaseFont bf Chinese = BaseFont.createFont("STSong-Light", "UniGB-UCS2-H", BaseFont.NOT_EMBEDDED);  
  43. Font Font Chinese = 新しい Font(bf Chinese, 12, Font.NORMAL);  
  44. 段落 t = 新しい 段落(htmlCode, フォント中国語);  
  45. doc.add(t);  
  46. doc.close();  
  47. System.out.println("文档创建成功");  
  48. }catch(Exception e) {
  49. e.printStackTrace();  
  50. }
  51. }
  52. }

(二)フライングソーザー

项目主页: https:/ /xhtmlrenderer.dev.java.net/

依赖jar包:iText-2.0.8.jar、iTextAsian.jar、core-renderer.jar

默认情况下、core-renderer。 jar 中文は移動実行できません。削除したい場合は http://bettereveryday.javaeye.com/blog/611561jar パッケージをダウンロードして、このパッケージのソースコードを実行してください。

以下は、項目内で使用されている場合、API を参照して項目内での関連機能を完了できる、小さなテスト ソリューションの例です。

[c-sharp] view plain copy

  1. java.io.File をインポートします。  
  2. import java.io.FileOutputStream;  
  3. import java.io.OutputStream;  
  4. import org.xhtmlrenderer.pdf.ITextFontResolver;  
  5. import org.xhtmlrenderer.pdf.ITextRenderer;  
  6. import com.lowagie.text.pdf.BaseFont;  
  7. public class TestFlyingSauser {
  8. public static void main(String[] args) throws Exception {
  9. demo_1();  
  10. demo_2();  
  11. }
  12. //不サポート中文
  13. public static void demo_1() throws Exception {
  14. String inputFile = 「D :/Test/flying.html";  
  15. String url = new File(inputFile).toURI().toURL().toString();  
  16. String outputFile = "D:/Test/flying.pdf";  
  17. OutputStream os = new FileOutputStream(outputFile);  
  18. ITextRendererレンダラー=新しいITextRenderer();  
  19. renderer.setDocument(url);  
  20. renderer.layout();  
  21. renderer.createPDF(os);  
  22. os.close();  
  23. }
  24. // 中文サポート
  25. public static void demo_2() throws Exception {
  26. String outputFile = 「D: /テスト/デモ_3.pdf";  
  27. OutputStream os = new FileOutputStream(outputFile);  
  28. ITextRendererレンダラー=新しいITextRenderer();  
  29. ITextFontResolver fontResolver = renderer.getFontResolver();  
  30. fontResolver.addFont("C:/Windows/fonts/simsun.ttc", BaseFont.IDENTITY_H, BaseFont.NOT_EMBEDDED);  
  31. StringBuffer html = new StringBuffer();  
  32. // DOCTYPE 必写かどうかこの文字解析会出现错误
  33. html.append("");  
  34. html.append("").append("")
  35. .append("")
  36. .append( "")  
  37.             .append("")  
  38.             .append("");  
  39.         html.append("
    支持中文!
    ");
  40. html.append("");
  41. renderer.setDocumentFromString(html.toString());
  42. ;
  43. renderer.createPDF(os);
  44. }
  45. }
  46. 🎜> http://bettereveryday.javaeye.com/blog/611561
  47. 参考: http://yongboy.javaeye.com/blog/510976
  48. http://www.51itsns 。 com/sns/space.php?uid=4&do=blog&id=582
フライングソーザーに関する非常に良い記事: http://today.java.net/pub/a/today/2007 /06/26 /generated-pdfs-with-flying-saucer-and-itext.html

(3) PD4ML

公式 Web サイトのダウンロード: http://pd4ml.com/downloads.htm

jar パッケージに依存します: pd4ml_demo.jar、pd4ml__css2.jar、fonts.jar

以下は単なる小さなテスト ケースです。このコンポーネントがプロジェクトで使用されている場合、API を参照できます。対応するプロジェクト チームの関数を完成させます。

[java] プレーン コピー

  1. import java.awt.Insets;  
  2. java.io.File をインポートします。  
  3. import java.io.FileOutputStream;  
  4. import java.io.StringReader;  
  5. import org.zefer.pd4ml.PD4Constants;  
  6. import org.zefer.pd4ml.PD4ML;  
  7. public class Converter {
  8. public static void main(String[] args) throws Exception {
  9. Converter converter = new Converter();  
  10. converter.generatePDF_2(new File("D:/Test/demo_ch_pd4ml_a.pdf"), "D:/Test/a.htm");  
  11. ファイル pdfFile = 新しい File("D:/Test/demo_ch_pd4ml.pdf");  
  12. StringBuffer html = new StringBuffer();  
  13. html.append("")
  14. .append("")
  15. .append("")
  16. .append("")
  17. .append("")
  18. .append("")
  19. .append("显示中文")
  20. .append("")
  21. .append("");  
  22. StringReader strReader = new StringReader(html.toString());  
  23. converter.generatePDF_1(pdfFile, strReader);  
  24. }
  25. // 手動构造HTML代番号
  26. public void generatePDF_1(File outputPDFFile, StringReader strReader) throws Exception {
  27. FileOutputStream fos = 新しい FileOutputStream(出力PDFファイル);  
  28. PD4ML pd4ml = 新しい PD4ML();  
  29. pd4ml.setPageInsets(new Insets(20, 10, 10, 10));  
  30. pd4ml.setHtmlWidth(950);  
  31. pd4ml.setPageSize(pd4ml.changePageOrientation(PD4Constants.A4));  
  32. pd4ml.useTTF("java:fonts", true);  
  33. pd4ml.setDefaultTTFs("KaiTi_GB2312", "KaiTi_GB2312", "KaiTi_GB2312");  
  34. pd4ml.enableDebugInfo();  
  35. pd4ml.render(strReader, fos);  
  36. }  
  37. // HTML代発HTML文件
  38. public void generatePDF_2(File outputPDFFile, String inputHTMLFileName) throws Exception {
  39. FileOutputStream fos = 新しい FileOutputStream (出力PDFファイル);  
  40. PD4ML pd4ml = 新しい PD4ML();  
  41. pd4ml.setPageInsets(new Insets(20, 10, 10, 10));  
  42. pd4ml.setHtmlWidth(950);  
  43. pd4ml.setPageSize(pd4ml.changePageOrientation(PD4Constants.A4));  
  44. pd4ml.useTTF("java:fonts", true);  
  45. pd4ml.setDefaultTTFs("KaiTi_GB2312", "KaiTi_GB2312", "KaiTi_GB2312");  
  46. pd4ml.enableDebugInfo();  
  47. pd4ml.render("file:" + inputHTMLFileName, fos);  
  48. }
  49. }
参考资料:

http://www.pd4ml.com/examples.htm

http://www.pd4ml.com/api/index.html

http://pd4ml.com/reference.htm#7.1

http://pd4ml. com/support/html-pdf-faq-f1/double-byte-support-t195.html

http://pd4ml.com/support/pd4ml-html-css-pdf-tips-tricks-f7 /ttf-embedding-t42.html

PDF 文档の生成方案大致就这是了,希望能够给大家带来帮助!如果上面的三种方案都还不足目组的需要哪就只有去

すでに 0 人が公開表言、猛击->> を所有しています。 这里<<-参与讨论 ITeye推荐

    —软件人才免语言低権利赴美带薪读研!—
声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。