使用itextsharp将报告转换为pdf

时间:2013-11-05 19:16:30

标签: c# asp.net pdf-generation itextsharp

我试图将我的网站转换为pdf,我的网站用于报告,在一个页面上输入信息,在另一个页面上你通过会话得到它,网站上有图片和css是否重要。

我试图使用itextsharp,但它对我来说太复杂了。

我尝试使用这里的一些例子,但它们都不是我需要的,所以它不起作用。 http://simpledotnetsolutions.wordpress.com/2012/04/08/itextsharp-few-c-examples/

任何人都可以向我解释我需要做什么吗?

我也试过这段代码,但它不起作用,有人告诉我,我需要使用xmlworker,但我并没有真正理解如何(以及它是否会起作用)

Response.ContentType = "application/pdf";
Response.AddHeader("content-disposition", "attachment;filename=TestPage.pdf");
Response.Cache.SetCacheability(HttpCacheability.NoCache);
StringWriter sw = new StringWriter();
HtmlTextWriter hw = new HtmlTextWriter(sw);
this.Page.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();

谢谢

如果有一个简单的解决方案需要花钱,我可以支付费用。

1 个答案:

答案 0 :(得分:0)

尝试使用Scryber,这是商业用途的付费,但您可以使用免费版本(它会在生成的.pdf文件上添加水印)进行原型设计。

.pdf文件结构和样式可在.xml中配置,因此非常简单灵活。

定义结构的问题

<data:ForEach select="rss/channel" datasource-id="BBCRss" >
         <Template>
           <pdf:Div style:class="heading" >
             <data:If test="string-length(image/url) &gt; 0" >
               <Template>
                 <pdf:Link action="Uri" file="{xpath:image/link}" new-window="true" alt="{xpath:image/title}" >
                   <Content>
                     <pdf:Image src="{xpath:image/url}" style:width="{xpath:image/width}" style:padding="10" />
                   </Content>
                 </pdf:Link>
               </Template>
             </data:If>
               <pdf:H1 style:class="red-text" text="{xpath:title}"></pdf:H1>
               <pdf:Label text="{xpath:description}" /><BR/>
               Date: <pdf:Label text="{xpath:lastBuildDate}" />
           </pdf:Div>

           <pdf:Div style:class="content" >            
             <data:ForEach select="item" >
               <Template>
                 <pdf:Div style:class="rss-item red-underline" >
                   <pdf:Div style:class="rss-item-data" >
                     <pdf:H2 style:class="red-text" text="{xpath:title}" ></pdf:H2>
                     <pdf:Label text="{xpath:description}" />
                   </pdf:Div>
                 </pdf:Div>

          </Template>
 </data:ForEach>

和风格

<style:Style applied-type="pdf:Div" applied-class="content" >
   <style:Columns count="2" alley-width="20pt"/>
   <style:Font size="12pt" bold="false" italic="false"  />
 </style:Style>

Here你会找到示例项目和一些解释。 此外,Scryber比iTextSharp更好地记录。