我在使用页面设置为信封,横向格式创建.pdf文件时遇到问题。
以下是我在Itextsharp中将asp页面转换为pdf的代码
Response.ContentType = "application/pdf";
Response.AddHeader("content-disposition", "attachment;filename=Receipt.pdf");
Response.Cache.SetCacheability(HttpCacheability.NoCache);
StringWriter sw = new StringWriter();
HtmlTextWriter hw = new HtmlTextWriter(sw);
bind_Data();
this.Page.RenderControl(hw);
StringReader sr = new StringReader(sw.ToString());
Document pdfDoc = new Document(PageSize.A4.Rotate(), 10f, 10f, 100f, 0f);
//here i need to set Pagesize as Envelope.
HTMLWorker htmlparser = new HTMLWorker(pdfDoc);
PdfWriter.GetInstance(pdfDoc, Response.OutputStream);
pdfDoc.Open();
htmlparser.Parse(sr);
pdfDoc.Close();
Response.Write(pdfDoc);
Response.End();
我用谷歌搜索但我无法找到信封大小。如何将页面大小设置为信封,动态横向
提前致谢
答案 0 :(得分:2)
您正在使用此行创建横向格式的A4文档:
Document pdfDoc = new Document(PageSize.A4.Rotate(), 10f, 10f, 100f, 0f);
如果您想以信封格式创建文档,则不应创建A4页面,而应该执行此操作:
Document pdfDoc = new Document(envelope, 10f, 10f, 100f, 0f);
在此行中,envelope
是Rectangle
类型的对象。
没有 信封尺寸。有不同的信封尺寸可供选择:http://www.paper-papers.com/envelope-size-chart.html
例如,如果要创建大小为6-1/4 Commercial Envelope的页面,则需要创建一个尺寸为6 x 3.5英寸的矩形。 PDF中的测量系统不使用英寸,而是使用用户单位。默认情况下,1个用户单位= 1个点,1英寸= 72个点。
因此,您可以像这样定义envelope
变量:
Rectangle envelope = new Rectangle(432, 252);
由于:
6 inch x 72 points = 432 points (the width)
3.5 inch x 252 points = 252 points (the height)
如果您需要其他信封类型,则必须使用该信封格式的尺寸进行数学运算。
答案 1 :(得分:0)
我想通过使用此代码生成多个pdf,但它只生成一个PDF ...然后去捕获块,请解决此问题。
Response.ContentType = "application/pdf";
Response.AddHeader("content-disposition", "attachment;filename=" + begin + ".pdf");
Response.Cache.SetCacheability(HttpCacheability.NoCache);
StringWriter sw = new StringWriter();
HtmlTextWriter hw = new HtmlTextWriter(sw);
Panel1.RenderControl(hw);
StringReader sr = new StringReader(sw.ToString());
Document pdfDoc = new Document(PageSize.A4, 10f, 10f, 100f, 0f);
HTMLWorker htmlparser = new HTMLWorker(pdfDoc);
PdfWriter.GetInstance(pdfDoc, Response.OutputStream);
pdfDoc.Open();
htmlparser.Parse(sr);
pdfDoc.Close();
Response.Write(pdfDoc);
Response.End();