ITextSharp HTML到PDF转换CSS图像转换后不显示
本文关键字:转换 显示 图像 CSS PDF ITextSharp HTML | 更新日期: 2023-09-27 18:06:09
我正在尝试将HTML与CSS转换为Pdf,并且已经成功。但是当我尝试从CSS中添加图像到div时转换后的Pdf不会显示图像
这是我的代码
Pdf内容类型
使用系统;使用先;使用System.Web.Mvc;
namespace MvcApplication1.Helpers
{
public class PdfContent : ActionResult
{
public MemoryStream MemoryStream { get; set; }
public string FileName { get; set; }
public override void ExecuteResult(ControllerContext context)
{
if (context == null)
{
throw new ArgumentNullException("context");
}
var response = context.HttpContext.Response;
response.ContentType = "pdf/application";
response.AddHeader("content-disposition", "attachment;filename=" + FileName + ".pdf");
response.OutputStream.Write(MemoryStream.GetBuffer(), 0, MemoryStream.GetBuffer().Length);
}
}
}
调用Pdf的动作
public ActionResult GeneratePdf()
{
var cssText = System.IO.File.ReadAllText(@"C:'Users'sansa'Desktop'Ground Operations'HTMLResources'grace.css");
var htmlText = System.IO.File.ReadAllText(@"C:'Users'sansa'Desktop'Ground Operations'HTMLResources'grace.html");
var cssArray = cssText.Trim().Split('}');
var cssClassesString = string.Join("} ", cssArray);
var memoryStream = new MemoryStream();
var document = new Document();
var writer = PdfWriter.GetInstance(document, memoryStream);
document.Open();
using (var cssMemoryStream = new MemoryStream(System.Text.Encoding.UTF8.GetBytes(cssClassesString)))
{
using (var htmlMemoryStream = new MemoryStream(System.Text.Encoding.UTF8.GetBytes(htmlText)))
{
XMLWorkerHelper.GetInstance().ParseXHtml(writer, document, htmlMemoryStream, cssMemoryStream);
}
}
document.Close();
var pdfContent = new PdfContent
{
MemoryStream = memoryStream,
FileName = "SomeName"
};
return pdfContent;
}
CSS类
.main_div{background-color:#F8F8F8; vertical-align:center; z-index:1000000; border-width:1px; border-style:solid ;border-radius: 2px;border-color: #E0E0E0; width:400px; height:200px}
.text_one{color: #003300;}
.text_two{color: #0000ca;}
.text_three{color: #e40000;}
.tbl_page{
margin-top: 5px;
color: black;
background-color: cornsilk;
display: block;
border-style: solid;
border-color: wheat;
border-width: 1px;;
border-radius: 5px;
font-family: "Times New Roman", Times, serif;
font-size: 12px;
white-space: normal;
line-height: normal;
}
.tbl_cell{
background-color: honeydew;
}
td, th {
display: table-cell;
}
.tbr_raw{
background-color: #66CCFF;
text-align: center;
}
.image_div_background{
background-image: url('violin-clip-art-violin-clip-art-1.jpg');
height: 400px; width: 400px;
}
这段代码将生成一个干净的HTML到Pdf转换除了它不会显示应用于转换文件中的div背景的图像
我也试图通过CSS将图像分配给div,但不工作,所以当我试图在div标签内添加带有scr属性的img标签时,它将为我工作
试试这个
<div class="image_div_background">
<img scr="www.yourDomineName.com/violin-clip-art-violin-clip-art-1.jpg"/>
<div>
希望它对你有用