67,513
社区成员
发帖
与我相关
我的任务
分享
package com.ksoft.apps.client.action;
import 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;
/**
* TODO class description *
*
* @author chaochen */
public class ITextRendererTest {
public static void main(String[] args) throws Exception {
String inputFile = "conf/template/test.xhtml";
String url = new File(inputFile).toURI().toURL().toString();
String outputFile = "firstdoc.pdf";
OutputStream os = new FileOutputStream(outputFile);
ITextRenderer renderer = new ITextRenderer();
renderer.setDocument(url);
// 解决中文支持问题
ITextFontResolver fontResolver = renderer.getFontResolver();
fontResolver.addFont("C:/Windows/Fonts/arialuni.ttf", BaseFont.IDENTITY_H, BaseFont.NOT_EMBEDDED);
// 解决图片的相对路径问题, 图片路径必须以file开头,指定对应Tomcat下项目rootpath
renderer.getSharedContext().setBaseURL("file:/E:/apache-tomcat-6.0.16/apache-tomcat-6.0.16/webapps/apps-client/");
renderer.layout();
renderer.createPDF(os);
os.close();
}
}
package com.ksoft.apps.client.action;
import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.InputStream;
import java.io.OutputStream;
import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.transform.Transformer;
import javax.xml.transform.TransformerFactory;
import javax.xml.transform.dom.DOMSource;
import javax.xml.transform.stream.StreamResult;
import org.w3c.dom.Document;
import org.xhtmlrenderer.pdf.ITextFontResolver;
import org.xhtmlrenderer.pdf.ITextRenderer;
import com.lowagie.text.pdf.BaseFont;
public class TestCase {
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stu
String encoding = "UTF-8";
String outputFile = "firstdoc.pdf";
InputStream intream = null;
Document doc = null;
Document doc2 = null;
try {
OutputStream out = new FileOutputStream(outputFile);
StringBuffer html = new StringBuffer();
// DOCTYPE 必需写否则类似于 这样的字符解析会出现错误
html.append("<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">");
html.append("<html xmlns=\"http://www.w3.org/1999/xhtml\">").
append("<head>")
.append("<meta http-equiv=\"Content-Type\" content=\"text/html; charset=UTF-8\" />")
.append("<style type=\"text/css\" mce_bogus=\"1\">body {font-family: SimSun;}</style>")
.append("</head>")
.append("<body style='font-family:'Arial Unicode MS''>");
html.append("<div>支持中文!</div>");
html.append("</body></html>");
DocumentBuilder builder = DocumentBuilderFactory.newInstance().newDocumentBuilder();
ByteArrayOutputStream bos = new ByteArrayOutputStream();
Transformer transformer = TransformerFactory.newInstance().newTransformer();
ITextRenderer renderer = new ITextRenderer();
ITextFontResolver fontResolver = renderer.getFontResolver();
intream = new ByteArrayInputStream(html.toString().getBytes(encoding));
doc = (Document) builder.parse(intream); transformer.setOutputProperty("encoding", encoding);
transformer.transform(new DOMSource(doc), new StreamResult(bos));
intream = new ByteArrayInputStream(bos.toString().getBytes());
doc2 = (Document) builder.parse(intream);
// 解决中文支持问题
fontResolver.addFont("C:/Windows/Fonts/ARIALUNI.TTF",
BaseFont.IDENTITY_H, BaseFont.NOT_EMBEDDED);
// 解决图片的相对路径问题
renderer.getSharedContext().setBaseURL("file:/E:/apache-tomcat-6.0.16/apache-tomcat-6.0.16/" +
"webapps/apps-client/");
renderer.setDocument(doc2, null);
// renderer.getSharedContext().setBaseURL("file:/c:/");
renderer.layout();
renderer.createPDF(out, true);
out.flush();
out.close();
} catch (Exception ex) {
ex.printStackTrace();
}
}
}