1

変換にiText 2.1.7で空飛ぶ円盤を使用しています。問題なく動作しますが、html に中国語、韓国語などの文字が含まれていると問題が発生します。html to pdf

PDF に通常の漢字ではなく、予期しない文字が表示されます

この問題が未解決であることがわかったので、空飛ぶ円盤で PDF を正しくレンダリングする方法は現在ないと思いますか?

PS: 私もこの問題を見つけましたが、提供された解決策を理解できません。

これは私が使用しているコードです

String doc = file.toURI().toURL().toString();
ITextRenderer renderer = new ITextRenderer();
renderer.getFontResolver().addFont (
    "C:\\ARIALUNI.TTF",
     BaseFont.IDENTITY_H,
     BaseFont.EMBEDDED
);
renderer.setDocument(doc);
String outputFile = "report.pdf";
OutputStream os = new FileOutputStream(outputFile);

renderer.layout();
renderer.createPDF(os);
os.flush();
os.close();

fileは、変換しようとしている html です

同じことを行う他の方法やライブラリはありますか?

これは私が使用しているcssです

@font-face {
  font-family: "Arial";
  src: url("media/arialuni.ttf");
 -fs-pdf-font-embed: embed;
 -fs-pdf-font-encoding: Identity-H; 
}

変換する必要があるHTMLファイル

これらは、itext 2.1..x と互換性のある、再コンパイルされた空飛ぶ円盤の jar ファイルです。

4

2 に答える 2

3

フォントが PDF ファイルに埋め込まれていない可能性があります。( PDF ファイルのフォントが埋め込まれているかどうかはどうすればわかりますか? )

すべてのフォントには名前があり、ARIALUNI.TTF は Arial Unicode MS を定義しています。それを使用する必要があります。

したがって、これを変更します。

@font-face {
    font-family: Arial1;
    src: url("arialuni.ttf");
    -fs-pdf-font-embed: embed;
    -fs-pdf-font-encoding: Identity-H;
}

* {
        font-family: Arial1;
}

これに:

@font-face {
    font-family: Arial Unicode MS;
    src: url("arialuni.ttf");
    -fs-pdf-font-embed: embed;
    -fs-pdf-font-encoding: Identity-H;
}

* {
        font-family: Arial Unicode MS;
}

このようにフォントが埋め込まれます。

を呼び出す必要はありませんrenderer.getFontResolver().addFont。css で十分です。

于 2012-11-20T10:26:22.587 に答える
1

これを試して:

font.addFont(Html2Pdfs.class.getResource("SIMSUN.TTC").toString().substring(6),BaseFont.IDENTITY_H,BaseFont.NOT_EMBEDDED)

于 2012-11-20T07:29:36.757 に答える