Css风格和图像不适用于飞碟制作的pdf

时间:2015-08-21 12:54:48

标签: java html css pdf

我需要将一些html页面转换为pdf。经过一些谷歌搜索后,我决定使用Flying Saurcer来执行它。我使用此代码执行此操作:

        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,images)的有效路径。

但是pdf创建没有格式化,所以样式被忽略以及img。 感谢您的关注(对不起我的英语)

0 个答案:

没有答案