【问题标题】:Generate pdf file after retrieving the information [closed]检索信息后生成pdf文件[关闭]
【发布时间】:2011-07-11 18:56:23
【问题描述】:

我需要根据从数据库中获取的数据创建一个 pdf 文件。我必须从数据库中检索数据并将这些数据生成为 pdf 文件。

我想要指点(有用的信息)。

谢谢。

【问题讨论】:

    标签: c# asp.net pdf-generation


    【解决方案1】:

    这是您可以使用的list of Open Source PDF Libraries:

    PDFjet 示例

    PDF pdf = new PDF();
    Font f1 = new Font(pdf, "Helvetica");
    Image image1 = new Image(pdf, "images/eu-map.png");
    Image image2 = new Image(pdf, "images/fruit.jpg");
    Image image3 = new Image(pdf, "images/mt-map.gif");
    // Please note:
    // All font and image objects must be created
    // before the first page object.
    
    
    Page page = new Page(pdf, A4.PORTRAIT);
    
    text.SetText(
            "The map on the right is an embedded GIF image");
    text.SetPosition(90.0, 800);
    text.DrawOn(page);
    
    image3.SetPosition(390, 630);
    image3.ScaleBy(0.5);
    image3.DrawOn(page);
    
    pdf.wrap();
    pdf.save("Example_03.pdf");
    

    SharpPDF 示例

    pdfDocument myDoc = new pdfDocument("TUTORIAL","ME");
    pdfPage myPage = myDoc.addPage();
    myPage.addText("Hello World!",200,450,predefinedFont.csHelvetica,20);
    myDoc.createPDF(@"c:\test.pdf");
    myPage = null;
    myDoc = null; 
    

    Report.NET 示例

    Report report = new Report(new PdfFormatter());
    FontDef fd = new FontDef(report, "Helvetica");
    FontProp fp = new FontPropMM(fd, 25);
    Page page = new Page(report);
    page.AddCenteredMM(80, new RepString(fp, "Hello World!"));
    RT.ViewPDF(report, "HelloWorld.pdf");
    

    iTextSharp 示例

    Document document=new Document();
    PdfWriter.getInstance(document,new FileOutputStream("hello.pdf"));
    document.open();  
    document.add(new Paragraph("Hello Pdf"));
    document.close(); 
    

    即时返回创建的 PDF 文件

    您可以使用 Response.Write 返回二进制数据,请参阅 MSDN on "How To Write Binary Data"

    这是一个关于如何使用Response.WriteFile 为用户提供 PDF 的示例:

    //Set the appropriate ContentType.
    Response.ContentType = "Application/pdf";
    //Get the physical path to the file.
    string FilePath = MapPath("acrobat.pdf");
    //Write the file directly to the HTTP content output stream.
    Response.WriteFile(FilePath);
    Response.End();
    

    【讨论】:

      【解决方案2】:

      您可以为此使用itextsharp

      protected void btnExportPdf_Click(object sender, EventArgs e)
      {
          Response.ContentType = "application/pdf";
          Response.AddHeader("content-disposition", "attachment;filename=BusinessUnit.pdf");
          Response.Cache.SetCacheability(System.Web.HttpCacheability.NoCache);
          StringWriter sw = new StringWriter();
          HtmlTextWriter hw = new HtmlTextWriter(sw);
          GridView grd = new GridView();
          grd.DataSource = yourdatatable.DefaultView//get data from DB in Datatable
          grd.DataBind();
          grd.RenderControl(hw);
          StringReader sr = new StringReader(sw.ToString());
          Document pdfDoc = new Document(PageSize.A2, 8f, 8f, 8f, 8f);
          HTMLWorker htmlparser = new HTMLWorker(pdfDoc);
          PdfWriter.GetInstance(pdfDoc, Response.OutputStream);
          pdfDoc.Open();
          htmlparser.Parse(sr);
          pdfDoc.Close();
          Response.Write(pdfDoc);
          Response.End();
      }
      

      【讨论】:

      猜你喜欢
      • 2010-11-17
      • 2010-10-31
      • 1970-01-01
      • 1970-01-01
      • 2011-03-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多