4

单击按钮时,我需要阅读 HTML 文件并将其转换为 PDF。PDF 生成没有任何问题。但是当转换为 PDF 时,表格中的列宽是均匀分布的。但我需要表格的第一列占表格总大小的 70% (540)

我怎样才能做到这一点?

模板.html:

 <table runat="server" id="header" border="3" width="540">
        <tr>
            <td style="width:70%; text-align: center; font-weight: bold;">
                <strong>Test Specification </strong>
            </td>
            <td style="width:10%; text-align: center; font-weight: bold;">
                <strong>GST </strong>
            </td>
            <td style="width:10%; text-align: center; font-weight: bold;">
                <strong>Service </strong>
            </td>
            <td style="width:10%; text-align: center; font-weight: bold;">
                <strong>Amount </strong>
            </td>
        </tr>
    </table>

按钮单击以将 HTML 转换为 PDF:

    protected void Button1_Click(object sender, EventArgs e)
        {
            String htmlText = System.IO.File.ReadAllText(Request.PhysicalApplicationPath + "\\Template.htm");
      Document document = new Document();
            PdfWriter.GetInstance(document, new FileStream(Request.PhysicalApplicationPath + DateTime.Now.ToString("ddMMyyyy") + "_" + DateTime.Now.ToString("HHmmss tt") + ".pdf", FileMode.Create));
            document.Open();
      iTextSharp.text.html.simpleparser.HTMLWorker hw = new iTextSharp.text.html.simpleparser.HTMLWorker(document);
            hw.Parse(new StringReader(HTML));
            document.Close();
            StringBuilder sb = new StringBuilder();
            sb.Append(HTML);
    }
4

5 回答 5

6

您需要使用 colspan 和 LoadTagStyle 的组合,这两者都超出了我在此文本框中可以容纳的范围。为简化起见,iTextSharp 将总列数视为表的 100%,因此 10 列的表上的 colspan 为 5 应视为表的 50%。

我发现我必须稍微调整一下这些值,但希望这会引导你走上正确的道路。

于 2012-11-27T04:13:47.530 回答
5

使用 colspan 属性。例如,如果您有两个单元格定义为 10% 和 90%。分别设置 colspan = 1 和 9。它成功了。

于 2014-09-16T15:49:05.573 回答
5

您必须<td width="10%"> 在每行中为 td 设置 td 宽度百分比,而不仅仅是在标题或第一行中。

于 2014-06-07T04:56:17.363 回答
3

设置宽度=“70%”,它应该可以工作。

<td width="70%">
于 2012-11-27T05:23:55.510 回答
0

它的剂量工作。没有任何方法可以设置表格单元格的宽度。我使用不寻常的代码来更改单元格宽度。

使用此示例代码,您可以找到所有表并找到所有行。如果行有 2 列,则单元格宽度设置为 400 和 100!

*您必须更改项目的代码!

            foreach (var htmlElement in parsedHtmlElements)
            {
                if (htmlElement is PdfPTable)
                {
                    var table = (PdfPTable)htmlElement;
                    foreach (var row in table.Rows)
                    {
                        PdfPCell[] pdfCellTemp = row.GetCells();
                        if (pdfCellTemp.Length == 2)
                        {
                            float[] w = { 400, 100 };
                            row.SetWidths(w);
                        }
                    }
                }
                pdfCell.AddElement(htmlElement);
            }
于 2013-02-05T13:55:52.343 回答