出于法律原因,我们需要在发布新版本时将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/

10-11 02:35