我需要以特定格式将数据导出为pdf

我需要以特定格式将数据导出为pdf,pdf,export,itext,Pdf,Export,Itext,我正在使用此函数将数据从数据库导出到pdf,但其输出类似于表。。。我想以如下格式导出特定行: id : Name : Gender : Salary : 我该怎么做。。 提前谢谢 public void ExportToPDF() { SqlCommand cmd = new SqlCommand("SELECT EmployeeId , EmployeeName , EmployeeGender , EmployeeSalary , isActive FROM

我正在使用此函数将数据从数据库导出到pdf,但其输出类似于表。。。我想以如下格式导出特定行:

id : 
Name : 
Gender :
Salary : 
我该怎么做。。 提前谢谢

public void ExportToPDF()
    {
        SqlCommand cmd = new SqlCommand("SELECT EmployeeId , EmployeeName , EmployeeGender , EmployeeSalary , isActive FROM Employee", con);
        DataSet ds = new DataSet();
        SqlDataAdapter da = new SqlDataAdapter(cmd);
        da.Fill(ds);
        GridView gridview1 = new GridView();
        gridview1.AllowPaging = false;
        gridview1.DataSource = ds;
        gridview1.DataBind();

        Response.ContentType = "application/pdf";
        Response.AddHeader("content-disposition", "attachment;filename=DataSet.pdf");
        Response.Cache.SetCacheability(HttpCacheability.NoCache);
        StringWriter sw = new StringWriter();
        HtmlTextWriter hw = new HtmlTextWriter(sw);
        gridview1.RenderControl(hw);
        StringReader sr = new StringReader(sw.ToString());
        Document pdfDoc = new Document(PageSize.A4 , 10f , 10f , 10f , 0f);
        HTMLWorker htmlparser = new HTMLWorker(pdfDoc);
        PdfWriter.GetInstance(pdfDoc , Response.OutputStream);
        pdfDoc.Open();
        htmlparser.Parse(sr);
        pdfDoc.Close();
        Response.Write(pdfDoc);
        Response.End();
    }
请看一看这个例子。为了简单起见,我不使用数据库,而是使用CSV文件。修改示例应该很容易,这样它就可以从数据库中接受It数据,而不是解析CSV

您需要的关键类是
PdfPTable
。例如,如果
databaseObject
是您为存储数据库中的数据(例如记录的内容)而创建的对象,则需要如下内容:0

PdfPTable table = new PdfPTable(2);
table.addCell("Id:");
table.addCell(databaseObject.getId());
table.addCell("Name:");
table.addCell(databaseObject.getName());
我看到您正在代码中使用
HTMLWorker
。这是有问题的,原因有二:

  • 这意味着首先要将所有数据转换为XHTML。这会占用处理时间,如果您不需要XHTML,那么这会浪费时间
  • HTMLWorker
    类已过时。它不再受支持。如果您确实希望将XHTML表转换为PDF,那么应该像在这些示例中一样使用XML Worker
  • 显然,你可以用很多其他的方法来解决你的问题。仔细观察,您会发现您还可以创建一个模板(例如,请参阅),然后按如下方式填写此表单:

    public void manipulatePdf(String src, String dest) throws DocumentException, IOException {
        PdfReader reader = new PdfReader(src);
        PdfStamper stamper = new PdfStamper(reader,
                new FileOutputStream(dest));
        AcroFields fields = stamper.getAcroFields();
        fields.setField("name", "CALIFORNIA");
        fields.setField("abbr", "CA");
        fields.setField("capital", "Sacramento");
        fields.setField("city", "Los Angeles");
        fields.setField("population", "36,961,664");
        fields.setField("surface", "163,707");
        fields.setField("timezone1", "PT (UTC-8)");
        fields.setField("timezone2", "-");
        fields.setField("dst", "YES");
        stamper.close();
        reader.close();
    }
    
    这在示例中显示


    遗憾的是,网上有大量的文档(我只举了几个例子),您选择的代码片段与您想做的事情相差甚远。

    将您的数据转换为html,这样您也可以将相同的布局转换为PDF。有许多不同的方法可以解决此问题@MohdSadiqGaur,但首先将数据转换为HTML,然后使用
    HTMLWorker
    创建PDF可能是最糟糕的选择
    dest
    是结果PDF的路径。有很多文档,请阅读!