永发信息网

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

答案:1  悬赏:60  手机版
解决时间 2021-11-14 12:31
  • 提问者网友:一抹荒凉废墟
  • 2021-11-14 01:40
xsl-fo中预览的时候中文全是乱码怎么解决
最佳答案
  • 五星知识达人网友:上分大魔王
  • 2021-11-14 01:48
第一步
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();
}
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯