我想从数据库值生成pdf文件 [英] i want to generate pdf file from database value
本文介绍了我想从数据库值生成pdf文件的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
您好
我想从ASP.Net和c#中的数据库中获取数据来创建PDF文件,我也想在pdf文件中格式化数据。并且还希望通过一些pdf查看器控件将生成的pdf显示到网页。
提前感谢。
有一个美好的一天。
Hi
I Want To Create A PDF File From Data Fetch From The Database in ASP.Net and c#, i also would like to have formating data in pdf file. and also want to show the generated pdf to web page by some pdf viewer control.
thanks in advance.
have a nice day.
推荐答案
您可以使用itextsharp来达到此目的。看看这个:
使用iTextSharp创建PDF文档 [ ^ ]
you can use itextsharp for this purpose. have a look at this:
Creating PDF documents with iTextSharp[^]
http://amin-sayed.blogspot.in/2008/10/in-this-article-ill-demonstrate-how-to.html [ ^ ]
< a href =http://www.aspdotnet-suresh.com/2011/04/how-to-export-gridview-data-to-pdf.html> http://www.aspdotnet-suresh.com/2011 /04/how-to-export-gridview-data-to-pdf.html [ ^ ]
你可以数据通过以下代码将表数据转换为PDF并设置PDF格式:
You can datatable data to PDF and set PDF format by try below code:
//Set table title
PdfBrush brush1 = PdfBrushes.Black;
PdfTrueTypeFont font1 = new PdfTrueTypeFont(new Font("Arial", 16f, FontStyle.Bold));
PdfStringFormat format1 = new PdfStringFormat(PdfTextAlignment.Center);
page.Canvas.DrawString("Country List", font1, brush1, page.Canvas.ClientSize.Width / 2, y, format1);
y = y + font1.MeasureString("Country List", format1).Height;
y = y + 5;
//create data table
PdfTable table = new PdfTable();
table.Style.CellPadding = 2;
table.Style.BorderPen = new PdfPen(brush1, 0.75f);
table.Style.DefaultStyle.BackgroundBrush = PdfBrushes.SkyBlue;
table.Style.DefaultStyle.Font = new PdfTrueTypeFont(new Font("Arial", 10f));
table.Style.AlternateStyle = new PdfCellStyle();
table.Style.AlternateStyle.BackgroundBrush = PdfBrushes.LightYellow;
table.Style.AlternateStyle.Font = new PdfTrueTypeFont(new Font("Arial", 10f));
table.Style.HeaderSource = PdfHeaderSource.ColumnCaptions;
table.Style.HeaderStyle.BackgroundBrush = PdfBrushes.CadetBlue;
table.Style.HeaderStyle.Font = new PdfTrueTypeFont(new Font("Arial", 11f, FontStyle.Bold));
table.Style.HeaderStyle.StringFormat = new PdfStringFormat(PdfTextAlignment.Center);
table.Style.ShowHeader = true;
using (OleDbConnection conn = new OleDbConnection())
{
conn.ConnectionString = @"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=demo.mdb";
OleDbCommand command = new OleDbCommand();
command.CommandText
= " select Name, " as Flag, Capital, Continent, Area, Population, Flag as FlagData from country ";
command.Connection = conn;
using (OleDbDataAdapter dataAdapter = new OleDbDataAdapter(command))
{
DataTable dataTable = new DataTable();
dataAdapter.Fill(dataTable);
dataTable.Columns.Add(new DataColumn("FlagImage", typeof(PdfImage)));
table.DataSourceType = PdfTableDataSourceType.TableDirect;
table.DataSource = dataTable;
}
}
float width
= page.Canvas.ClientSize.Width
– (table.Columns.Count + 1) * table.Style.BorderPen.Width;
table.Columns[0].Width = width * 0.21f;
table.Columns[0].StringFormat
= new PdfStringFormat(PdfTextAlignment.Left, PdfVerticalAlignment.Middle);
table.Columns[1].Width = width * 0.10f;
table.Columns[1].StringFormat
= new PdfStringFormat(PdfTextAlignment.Left, PdfVerticalAlignment.Middle);
table.Columns[2].Width = width * 0.19f;
table.Columns[2].StringFormat
= new PdfStringFormat(PdfTextAlignment.Left, PdfVerticalAlignment.Middle);
table.Columns[3].Width = width * 0.21f;
table.Columns[3].StringFormat
= new PdfStringFormat(PdfTextAlignment.Left, PdfVerticalAlignment.Middle);
table.Columns[4].Width = width * 0.12f;
table.Columns[4].StringFormat
= new PdfStringFormat(PdfTextAlignment.Right, PdfVerticalAlignment.Middle);
table.Columns[5].Width = width * 0.17f;
table.Columns[5].StringFormat
= new PdfStringFormat(PdfTextAlignment.Right, PdfVerticalAlignment.Middle);
table.BeginRowLayout += new BeginRowLayoutEventHandler(table_BeginRowLayout);
table.EndCellLayout += new EndCellLayoutEventHandler(table_EndCellLayout);
PdfTableLayoutFormat tableLayout = new PdfTableLayoutFormat();
tableLayout.Break = PdfLayoutBreakType.FitElement;
tableLayout.Layout = PdfLayoutType.Paginate;
tableLayout.EndColumnIndex = table.Columns.Count – 2 – 1;
PdfLayoutResult result = table.Draw(page, new PointF(0, y), tableLayout);
y = y + result.Bounds.Height + 5;
PdfBrush brush2 = PdfBrushes.Gray;
PdfTrueTypeFont font2 = new PdfTrueTypeFont(new Font("Arial", 9f));
page.Canvas.DrawString(String.Format("* {0} countries in the list.", table.Rows.Count),
font2, brush2, 5, y);
然后,使用PDF查看器在您的aspx页面上显示它。请注意上面的代码需要第三方PDF库但不需要Adobe Acrobat,您可以尝试一下: PDF库 [ ^ 祝你好运!
这篇关于我想从数据库值生成pdf文件的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文