我正在尝试iText7并尝试拼凑如何做事。似乎我可以放入一个基本URI来获取外部资源,我假设如果找到.css它将应用它?我有一个特殊的情况,我更容易将CSS作为字符串保存在内存中。看起来很奇怪,我可以使用HtmlConverter.convertToPdf()并将HTML作为字符串传递而不是CSS。
作为第二个问题,如果在该基础URI上找到多个CSS文件会发生什么?
最后(抱歉转储),如果HTML包含图像的FQDN URL,我假设/希望它会直接拉出图像?换句话说,我希望我不必将这些图像存储/写入指定的基URI?
感谢。
更新:我整理了一个快速演示。我发现将下载具有完整网址的图片。
但是,它似乎没有加载我指定的文件夹中的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;
}
答案 0 :(得分:0)
我正在尝试iText7并尝试拼凑如何做事。似乎我可以放入一个基本URI来获取外部资源,我假设如果找到.css它将应用它?我有一个特殊的情况,我更容易将CSS作为字符串保存在内存中。看起来很奇怪,我可以使用HtmlConverter.convertToPdf()并将HTML作为字符串传递而不是CSS。
我花了很多时间为这个问题找到了解决方案。一切似乎都是正确的,我甚至问了一个关于CSS文件使用的支持问题。与itext5(itextsharp)相反,itext7无法管理其中包含空格的url。
所以在这样的路径中进行本地测试: c:/项目/项目/名称/ wwwroot / 的路径不起作用(注意空格)
我一开始并没有注意到这一点,因为我以编程方式将我的路径生成到我的css文件夹中:
var basepath = env.ContentRootPath + "\\wwwroot\\pdfcss\\";
将其更改为:
var basepath = @"G:\some-other\directory\pdfcss\";
现在知道这一点我可以解决你的第二个问题:
作为第二个问题,如果在该基础URI上找到多个CSS文件会发生什么?
没什么,你仍然需要在head元素中将链接插入你的html中。如果没有添加,你将没有任何CSS!
确实:
最后(抱歉转储),如果HTML包含图像的FQDN URL,我假设/希望它会直接拉出图像?换句话说,我希望我不必将这些图像存储/写入指定的基URI?
您可以执行以下操作:
<img id="logo"
src="https://xxxxx.blob.core.windows.net/path/to-image-
logo.png" />