使用Flying Saucer解决受保护资源(ITextRenderer)

Man*_*Sto 6 java pdf resolve flying-saucer xhtmlrenderer

我正在使用Flying Saucer从xhtml创建一个pdf,托管在tomcat服务器上.pdf中包含的大多数图像都是公开可用的(徽标等),但其中一些图像在登录后受到保护(即,如果用户已登录,则通过servlet流式传输).

当我在浏览器中粘贴网址时,图像当然显示正常,因为浏览器会发送带有请求的会话.但是当Flying Saucer渲染pdf时,它不包括受保护的图像,因为它对会话一无所知.

所以,我的问题是; 是否有任何方法可以包含Flying Saucer的字节流来解决,就像可以添加可解析的字体一样?我试图像这样,但有没有简单的方法来设置UAC的ITextRenderer,并抱怨每次我试过一次.

Ada*_*dam 7

您可以通过这种方式设置UserAgentCallback,Flying Saucer将使用它来解析网址(已测试,适用于版本8):

ITextRenderer renderer = new ITextRenderer();
renderer.getSharedContext().setUserAgentCallback(new MyUAC());
Run Code Online (Sandbox Code Playgroud)

MyUAC应该扩展NaiveUserAgent,并覆盖resolveAndOpenStream其他页面建议的方法.