java Css样式和图像不适用于飞碟生成的pdf
我需要将一些html页面转换成pdf。在谷歌上搜索了一下之后,我决定用飞行警犬来表演。我使用以下代码来执行此操作:
out = new BufferedOutputStream(new FileOutputStream("/Users/Developer/test.pdf"));
ITextRenderer renderer = new ITextRenderer();
renderer.getSharedContext().setNamespaceHandler(new XhtmlNamespaceHandler());
renderer.getSharedContext().setUserAgentCallback(new CustomUserAgentCallback(renderer.getOutputDevice()));
renderer.setDocumentFromString(html);
renderer.layout();
renderer.createPDF(out);
其中CustomUserAgentCallback是:
public class CustomUserAgentCallback extends ITextUserAgent {
public CustomUserAgentCallback(ITextOutputDevice device) {
super(device);
}
/**
* {@inheritDoc}
*/
@Override
protected InputStream resolveAndOpenStream(String uri) {
try {
return new BufferedInputStream(new FileInputStream(resolveURI(uri)));
} catch (FileNotFoundException e) {
XRLog.exception(String.format("Cannot resolve file with uri %s", uri));
return null;
}
}
/**
* {@inheritDoc}
*/
@Override
public String resolveURI(String uri) {
return HttpUtils.getServletAttributes().getRequest().getServletContext().getRealPath("/") + uri;
}
}
所以,resolveURI方法形成了服务器上资源(css、图像)的有效路径
但是pdf创建时没有格式,所以样式和img都被忽略。 谢谢大家的关注(对不起我的英语)
共 (0) 个答案