永发信息网

xsl-fo中预览的时候中文全是乱码怎么解决

答案:1  悬赏:60  手机版
解决时间 2021-11-14 12:31
xsl-fo中预览的时候中文全是乱码怎么解决
最佳答案
第一步
private static void test1() {
String[] parameters = {
“-ttcname”,
“SimSun”,
“c:\\WINDOWS\\Fonts\\simsun.ttc”, “E:\\project-java\\p-eclipse\\newtest\\fo-res\\simsun.xml”, };
TTFReader.main(parameters);
}
执行test1方法,会在fo-res目录下生成一个simsun.xml
常用的中文字体:
simsun.ttc 宋体
simkai.ttf 宋楷
simhei.ttf 黑体
第二步、修改fo-res目录下的fop.xconf文件,在fonts节点下加入或替换下列内容

metrics-url后面的值可以是绝对路径;
经常我们的项目会部署到linux下,没有simsun.ttc文件怎么办呢,只需要把windows下的这个文件拷贝到linux就可以了。
第三步、把模板中使用的宋体字体 修改为font-family =SimSun。
第四步、执行下面的方法生成pdf;
private static void test2(){
try {
System.out.println(“Preparing…”);
File baseDir = new File(“.”);
File outDir = new File(baseDir, “out”);
outDir.mkdirs();
// Setup input and output files
File xmlfile = new File(baseDir, “/fo-res/p.xml”);
File xsltfile = new File(baseDir, “/fo-res/p.xsl”);
File pdffile = new File(outDir, “/sample.pdf”);
File conffile = new File(baseDir, “/fo-res/fop.xconf”);
System.out.println(“Input: XML (” + xmlfile + “)”);
System.out.println(“Stylesheet: ” + xsltfile);
System.out.println(“Output: PDF (” + pdffile + “)”);
System.out.println();
System.out.println(“Transforming…”);
FopFactory fopFactory = FopFactory.newInstance();
FOUserAgent foUserAgent = fopFactory.newFOUserAgent();

foUserAgent.getRendererOptions().put(“encryption-params”, new PDFEncryptionParams(
null, “password”, true, false, false, false));
// Setup output
OutputStream out = new java.io.FileOutputStream(pdffile);
out = new java.io.BufferedOutputStream(out);
try {
//加载配有中文配置的文件
fopFactory.setUserConfig(conffile);
Fop fop = fopFactory.newFop(MimeConstants.MIME_PDF, foUserAgent, out);
// Setup XSLT
TransformerFactory factory = TransformerFactory.newInstance();
Transformer transformer = factory.newTransformer(new StreamSource(xsltfile));
// Setup input for XSLT transformation
Source src = new StreamSource(xmlfile);
Result res = new SAXResult(fop.getDefaultHandler());
// Start XSLT transformation and FOP processing
transformer.transform(src, res);
} finally {
out.close();
}
System.out.println(“Success!”);
} catch (Exception e) {
e.printStackTrace();
}
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
量词一()秋叶
名古屋鲸八vs盯田泽维亚比赛结果天皇杯
怎样不通过触犯法律的方式弄死一个人?
creo的一般混合在哪啊?
_____bedroom is very big. A.Tom and To
XEON E5649 这个CPU和2600K比起来应该买哪个
"脱贪"之意是否已达到普通户的水准呢?
咕哝的近义词是什么
三角形中a、b、c化解|a-b-c| |b-c-a| |c-a-b|
移动电子商务的商务模式有哪几种
狗狗把杏核吃进去要紧吗
求北大数学系编的高等代数第四版教材pdf
小鹏汽车上市量产车G3有什么功能?
金达莱花是那个国家的歌曲
本人承包两亩地搞养殖,合同怎么写?
推荐资讯
手板模是什么?手板模就不用开模?那一般用什
颛桥地铁5号最早几点
我想去成都铁路局工作,可是我看见招聘信息上
军犬所有科目有多少种?
网上注册社保个人档案,他说我的注册移动电话
放三天假和放一天假有什么区别
永远常在(いつも何度でも 宗次郎)是不是用
新版饥荒克劳斯怎么打
我现在急需洗浴中心 休息大厅里的沙发椅的3D
15.2与27.4的和比8.7与6.5的积少多少
1.35(1.35x0.8)用脱式计算怎么算
vb6程序怎么检测与sql server断开 等待
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?