【发布时间】:2017-05-02 17:01:28
【问题描述】:
我正在尝试 iText7 并尝试拼凑如何做事。似乎我可以输入一个基本 URI 来获取外部资源,我假设如果它找到一个 .css 它将应用它?我有一种特殊情况,我更容易将 CSS 作为字符串保存在内存中。我可以使用 HtmlConverter.convertToPdf() 并将 HTML 作为字符串而不是 CSS 传递,这似乎很奇怪。
作为第二个问题,如果它在该基本 URI 上找到多个 CSS 文件会发生什么?
最后(抱歉转储),如果 HTML 包含图像的 FQDN URL,我假设/希望它会直接提取图像?换句话说,我希望我不必将这些图像存储/写入到指定的基本 URI 中?
谢谢。
更新:我整理了一个快速演示。我发现它会下载具有完整 URL 的图片,这很棒。
但是,它似乎没有加载我指定的文件夹中的 CSS 文件。代码:
StringBuilder sb = new StringBuilder(File.ReadAllText("demoHtml.html"));
// this folder, which is relative to the test .exe, contains a file called pdf.css
ConverterProperties props = new ConverterProperties().SetBaseUri("Content/Pdf");
FileStream fs = new FileStream("itext.pdf", FileMode.Create);
HtmlConverter.ConvertToPdf(sb.ToString(), fs, props);
还有 CSS:
img {
max-width: 100%;
}
table {
vertical-align: top;
}
td ol {
-webkit-padding-start: 15px;
padding-left: 15px;
}
thead tr {
background: #aaa;
}
tr:nth-child(even) {
background: #eee;
}
【问题讨论】:
-
CSS 文件是否从您尝试转换为 PDF 的 HTML 中引用?
-
不是。我习惯了在其中传递 CSS 文件(或字符串)的其他几个组件。我想通过设置 baseUri 来应用它在该文件夹中找到的任何 CSS。但是现在,多亏了@SamuelD,我看到 .setBaseUri() 只是用来解析它在期望的完整 HTML 页面中找到的任何相对路径。仍然存在一些我认为简单的 CSS 属性(例如图像上的最大宽度)的问题。