有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

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) 个答案