将135列的数据表导出为pdf时,它显示方框而不是数据
以下方法用于导出为pdf,但如果列数超过100而生成的pdf未显示数据,则显示方框。
public void ExportToPdf(string ReportName)
{
DataTable dt;
if (tabmain.ActiveTabIndex == 0)
{
dt = GetQueryData(IsSessionSource, 0, 0).DataSet.Tables[0];
}
else
{
dt = GetQueryData(IsSessionSource, 0, 0).DataSet.Tables[1];
}
Document document = new Document();
//PdfWriter writer = PdfWriter.GetInstance(document, new FileStream(filePath, FileMode.Create));
PdfWriter writer = PdfWriter.GetInstance(document, Response.OutputStream);
document.Open();
iTextSharp.text.Font font5 = iTextSharp.text.FontFactory.GetFont(FontFactory.HELVETICA, 5);
iTextSharp.text.Font myFont = iTextSharp.text.FontFactory.GetFont(FontFactory.TIMES_BOLD, 8, BaseColor.BLUE);
PdfPTable table = new PdfPTable(dt.Columns.Count);
PdfPRow row = null;
table.WidthPercentage = 100;
int iCol = 0;
string colname = "";
PdfPCell cell = new PdfPCell(new Phrase("Products"));
cell.Colspan = dt.Columns.Count;
foreach (DataColumn c in dt.Columns)
{
table.AddCell(new Phrase(c.ColumnName, myFont));
}
int i = dt.Columns.Count;
foreach (DataRow r in dt.Rows)
{
if (dt.Rows.Count > 0)
{
for (int j = 0; j < i; j++)
{
table.AddCell(new Phrase(r[j].ToString(), font5));
}
}
}
document.Add(table);
document.Close();
Response.ContentType = "application/pdf";
Response.AddHeader("content-disposition", "attachment; filename= " + ReportName + ".pdf");
Response.End();
}
答案 0 :(得分:1)
我怀疑你只是使用的字体太小而无法放在页面上。单页上的东西太多了。 我能想到做你想做的最简单的方法:将数据表发送到excel文件,然后手动保存为pdf。
如果这不是一个选项,您可以尝试更改pdf的页面大小。这里有一篇不错的文章:
在上面的文章中,它引用了以下内容:
Rectangle method:
Document document = new Document(new Rectangle(200f, 300f));
PageSize method:
Document document = new Document(PageSize.A4, 20f, 20f, 20f, 20f);
PdfWriter.GetInstance(document, new FileStream(filename, FileMode.Create));
document.Open();
document.Add(new Paragraph("Welcome to dotnetfox"));
document.Close();
希望有所帮助。欢呼声。