我正在尝试将带有CSS的HTML转换为Pdf并且它已成功。但是,一旦我尝试将图像添加到CSS的div中,转换的Pdf将不会显示图像
这是我的代码
对于Pdf内容类型
使用System; 使用System.IO; 使用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背景的图像
答案 0 :(得分:1)
我也尝试通过CSS将图像分配给div但是没有工作,所以当我尝试在div标签中添加带scr属性的img标签时它会对我有效
试试这个
{{1}}
希望完全适合你