使用c#mvc中的itextsharp设置pdf中表格的列宽

使用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%">

我有一个MVC视图中的表

<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();