出于法律原因,我们需要在发布新版本时将HTML页面存档为PDF。该系统无关紧要,但是该过程是在CMS的创作系统上完成的。这里的问题是页面不能匿名访问。使用带有HttpClient
的Apaches CredentialsProvider
可以很容易地获取HTML,但是iText HtmlConverter
尝试从同一主机(由ConverterProperties
提供)中加载CSS。我看不到任何可以使用的API方法向此转换器提供任何形式的身份验证。
示例代码:
CredentialsProvider provider = new BasicCredentialsProvider();
provider.setCredentials(new UsernamePasswordCredentials("admin", "admin"));
CloseableHttpClient httpClient = HttpClients.cutom().setDefaultCredentialsProvider(AuthScope.ANY, provider).build();
HttpGet httpGet = new HttpGet(url);
try (CloseableHttpResponse response = httpClient.execute(httpGet); OutputStream out = new FileOutputStream(fileName);) {
HttpEntity httpEntity = response.getEntity();
ConverterProperties props = new ConverterProperties();
props.setBaseUri(BASE_URI);
HtmlConverter.convertToPdf(httpEntity.getContent(), out, props);
} catch (IOException e) {
e.printStackTrace();
}
我错过了什么吗,或者html2pdf无法做到这一点?
最佳答案
前iText
员工在这里。html2pdf
并不真正在乎如何获取HTML或其资源。html2pdf
承诺将HTML文档(和资源)转换为有效的PDF。
获得HTML(并且必须提供身份验证)不在该项目的范围内。
我建议您只在本地复制文件(只需使用您提到的apache库下载它们)。
然后,您可以使用JSoup
之类的库加载文档,并更改资源的路径以反映您的本地副本。
关于java - 带有身份验证的iText html2pdf,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/57657045/