我正在使用此函数将数据从数据库导出为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();
}
答案 0 :(得分:1)
请查看UnitedStates示例。为简单起见,我不使用数据库而是使用CSV文件。应该很容易调整示例,以便它从数据库接受数据,而不是通过解析CSV。
您需要的关键类是PdfPTable
。例如,如果databaseObject
是您为了存储数据库中的数据而创建的对象(例如记录的内容),则需要以下内容:0
PdfPTable table = new PdfPTable(2);
table.addCell("Id:");
table.addCell(databaseObject.getId());
table.addCell("Name:");
table.addCell(databaseObject.getName());
我发现您在代码中使用HTMLWorker
。这有问题有两个原因:
HTMLWorker
类已过时。它不再受支持。如果您确实希望将XHTML表转换为PDF,则应使用XML Worker,如在这些示例中所做的那样显然,您可以通过许多其他方式解决您的问题。观看this video,您会发现您还可以创建模板(例如参见state.pdf),然后填写此表单:
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();
}
这显示在FillForm示例中。
遗憾的是,由于可以在网上找到大量文档(我只使用了一些示例),因此您选择的代码片段并不接近您想要做的事情。< / p>