iTextのHTMLターンPDFは、中国のスタイルに問題を示さない解決します

本当に簡単ではない、とすぐに戻っビットアップ投稿、そこにコード例の多くは、多くがしかし、中国の問題だけでなく、スタイルを解決することができると言う、オンラインで、そして、ものを見つけるのは難しい、解決することができることはできません。

 

インポートcom.itextpdf.text.pdf.BaseFont;
 インポートorg.xhtmlrenderer.pdf.ITextFontResolver;
 インポートorg.xhtmlrenderer.pdf.ITextRenderer; 

インポート java.io. * ; 

/ ** 
 *ファイル形式変換ツール
 * 
 * @author LBJ 
 * 
 * 2015年10月8日10時52分22秒のaM 
 * / 
パブリック クラスFileTypeConvertUtil { 

    / ** 
     * HTMLは、PDファイル形式に変わります。htmlファイル形式より厳しい
     * @param HTMLFILE 
     * @paramのPDFファイル
     * @throws 例外
      * / 
    // <!DOCTYPE htmlのPUBLIC「 - //W3C // DTD XHTML 1.0過渡// EN」 " http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd "> 
    公共の 静的な 無効 HTML2PDF(文字列HTMLFILE、文字列PDFファイル)がスロー例外{
         /を/ ステップ1 
        文字列のURL = 新しいファイル(HTMLFILE).toURI()toURL()のtoString();。。
        のSystem.out.println(URL); 
        // ステップ2 
        のOutputStream OS = 新しいたFileOutputStream(PDFファイル); 
        ITextRendererレンダラ = 新しいですITextRenderer(); 
        renderer.setDocumentFromString(getXmlString()); 
//        renderer.setDocument(URL); 

        // 中文支持解决ステップ3 
        ITextFontResolver fontResolver = renderer.getFontResolver()。
        もし( "Linuxの" .equals(getCurrentOperatingSystem())){ 
            fontResolver.addFont( "/usr/share/fonts/chiness/simsun.ttc" 、BaseFont.IDENTITY_H、BaseFont.EMBEDDED)。
        } { 
            fontResolver.addFont( "C:\\ユーザー\\スプリング\\デスクトップ\\ simsun.ttc" 、BaseFont.IDENTITY_H、BaseFont.NOT_EMBEDDED)。
            fontResolver.addFont( "C:\\ユーザー\\春\\デスクトップ\\ arial.ttfの" 、BaseFont.IDENTITY_H、BaseFont.NOT_EMBEDDED)。
        }

        renderer.layout(); 
        renderer.createPDF(OS)。
        os.close(); 

        System.out.println( "行ってPDFを作成!!" ); 

    } 

    パブリック 静的文字列getCurrentOperatingSystem(){ 
        文字列OS =はSystem.getProperty( "os.name" ).toLowerCase(); 
        System.out.println( "---------当前操作系统是-----------" + OS)。
        返すOSを。
    } 
    パブリック 静的文字列getXmlString(){ 
        文字列xmlString = "<!DOCTYPE HTML PUBLICの\!" - // W3C // DTD XHTML 1.0過渡// EN \ "\" http://www.w3.org/TR/xhtml1/ DTD / XHTML1-transitional.dtdの\ ">
                "<HTML LANG = \" EN \ "のxmlns = \ "のhttp://www.w3.org/1999/xhtml \"> \ n"は+  
                「<
                "<メタ文字セット= \" UTF-8 \ "/> \ nは"+ 
                " <タイトル>のHello World </ TITLE> \ n」+ 
                "\トンの<style> \ n"は+ 
                "\トンtable.table-別々番目の{\ n" + 
                "フォント重量:太字; \ nを" + 
                "フォントサイズ:14px; \ n" + 
                "ボーダートップ:1ピクセル固体#F3EDE9重要; \ n" + 
                "} \ n" + 
                "table.table-別TD {\ n" + 
                "パディング:13px 0; \ n」は+ 
                "フォント重量:100; \ n" + 
                "} \ n" + 
                ".table-別td.tit {\ n" + 
                "背景色:#1 f4f9fe; \ n」+ 
                "フォント重量:ノーマル; \ n" + 
                "パディング:22px 0; \ n" + 
                "幅:15%; \ n" + 
                "} \ n" + 
                ".table-別td.cont {\ n"を+ 
                "テキスト整列:左; \ n" + 
                "パディング:16pxに22pxと、\ n" + 
                "幅:85%; \ n" + 
                "行の高さ:175%; \ n" + 
                "} \ n" + 
                ".table-separate.noボーダー番目{\ n" + 
                "ボーダー:なし; \ n" + 
                "テキスト整列:左; \ n" + 
                "} \ n"は+ 
                ".table-separate.noボーダーTD {\ n" +絶対の; トップ:0; 
                左:0; \ n」は+ "\ T-FS-移動・ツー・フロー:"フッター\ "\; \ n"は++ 
                "国境:なし; \ n"は+ 
                "} \ n"は+
                "\トンの@ページ{\ n"は+ 
                "\ TSIZE:210ミリメートルの297ミリメートル; //纸张大小A4 \ n" + 
                "\ TMARGIN:0.25インチ; \ n"は+ 
                "\ T-FS-フローボトム:\"フッター\ "; \ n" + 
                "\ T-FSフロー左:\"左\ "; \ n" + 
                "\ T-FSフロー右:\"右\ "; \ n" + 
                「\ tborder :薄い固体黒; \ n "+ 
                "\ tpadding:1EM; \ n" + 
                "\ T} \ n" + 
                "\ T#フッタ{\ n" + 
                " \のTFontサイズ:90%;フォントスタイル:イタリック; \ n "は+ 
                "\ tposition:絶対;トップ:0;左:0; \ n"は+\ T} \ n」+ 
                "\ tの番号のページ番号:前{\ n" + 
                "\ tcontent:カウンタ(ページ); \ n" +
                "\のT} \ n" + 
                "\ T} \ n" + 
                "\ T#PAGECOUNT:前{内容:カウンタ(ページ); \ n" + 
                "\ T} \ n" + 
                "\のTTable {に\ n" + 
                "\ T \ T \ tborder-崩壊:崩壊; \ n"は+ 
                "\ T \ T \のTTableレイアウト:固定; \ n"は+ 
                "\ T \ T \ twordブレーク:ブレークのすべて; \ nを" + 
                "\ T \ T \のTFontサイズ:10pxの; \ n" + 
                "\ T \ T \ twidth:100%; \ n" + 
                "\ T \ T \ ttextアライン:中心; \ n" + 
                「\ T} \ n "+ 
                "\ TTD {\ n" + 
                " \ T \ twordブレーク:ブレークのすべて;\ n」は+ 
                "\トン\ twordラップ:ブレークワードを; \ n"は+ 
                "\ T} \ n"は+\トン\ twordラップ:ブレークワードを; \ n」は+ 
                "\トン</スタイル> \ n"は+
                "\トン</ head>の\ N" + 
                "<ボディスタイル= \"フォントファミリー:SimSun; \ "> \ n"は+ 
                "<div要素のid = \"フッター\」スタイル= \ "\">ページ<スパンID = \ "ページ番号の\" /> <スパンID = \ "PAGECOUNTの\" /> </ div> \ n "+の
                "<div要素のid = \"メイン\ "> \ n"は+ 
                " <divのスタイル= \ "のmax-width:600PX;マージン:0自動;パディング:10pxの; \"> \ n」は+ 
                "<divのスタイル= \"テキスト整列:センター; パディング:5ミリメートル0; \ "> \ n"は+ 
                "<divのスタイル= \"フォント重量:太字; フォントサイズ:30px; \ "> HI Fudi&#038;詳細</ div> \ n"は 
                + "の<div> Fudi&アンプと一緒に買い物をありがとうございました。もっと</ div> \ N!" + 
                "<divのスタイル= \"国境:1pxの黒の固体; 背景色:#f8f8f8; パディング:4ミリメートル; \ "> \ n"は+ 
                "<divのスタイル= \"フォントサイズ:17px; フォント重量:太字; ボーダー底:1ピクセル黒色固体。パディング下:5ミリメートル; \ "> ORDER DETAILS </ div> \ n" + 
                "<divのスタイル= \"パディングトップ:10pxの; \ "> \ n"は+ 
                "の<div>の<strong>注文:&NBSP; </ strong>のD-8C2Yが29/09/2019に置か10:04 </ div> \ n "+ 
                "の<div>の<strong>キャリア:&NBSP; </ strong>の配達</ div> \ n" + 
                " <div>の<strong>お支払い方法:&NBSP; </ strong>を
                "<divのスタイル= \"マージントップ:4ミリメートル; \ "> \ n"は+ 
                "<テーブルクラス= \"テーブル、独立した\ "CELLPADDING = \ "\ 0" CELLSPACING = \ "0 \"スタイル= \"最大幅:600PX;マージン:0自動;パディング:10pxの; \ "> \ n"は+ 
                "<THEAD> \ n"は+ 
                "<trのスタイル= \"テキスト整列:センター; 高さ:40ピクセル; \ "> \ n"は+ 
                "<番目のスタイル= \"幅:90PX; 背景色:#f8f8f8; border-top:1pxの黒一色。border-left:1pxの黒一色。ボーダー右:1pxの黒一色; \ "> \ n"は+ 
                "のリファレンス\ n" + 
                "
                "<番目はcolspan = \" 2 \ "スタイル= \"背景色:#1 f8f8f8; border-top:1pxの黒一色。ボーダー右:1pxの黒一色; \ ">製品</目> \ n" +
                "<番目のスタイル= \"幅:110px; 背景色:#f8f8f8; border-top:1pxの黒一色。ボーダー右:1pxの黒一色; \ ">単価</目> \ n" + 
                "<スタイル番目= \"幅:80px; 背景色:#f8f8f8; border-top:1pxの黒一色。ボーダー右:1pxの黒一色; \ ">数量</目> \ n" + 
                "<番目のスタイル= \"幅:90PX; 背景色:#f8f8f8; border-top:1pxの黒一色。ボーダー右:1pxの黒一色; \ ">合計価格</目> \ n" + 
                "</ TR> \ n" + 
                "<TBODY> \ n"は+ 
                "<trのスタイル= \" テキスト整列:センター; \ "> \ n" は+ 
                "<TDスタイル= \"のborder-top:1pxの黒一色。ボーダー底:1ピクセル黒色固体。border-left:1pxの黒一色。ボーダー右:1pxの黒一色; \ "> \ n"は+ 
                "メイン\ n" + 
                "</ TD> \ n" + 
                "<TDのはcolspan = \" 2 \ "\ n"は+ 
                "スタイル= \"ボーダー-top:1ピクセル黒色固体。ボーダー底:1ピクセル黒色固体。ボーダー右:1pxの黒一色。テキスト整列:左; パディング:010px; \ "> \ n"は+ 
                "SweetSourチキン\ nを"
                "<TDスタイル= \"のborder-top:1pxの黒一色。ボーダー底:1ピクセル黒色固体。ボーダー右:1pxの黒一色; \ ">&ユーロ; 7.00 </ TD> \ n" + 
                "<
                "<TDスタイル= \"のborder-top:1pxの黒一色。ボーダー底:1ピクセル黒色固体。ボーダー右:1ピクセル固体黒; \ "> 1 </ TD> \ n" + 
                "<TDスタイル= \"ボーダートップ:1ピクセル黒色固体。ボーダー底:1ピクセル黒色固体。ボーダー右:1ピクセル固体黒; \ ">&ユーロ; 7.00 </ TD> \ n" + 
                "</ TR> \ n" + 
                "<TRスタイル= \"テキスト整列:センター。\ "> \ n" + 
                "メイン\ n" + 
                "</ TD> \ n" + 
                "<TD COLSPAN = \" 2 "\ n" + \
                "スタイル= \"のborder-top:1pxの黒一色。ボーダー底:1ピクセル黒色固体。ボーダー右:1pxの黒一色。テキスト整列:左; パディング:010px; \ "> \ n"は+ 
                "ブラックビーンフライ\をかき混ぜるのn" + 
                "</ TD> \ n" + 
                "<TDスタイル= \"のborder-top:1pxの黒の固体; ボーダー底:1ピクセル黒色固体。ボーダー右:1pxの黒一色; \ ">&ユーロ; 9.00 </ TD> \ n" + 
                "<TDスタイル= \"のborder-top:1pxの黒一色。ボーダー底:1ピクセル黒色固体。ボーダー右:1pxの黒一色; \ "> 1 </ TD> \ n" + 
                "<TDスタイル= \" border-top:1pxの黒一色。ボーダー底:1ピクセル黒色固体。ボーダー右:1pxの黒一色; \ ">&ユーロ; 9.00 </ TD> \ n" は+
                "</ TR> \ n" + 
                "<trのスタイル= \"テキスト整列:センター; \ "> \ n"は+ 
                "<TDスタイル= \"のborder-top:1pxの黒一色。ボーダー底:1ピクセル黒色固体。border-left:1pxの黒一色。ボーダー右:1pxの黒一色; \ "> \ n"は+  
                "ピザ\ n" + 
                "</ TD> \ n" + 
                "\ n" + \ "<TD COLSPAN = \" 2
                "スタイル= \"のborder-top:1pxの黒一色。ボーダー底:1ピクセル黒色固体。ボーダー右:1pxの黒一色。テキスト整列:左; パディング:010px; \ "> \ n"は+ 
                "テスト設計、あなた自身の8 \"ピザ\ n "は+ 
                "</ TD> \ n" + 
                " < TDスタイル= \ "のborder-top:1pxの黒一色;のborder-bottom:1pxの黒一色;のborder-right:1pxの黒一色; \">&ユーロ; 6.00 </ TD> \ n」は+
                "<TDスタイル= \"のborder-top:1pxの黒一色。ボーダー底:1ピクセル黒色固体。ボーダー右:1ピクセル固体黒; \ "> 1 </ TD> \ n" + 
                "<TDスタイル= \"ボーダートップ:1ピクセル黒色固体。ボーダー底:1ピクセル黒色固体。ボーダー右:1ピクセル固体黒; \ ">&ユーロ; 6.00 </ TD> \ n" + 
                "</ TR> \ n" + 
                "</ TBODY> \ n" + 
                "<TFOOT> \ n" + 
                "< TRスタイル= \ "テキスト整列:センター; 高さ:8ミリメートル; \ "> \ n" + 
                "<TD COLSPAN = \" 5 "\ n" + \
                「スタイル= \」テキスト整列:右; 幅:90PX; 背景色:#f8f8f8; ボーダー底:1ピクセル黒色固体。border-left:1pxの黒一色。ボーダー右:1pxの黒一色。パディング:0 10pxの; \ "> \ n"は+ 
                "<TDスタイル= \"背景色:#f8f8f8; ボーダー底:1ピクセル黒色固体。ボーダー右:1ピクセル固体黒; \ "> 3 </ TD> \ n" + 
                "</ TR> \ n" + 
                "<TRスタイル= \"テキスト整列:センター。高さ:8ミリメートル; \ "> \ n" + 
                "<TD COLSPAN = \" 5 "\ n" + \
                パディング:0 10pxの; \ "> \ n"は+ "アイテム:\ n"は+
                "</ TD> \ n" +
                「スタイル= \」テキスト整列:右; 幅:90PX; 背景色:#f8f8f8; ボーダー底:1ピクセル黒色固体。border-left:1pxの黒一色。ボーダー右:1pxの黒一色。パディング:0 10pxの; \ "> \ n"は+ 
                "小計ます:\ n" + 
                "</ TD> \ n" + 
                "<TDスタイル= \"背景色:#1 f8f8f8; ボーダー底:1ピクセル黒色固体。ボーダー右:1ピクセル固体黒; \ ">&ユーロ; 24.00 </ TD> \ n" + 
                "</ TR> \ n" + 
                "<TRスタイル= \"テキスト整列:センター。高さ:8ミリメートル; \ "> \ n"は+ 
                「スタイル= \」テキスト整列:右; 幅:90PX; 背景色:#f8f8f8; ボーダー底:1ピクセル黒色固体。border-left:1pxの黒一色。ボーダー右:1pxの黒一色。パディング:0 10pxの; \ "> \ n"は+ 
                "手数料を配信します:\ n" + 
                "</ TD> \ n" + 
                "<TDスタイル= \"背景色:#1 f8f8f8; ボーダー底:1ピクセル黒色固体。ボーダー右:1ピクセル固体黒; \ "> +&ユーロ; 2.00 </ TD> \ n" + 
                "</ TR> \ n" + 
                "<TRスタイル= \"テキスト整列:センター。高さ:8ミリメートル; \ "> \ n"は+ 
                「スタイル= \」テキスト整列:右; 幅:90PX; 背景色:#f8f8f8; ボーダー底:1ピクセル黒色固体。border-left:1pxの黒一色。ボーダー右:1pxの黒一色。パディング:0 10pxの; \ "> \ n"は+ 
                "ディスカウントます:\ n" + 
                "</ TD> \ n" + 
                "<TDスタイル= \"背景色:#1 f8f8f8; ボーダー底:1ピクセル黒色固体。ボーダー右:1ピクセル固体黒; \ "> - &ユーロ; 0.00 </ TD> \ n" + 
                "</ TR> \ n" + 
                "<TRスタイル= \"テキスト整列:センター。高さ:8ミリメートル; \ "> \ n"は+ 
                「スタイル= \」テキスト整列:右; 幅:90PX; 背景色:#f8f8f8; ボーダー底:1ピクセル黒色固体。border-left:1pxの黒一色。ボーダー右:1pxの黒一色。パディング:0 10pxの; \ "> \ n"は+ 
                "合計:\ n"は+ 
                "</ TD> \ n" + 
                "<TDスタイル= \"背景色:#1 f8f8f8; ボーダー底:1ピクセル黒色固体。ボーダー右:1ピクセル固体黒; \ ">&ユーロ; 24.00 </ TD> \ n" + 
                "</ TR> \ n" + 
                "</ TFOOT> \ n" + 
                "</ TABLE> \ n"は
                "<divのスタイル= \"国境:1pxの黒の固体; 背景色:#f8f8f8; パディング:5ミリメートル。マージントップ:5ミリメートル; \ "> \ n"は+ 
                "<divのスタイル= \"フォントサイズ:17px; フォント重量:太字; ボーダー底:1ピクセル黒色固体。パディング下:15ピクセル; \ ">配信アドレス</ div> \ n" + 
                "<divのスタイル= \"パディングトップ:10pxの; \ "> \ n"は+ 
                "の<div>の<strong>関</強いです>&#9742; <強い> 13656690321 </ strong>の</ div> \ n "+ 
                "の<div> 1024 / Edenhall、ModelFarmRd、コーク、爱尔兰、2048 </ div> \ n" + 
                " </ div> \ n」は
                "<divのスタイル= \"フォントサイズ:13px; \ "> <P>あなたがあなたの順序を確認し、\からの請求書をダウンロードすることができます" <ターゲットを= \ "_空白の\" \ n」は+ 
                "のhref = \" http://www.fudiandmore.ie/#/FudiIndex/Order1\">Order\n「+ 
                『の歴史</a>を\』 \をクリックして、顧客アカウントのセクション『<ターゲット= \』 _ \空白」HREF = \ "のhttp://www.fudiandmore.ie/#/FudiIndex/Personalcenter1 \">マイ\ n "+ 
                "アカウント</a>の\"。ourshopの</ P> </ div> \ n" + 
                " <時間スタイル= \」ボーダー幅:5pxの; \ "/> \ n" は+
                + "の<div> Fudiは、もっと<a target=\"_blank\" href=\"http://www.fudiandmore.ie\"> A2BLivingする</a> </ div> \ n個を搭載し" もっとによって供給<a target=\"_blank\" href=\"http://www.fudiandmore.ie\"> A2BLivingする</a> </ div> \ n」+ 
                "</ div> \ n"は+
                「</ DIV> \ n」は+ 
                "</ BODY> \ n" + 
                "</ HTML>" ; 
        StringBufferのStringBufferの = 新しいStringBufferを(); 

        返すxmlStringを、
    } 

    パブリック 静的 ボイドメイン(文字列[]引数){
         //         文字列HTMLFILE = "/home/lbj/sign.jsp"。
        //         文字列PDFファイル=「/home/lbj/sign.pdf」。
        文字列HTMLFILE =「C:= "C:\\ユーザー\\春\\デスクトップ\\ testoone2.pdf" してみてください {
            FileTypeConvertUtil.html2pdf(HTMLFILE、PDFファイル)を、
        } キャッチ(にFileNotFoundException電子){ 
            e.printStackTrace(); 
        } キャッチ(例外e){ 
            e.printStackTrace(); 
        } 
    } 
}
        <依存性> 
            <のgroupId> com.itextpdf </のgroupId> 
            <たartifactId> itextpdf </たartifactId> 
            <バージョン> 5.5.9 </バージョン> 
        </依存> 

        <依存性> 
            <のgroupId> com.itextpdf.tool </のgroupId> 
            <たartifactId> xmlworker </たartifactId> 
            <バージョン> 5.5.9 </バージョン> 
        </依存> 

        <依存性> 
            <のgroupId> com.itextpdf </のgroupId> 
            <たartifactId> iTextのアジア</たartifactId> 
            <バージョン> 5.2。 0 </バージョン> 
        </依存関係> 

        <依存関係> 
            <groupIdを> org.xhtmlrenderer </ groupIdを>依存関係> 
            <たartifactId>フライングソーサー-PDF-itext5 </たartifactId> 
            <バージョン> 9.0.3 </バージョン> 
        </依存関係>

これはオーバーではありません。問題ありませ直接実行します。例えば、ある&テキスト&#038で脱出、形式が正しくなければならない、与えられている他のか、</>ターミネータがなければなりません、また、標準を持っています

<!DOCTYPE HTML PUBLICの\ " - // W3C // DTD XHTML 1.0過渡// EN \" \ "HTTP://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd \"> 
                <HTML LANG = \「EN \」のxmlns = \「のhttp://www.w3.org/1999/xhtml \」> 
これを自分自身で試してみることができます欠けている、それはまた、重要な問題で、体内にありますあなたがそれを望んでいない、フォントが指定されていない中国を指定します。そこ広い場合には、困難になろうとして書き込むためにどのようなスタイルのいくつかのページがあり、そしてそれは彼が、おそらくうまく、スタイル変更の独自のインスタンスを見ました。

 

おすすめ

転載: www.cnblogs.com/hxz-nl/p/11611909.html