1

以下に示すコードを使用して、ライブラリ iTextSharp を使用して Web ページを pdf にエクスポートしています。Web ページは 2 つの列に分割され、1 つの列の幅は 90% で、もう 1 つの列の幅は 10% です。ただし、PDF としてダウンロードすると、両方の列に同じ幅が割り当てられます。ダウンロードした PDF では、各列の幅が 50% になります。

Response.ContentType = "application/pdf";
Response.AddHeader("content-disposition", "attachment;filename=ResumeTemplate.pdf");
Response.Cache.SetCacheability(HttpCacheability.NoCache);
StringWriter sw = new StringWriter();
HtmlTextWriter hw = new HtmlTextWriter(sw);
wrapper.RenderControl(hw);

Document pdfDoc = new Document(PageSize.A4, 10f, 10f, 100f, 0f);

PdfWriter.GetInstance(pdfDoc, Response.OutputStream);
pdfDoc.Open();
StringReader sr = new StringReader(sw.ToString());

HTMLWorker htmlparser = new HTMLWorker(pdfDoc);

htmlparser.Parse(sr);
pdfDoc.Close();
Response.Write(pdfDoc);
Response.End();

以下は私のHTMLコードです:

<table border="0" width="100%" id="maintable" runat="server" >
    <tr>
        <td>
            <div id="content_left" runat="server"  style="margin-right:10px; float:left;vertical-align:top;width:90%" >
                </td>
                <td>
                    <div id="content_right" runat="server" style="vertical-align:top;width:10%">
                    </div>
                    </div>
                </td>
            </tr>
        </table>

divは、指定された幅で正確にページに表示されますcontent_leftcontent_rightWord としてダウンロードすると、WebPage に正確な css で表示されます。ただし、PDF としてダウンロードする場合は、ページ サイズに対してそれぞれ均等な幅content_leftを取ります ( と の両方に50% の幅が割り当てられます)。content_rightcontent_leftcontent_right

4

1 に答える 1

2

コードでは、div は親要素のサイズ (td) の 90% と 10% です。テーブルは、レイアウトを定義するのではなく、テーブルを表示するように設計されているため、セル サイズはバランスが取れています。td は 50% - 50% または 90% - 10% ではありません。ただし、内容に応じてサイズを調整してください。

以下のスニペットでは、td のサイズを定義しています。前後のフィドルを参照してください:http://jsfiddle.net/allcaps/tEGB8/1/

<table border="1" width="100%">
    <tr>
        <td width="90%">
            <div id="content_left" style="background-color:red;">Foo</div>
        </td>
        <td width="10%">
            <div id="content_right" style="background-color:blue;">Foo</div>
        </td>
    </tr>
</table>

アップデート

iTextSharp は、テーブルの列/セルの幅属性を無視します。このスレッドで提案されているようにサイズを設定する必要があります: itextsharp pdf 作成でセル幅を設定する方法

Dim intTblWidth() As Integer = {12, 10, 26, 10}
于 2013-10-03T15:13:32.330 に答える