Asp.net mvc 图像的样式被iTextSharp忽略

Asp.net mvc 图像的样式被iTextSharp忽略,asp.net-mvc,image,razor,itextsharp,Asp.net Mvc,Image,Razor,Itextsharp,.cshtml文件中的图像: <img src="~/Content/images/imghead.png" style=" border:4px solid #ffffff; border-radius:10px; box-shadow: 2px 2px #f2f2f2; "/> 这不是MVC的工作方式,您的工作方式更像Asp.NETWebForm风格 为此使用css,或者如果需要动态更改,请使用ViewBag,例如未测试: 行动 public ActionResult pdfO

.cshtml文件中的图像:

<img src="~/Content/images/imghead.png" style=" border:4px solid #ffffff; border-radius:10px; box-shadow: 2px 2px #f2f2f2; "/>

这不是MVC的工作方式,您的工作方式更像Asp.NETWebForm风格

为此使用css,或者如果需要动态更改,请使用ViewBag,例如未测试:

行动

public ActionResult pdfOutput(string id, string pid)
{
    ViewBag.ImgHeadBorder=iTextSharp.text.Rectangle.BOX;
}
看法


这不是MVC的工作原理。您不想在控制器中设置视图元素的任何属性。使用CSS.itextSharp忽略样式我不理解视图和itextSharp之间的关系。请提供更多详细信息。iTextSharp不处理所有CSS属性,并且边界半径是不受支持的。看,不简单。您需要首先捕获border radius属性,可能是通过自定义标记处理器。然后在渲染时,您需要通过图像遮罩或PDF剪辑遮罩对图像应用遮罩。两者都不是微不足道的。
using (var pdfDocument = new Document(PageSize.A3, HorizontalMargin, HorizontalMargin, 110, 30))
{
    PdfWriter pdfWriter = PdfWriter.GetInstance(pdfDocument, outputMemoryStream);
    pdfWriter.CloseStream = false;
    pdfWriter.PageEvent = new PrintHeaderFooter();
    pdfDocument.Open();
    using (var htmlViewReader = new StringReader())
    {       
         XMLWorkerHelper.GetInstance().ParseXHtml(pdfWriter, pdfDocument, htmlViewReader);
    }
}
public ActionResult pdfOutput(string id, string pid)
{
    ViewBag.ImgHeadBorder=iTextSharp.text.Rectangle.BOX;
}
@if(ViewBag.ImgHeadBorder != null)
{
<img id="imgHead" src="~/Content/images/imghead.png" style="border:@ViewBag.ImgHeadBorder"/>
}