タグ: 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] プレーンコピーを表示
- import java.io.FileOutputStream;
- import java.io.FileReader;
- import java.util.ArrayList;
- import com.lowagie.text.Document;
- import com.lowagie.text.Element;
- com.lowagie.text.Font をインポートします。
- import com.lowagie.text.PageSize;
- import com.lowagie.text.Paragraph;
- import com.lowagie.text.html.simpleparser.HTMLWorker;
- import com.lowagie.text.html.simpleparser.StyleSheet;
- import com.lowagie.text.pdf.BaseFont;
- import com.lowagie.text.pdf.PdfWriter;
- public class TestIText{
- public static void main(String[] args) {
- TestIText ih = new TestIText();
- ih.htmlCodeComeFromFile("D://Test//iText.html", "D://Test//iText_1.pdf");
- ih.htmlCodeComeString("Hello中文", "D://Test//iText_2.pdf");
- }
-
- public void htmlCodeComeFromFile(String filePath, String pdfPath) {
- Document document = new Document();
- 試し {
- StyleSheet st = new StyleSheet();
- st.loadTagStyle("body", "leading", "16,0");
- PdfWriter.getInstance(document, new FileOutputStream(pdfPath));
- document.open();
- ArrayList p = HTMLWorker.parseToList(new FileReader(filePath), st);
- for(int k = 0; k < p.size(); ++k) {
- document.add((Element)p.get(k));
- }
- document.close();
- System.out.println("文档创建成功");
- }catch(Exception e) {
- e.printStackTrace();
- }
- }
-
- public void htmlCodeComeString(String htmlCode, String pdfPath) {
- Document doc = new Document(PageSize.A4);
- 試してください {
- PdfWriter.getInstance(doc, new FileOutputStream(pdfPath));
- doc.open();
- // 解决中文问题
- BaseFont bf Chinese = BaseFont.createFont("STSong-Light", "UniGB-UCS2-H", BaseFont.NOT_EMBEDDED);
- Font Font Chinese = 新しい Font(bf Chinese, 12, Font.NORMAL);
- 段落 t = 新しい 段落(htmlCode, フォント中国語);
- doc.add(t);
- doc.close();
- System.out.println("文档创建成功");
- }catch(Exception e) {
- e.printStackTrace();
- }
- }
- }
(二)フライングソーザー
项目主页: 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
- java.io.File をインポートします。
- import java.io.FileOutputStream;
- import java.io.OutputStream;
-
- import org.xhtmlrenderer.pdf.ITextFontResolver;
- import org.xhtmlrenderer.pdf.ITextRenderer;
-
- import com.lowagie.text.pdf.BaseFont;
-
- public class TestFlyingSauser {
- public static void main(String[] args) throws Exception {
- demo_1();
- demo_2();
- }
-
- //不サポート中文
- public static void demo_1() throws Exception {
- String inputFile = 「D :/Test/flying.html";
- String url = new File(inputFile).toURI().toURL().toString();
- String outputFile = "D:/Test/flying.pdf";
- OutputStream os = new FileOutputStream(outputFile);
- ITextRendererレンダラー=新しいITextRenderer();
- renderer.setDocument(url);
- renderer.layout();
- renderer.createPDF(os);
- os.close();
- }
-
- // 中文サポート
- public static void demo_2() throws Exception {
String outputFile = 「D: /テスト/デモ_3.pdf"; -
OutputStream os = new FileOutputStream(outputFile); -
ITextRendererレンダラー=新しいITextRenderer(); -
ITextFontResolver fontResolver = renderer.getFontResolver(); -
fontResolver.addFont("C:/Windows/fonts/simsun.ttc", BaseFont.IDENTITY_H, BaseFont.NOT_EMBEDDED); -
StringBuffer html = new StringBuffer(); -
// DOCTYPE 必写かどうかこの文字解析会出现错误 -
html.append(""); -
html.append("").append("")
-
.append("") -
.append( " mce:style>") - .append("")
- .append("");
- html.append("
支持中文!
"); - html.append("");
- renderer.setDocumentFromString(html.toString());
- ;
- renderer.createPDF(os);
- }
- }
-
🎜> http://bettereveryday.javaeye.com/blog/611561 -
参考: http://yongboy.javaeye.com/blog/510976 -
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] プレーン コピー
- import java.awt.Insets;
- java.io.File をインポートします。
- import java.io.FileOutputStream;
- import java.io.StringReader;
-
- import org.zefer.pd4ml.PD4Constants;
- import org.zefer.pd4ml.PD4ML;
-
- public class Converter {
- public static void main(String[] args) throws Exception {
- Converter converter = new Converter();
- converter.generatePDF_2(new File("D:/Test/demo_ch_pd4ml_a.pdf"), "D:/Test/a.htm");
- ファイル pdfFile = 新しい File("D:/Test/demo_ch_pd4ml.pdf");
- StringBuffer html = new StringBuffer();
- html.append("")
- .append("")
- .append("")
- .append("")
- .append("")
- .append("")
- .append("显示中文")
- .append("")
- .append(" html>");
- StringReader strReader = new StringReader(html.toString());
- converter.generatePDF_1(pdfFile, strReader);
- }
- // 手動构造HTML代番号
- public void generatePDF_1(File outputPDFFile, StringReader strReader) throws Exception {
FileOutputStream fos = 新しい FileOutputStream(出力PDFファイル); -
PD4ML pd4ml = 新しい PD4ML(); -
pd4ml.setPageInsets(new Insets(20, 10, 10, 10)); -
pd4ml.setHtmlWidth(950); -
pd4ml.setPageSize(pd4ml.changePageOrientation(PD4Constants.A4)); -
pd4ml.useTTF("java:fonts", true); -
pd4ml.setDefaultTTFs("KaiTi_GB2312", "KaiTi_GB2312", "KaiTi_GB2312"); -
pd4ml.enableDebugInfo(); -
pd4ml.render(strReader, fos); -
} -
- // HTML代発HTML文件
- public void generatePDF_2(File outputPDFFile, String inputHTMLFileName) throws Exception {
FileOutputStream fos = 新しい FileOutputStream (出力PDFファイル); -
PD4ML pd4ml = 新しい PD4ML(); -
pd4ml.setPageInsets(new Insets(20, 10, 10, 10)); -
pd4ml.setHtmlWidth(950); -
pd4ml.setPageSize(pd4ml.changePageOrientation(PD4Constants.A4)); -
pd4ml.useTTF("java:fonts", true); -
pd4ml.setDefaultTTFs("KaiTi_GB2312", "KaiTi_GB2312", "KaiTi_GB2312"); -
pd4ml.enableDebugInfo(); -
pd4ml.render("file:" + inputHTMLFileName, fos); -
} -
} -
参考资料:
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推荐