4

ボタンをクリックすると、HTMLファイルを読み取ってPDFに変換する必要があります。PDFは問題なく生成されています。ただし、PDFに変換すると、テーブルの列の幅は均等に分散されます。ただし、テーブルの合計サイズ(540)の70%を占めるには、テーブルの最初の列が必要です。

これどうやってするの?

Template.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列のテーブルの5のcolspanは、テーブルの50%のように扱う必要があります。

私は値を少しいじる必要があることに気づきましたが、うまくいけば、それはあなたを正しい道に導くでしょう。

于 2012-11-27T04:13:47.530 に答える
5

<td width="10%"> ヘッダーまたは最初の行だけでなく、各行のtdのtd幅をパーセンテージで設定する必要があります。

于 2014-06-07T04:56:17.363 に答える
5

colspanプロパティを使用します。たとえば、2つのセルが10%と90%として定義されている場合。colspan=1と9をそれぞれ設定します。それはトリックを行います。

于 2014-09-16T15:49:05.573 に答える
3

width = "70%"を設定すると、機能するはずです。

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

そのdosentの仕事。テーブルのセル幅を設定する方法はありません。セル幅を変更するために通常とは異なるコードを使用しています。

このサンプルコードを使用すると、すべてのテーブルとすべての行を検索できます。行に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 に答える