下载的 PDF 宽度问题

本文关键字:问题 PDF 下载 | 更新日期: 2023-09-27 18:33:48

我正在使用下面显示的代码段,使用库iTextSharp将我的网页导出为pdf。网页分为两列,一列宽度为90%,另一列宽度为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_right在页面中以指定的宽度精确显示。当它被下载为Word时,它会在网页中以精确的css显示。但是,当下载为 PDF 时,content_leftcontent_right 的宽度分别与页面大小相等(分配给content_leftcontent_right的宽度为 50%)。

下载的 PDF 宽度问题

在您的代码中,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}