使用iTextSharp将html转换为pdf
public static MemoryStream CreatePdfFromHtml(
string html, List<Attachment> attachments)
{
MemoryStream msOutput = new MemoryStream();
using (TextReader reader = new StringReader(html))
using (Document document = new Document())
{
PdfWriter writer = PdfWriter.GetInstance(document, msOutput);
document.Open();
foreach (var a in attachments)
{
var image = iTextSharp.text.Image.GetInstance(a.File);
document.Add(image);
}
XMLWorkerHelper.GetInstance().ParseXHtml(writer, document, reader);
writer.CloseStream = false;
document.Close();
msOutput.Position = 0;
return msOutput;
}
}
Run Code Online (Sandbox Code Playgroud)
html以这种方式包含几个嵌入的图像.这种方法是首选,因为相同的HTML是通过电子邮件发送LinkedResources的AlternateView.
foreach (var a in attachments)
{
//not production code
html += string.Format("<img src=\"cid:{0}\"></img>", a.Id.ToString());
}
Run Code Online (Sandbox Code Playgroud)
但是,当生成pdf时,无法将图像ID与html标记的src部分链接起来img.最终,pdf包含顶部的所有图像,然后是<img src...忽略的HTML .
我已经阅读了使用Paragraphs或ImageAbsolutePosition的几种可能的解决方案,但它们似乎不适合.
我之前发现,当您在 Itextsharp html pdf 生成中使用相对路径时存在问题,正如您提到的,您可以使用 ImageAbsolutePosition ,这将要求您使用段落来正确定位图像,或者如果您仍然想使用 html,则必须给出直接路径,例如
html += string.Format("<img src=https://www.mysite.com/"+a.Id.ToString()+".imageext"></img>");
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
22200 次 |
| 最近记录: |