我正在使用下面显示的代码片段使用库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_left
和content_right
在页面中以指定的宽度显示。当它以Word格式下载时,它会在WebPage中显示精确的css。但是,当以PDF格式下载时,content_left
和content_right
的页面大小相等(分配给content_left
和content_right
的宽度均为50%)。
答案 0 :(得分: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忽略表格列/单元格的宽度属性。您必须设置此线程中建议的大小: How to set the cell width in itextsharp pdf creation
Dim intTblWidth() As Integer = {12, 10, 26, 10}