使用c#mvc中的itextsharp设置pdf中表格的列宽
我有一个MVC视图中的表使用c#mvc中的itextsharp设置pdf中表格的列宽,c#,css,asp.net-mvc,pdf,itextsharp,C#,Css,Asp.net Mvc,Pdf,Itextsharp,我有一个MVC视图中的表 <table class="table" border="1"> <tr> <th width="25%"> <span><b>Statement Id</b></span> </th> <th width ="75%">
<table class="table" border="1">
<tr>
<th width="25%">
<span><b>Statement Id</b></span>
</th>
<th width ="75%">
<span><b>Statements</b></span>
</th>
</tr>
<tr>
<td width="25%">
<span><b>1</b></span>
</td>
<td width ="75%">
<span><b>Statement</b></span>
</td>
</tr>
</table>
PdfPTable headertable=newpdfptable(newfloat[]{25,50,25});
在您的计算中,100%
HTMLWorker
是iText中不再维护的旧HTML解析器,它不支持CSS。相反,我们鼓励您切换到XMLWorker
。但是,在您的情况下,您可以尝试在特定的th
标记上设置HTML属性width
。如果不起作用,请尝试将您的th
标记更改为td
标记。我已经这样做了,但它不起作用。我可以在我的代码中将HTMLWorker
更改为XMLWorker
吗?我刚刚尝试了HTMLWorker
的基于百分比的宽度,效果很好。参见此了解XMLWorker
您能用您尝试的更新上面的代码吗?
string htmlToConvert = RenderViewAsString("detailsPdfGenerate", row);
pdfPage page = new pdfPage();
iTextSharp.text.Document document = new iTextSharp.text.Document(iTextSharp.text.PageSize.LETTER);
document.SetMargins(100f,50f,70f,40f);
MemoryStream memStream = new MemoryStream();
iTextSharp.text.pdf.PdfWriter pdfWriter=iTextSharp.text.pdf.PdfWriter.GetInstance(document, memStream);
pdfWriter.PageEvent = page;
document.Open();
iTextSharp.text.html.simpleparser.StyleSheet styles = new iTextSharp.text.html.simpleparser.StyleSheet();
iTextSharp.text.html.simpleparser.HTMLWorker hw = new iTextSharp.text.html.simpleparser.HTMLWorker(document);
hw.Parse(new StringReader(htmlToConvert));
document.Close();