以下に示すコードを使用して、ライブラリ 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_left
。content_right
Word としてダウンロードすると、WebPage に正確な css で表示されます。ただし、PDF としてダウンロードする場合は、ページ サイズに対してそれぞれ均等な幅content_left
を取ります ( と の両方に50% の幅が割り当てられます)。content_right
content_left
content_right