使用 Syncfusion组件 导出pdf文档
2011-06-10 10:28
375 查看
使用 Syncfusion组件
using
Syncfusion.Pdf;
using
Syncfusion.Pdf.Graphics;
using
Syncfusion.Pdf.Interactive;
using
Syncfusion.HtmlConverter;
using
Syncfusion.Pdf.HtmlToPdf;
public
void GeneratePDFEPFullBak5(List<string> arrURL, string FileName, bool OpenInBrowser,string footerText, bool bFooter, bool bPageNumber)
{
//PdfLoadedDocumentLinkAnnotation
string strResult = string.Empty;
//pdf document
PdfDocument pdfDoc = default(PdfDocument);
pdfDoc =
new PdfDocument();
//Add PDF Document Settings
//set margin
pdfDoc.PageSettings.SetMargins(leftMargin, topMargin,rightMargin, bottomMargin);
//set page orientation
pdfDoc.PageSettings.Orientation =
PdfPageOrientation.Portrait;
//set rotation
pdfDoc.PageSettings.Rotate =
PdfPageRotateAngle.RotateAngle0;
//set width
PdfUnitConvertor convertor = new PdfUnitConvertor();
//set width
float width = convertor.ConvertToPixels(
pdfDoc.PageSettings.Width - leftMargin - rightMargin,
PdfGraphicsUnit.Point);
//set height
float
height = convertor.ConvertToPixels(
pdfDoc.PageSettings.Height,
PdfGraphicsUnit.Point);
//set page height
int pageHeight = Convert
.ToInt32(
convertor.ConvertToPixels(pdfDoc.PageSettings.Height - 80,
PdfGraphicsUnit
.Point));
//set footer height
float
footerHeight = 26;
//html converter
HtmlConverter html = null;
//set footer char and page number
AddFooterBegin(
ref pdfDoc,
pdfDoc.PageSettings.Width,
footerHeight);
//html to pdf result
HtmlToPdfResult result = null;
//render html
for (int
i = 0; i < arrURL.Count; i++)
{
html =
new HtmlConverter
();
//setting Javascript <
11921
/p>
html.EnableJavaScript =
true;
//setting pagebreak
html.AutoDetectPageBreak =
true;
//setting hyperlink
html.EnableHyperlinks =
false;
//get html result
result = html.Convert
(arrURL[i],
ImageType.Metafile,
Convert.ToInt32(width), -1, AspectRatio.KeepWidth);
//Add a page
PdfPage
newpage = pdfDoc.Pages.Add();
PdfMetafileLayoutFormat pdfLFormat=new PdfMetafileLayoutFormat();
pdfLFormat.Break=
PdfLayoutBreakType.FitPage;
pdfLFormat.Layout=
PdfLayoutType.Paginate;
pdfLFormat.PaginateBounds =
new RectangleF
(0, 0, width, pageHeight);
pdfLFormat.SplitImages =
false;
pdfLFormat.SplitTextLines =
false;
////Image img = result.RenderedImage;
////img.Save("a"+i+".jpg");
result.Render(newpage, pdfLFormat);
}
//set footer char and page number
AddFooterEnd(
ref pdfDoc, footerText, bFooter, bPageNumber,
pdfDoc.PageSettings.Width,footerHeight);
//if filename is empty ,set name
if (string.IsNullOrEmpty(FileName))
FileName =
"pdf_file.pdf";
//save pdf
if(OpenInBrowser) HttpReadType.Open);
{
pdfDoc.Save(FileName, Context.Response,
}
else
{
pdfDoc.Save(FileName, Context.Response,
HttpReadType.Save);
}
//close pdf
pdfDoc.Close(
true);
}
///
<summary>///Drawing Footer.only draw area.
/// </summary>
private void AddFooterBegin(ref PdfDocument doc,float width,float height)
{
// Setting the footer layout size according to the size of the text
RectangleF rect = new RectangleF
(0, 0, width, height);
//Create a page template
PdfPageTemplateElement footer = new PdfPageTemplateElement
(rect);
doc.Template.Bottom = footer;
}
/// <summary> ///Drawing Footer and draw page number
/// </summary>///
<param name="doc"></param>
///
<param name="footerText"></param>
///
<param name="bFooter"></param>
///
<param name="bPageNumber"></param>
private void AddFooterEnd(ref PdfDocument
doc, string footerText, bool bFooter, bool
bPageNumber,
float width,floatheight)
{
if ((bFooter == false && bPageNumber == false) ||
(bPageNumber ==
false && bFooter == true && footerText == string
.Empty))
{
return; }
//footer char font
PdfFont font = new PdfStandardFont(PdfFontFamily.Helvetica, 8, PdfFontStyle.Regular);
//footer char brush
PdfSolidBrush brush = new PdfSolidBrush(Color.Black);
// Measuring footer char String
SizeF size;
if (footerText != string
.Empty)
else
new SizeF (width, height);
{size =
}
// Setting the footer layout size according to the size of the text
RectangleF rect = new RectangleF (0, 0, width, height);
//Create a page template
PdfPageTemplateElement footer = new PdfPageTemplateElement(rect);
//draw footer char
if (bFooter == true)
{
PdfStringFormat format = new PdfStringFormat();
format.Alignment =
PdfTextAlignment.Left;
format.LineAlignment =
PdfVerticalAlignment.Bottom;
footer.Graphics.DrawString(footerText, font, brush,
new RectangleF(6, 10, size.Width, size.Height), format);
}
//draw page numbe
if (bPageNumber == true
&& doc.Pages.Count>0)
{
//page number
PdfFont fontPagenumber = new PdfStandardFont(PdfFontFamily.Helvetica, 10, PdfFontStyle.Bold);
PdfSolidBrush brushPagenumber = new PdfSolidBrush(Color
.Blue);
//Create page number field
PdfPageNumberField pageNumber = new PdfPageNumberField (fontPagenumber, brushPagenumber);
//Create page count field
PdfPageCountField count = new PdfPageCountField
(fontPagenumber, brushPagenumber);
PdfCompositeField compositeField = new PdfCompositeField
(fontPagenumber, brushPagenumber,
"Page {0} of {1}"
, pageNumber, count);
compositeField.Bounds = footer.Bounds;
compositeField.Draw(footer.Graphics,
new PointF(doc.Pages[0].GetClientSize().Width - 100, 10));
}
//Add the footer template at the bottom
doc.Template.Bottom = footer;
}
{
size = font.MeasureString(footerText);
}
pdfDoc.DocumentInformation.Title = DocumentTitle;
pdfDoc.DocumentInformation.Author = DocumentAuthor;
pdfDoc.DocumentInformation.Keywords = DocumentKeywords;
using
Syncfusion.Pdf;
using
Syncfusion.Pdf.Graphics;
using
Syncfusion.Pdf.Interactive;
using
Syncfusion.HtmlConverter;
using
Syncfusion.Pdf.HtmlToPdf;
public
void GeneratePDFEPFullBak5(List<string> arrURL, string FileName, bool OpenInBrowser,string footerText, bool bFooter, bool bPageNumber)
{
//PdfLoadedDocumentLinkAnnotation
string strResult = string.Empty;
//pdf document
PdfDocument pdfDoc = default(PdfDocument);
pdfDoc =
new PdfDocument();
//Add PDF Document Settings
//set margin
pdfDoc.PageSettings.SetMargins(leftMargin, topMargin,rightMargin, bottomMargin);
//set page orientation
pdfDoc.PageSettings.Orientation =
PdfPageOrientation.Portrait;
//set rotation
pdfDoc.PageSettings.Rotate =
PdfPageRotateAngle.RotateAngle0;
//set width
PdfUnitConvertor convertor = new PdfUnitConvertor();
//set width
float width = convertor.ConvertToPixels(
pdfDoc.PageSettings.Width - leftMargin - rightMargin,
PdfGraphicsUnit.Point);
//set height
float
height = convertor.ConvertToPixels(
pdfDoc.PageSettings.Height,
PdfGraphicsUnit.Point);
//set page height
int pageHeight = Convert
.ToInt32(
convertor.ConvertToPixels(pdfDoc.PageSettings.Height - 80,
PdfGraphicsUnit
.Point));
//set footer height
float
footerHeight = 26;
//html converter
HtmlConverter html = null;
//set footer char and page number
AddFooterBegin(
ref pdfDoc,
pdfDoc.PageSettings.Width,
footerHeight);
//html to pdf result
HtmlToPdfResult result = null;
//render html
for (int
i = 0; i < arrURL.Count; i++)
{
html =
new HtmlConverter
();
//setting Javascript <
11921
/p>
html.EnableJavaScript =
true;
//setting pagebreak
html.AutoDetectPageBreak =
true;
//setting hyperlink
html.EnableHyperlinks =
false;
//get html result
result = html.Convert
(arrURL[i],
ImageType.Metafile,
Convert.ToInt32(width), -1, AspectRatio.KeepWidth);
//Add a page
PdfPage
newpage = pdfDoc.Pages.Add();
PdfMetafileLayoutFormat pdfLFormat=new PdfMetafileLayoutFormat();
pdfLFormat.Break=
PdfLayoutBreakType.FitPage;
pdfLFormat.Layout=
PdfLayoutType.Paginate;
pdfLFormat.PaginateBounds =
new RectangleF
(0, 0, width, pageHeight);
pdfLFormat.SplitImages =
false;
pdfLFormat.SplitTextLines =
false;
////Image img = result.RenderedImage;
////img.Save("a"+i+".jpg");
result.Render(newpage, pdfLFormat);
}
//set footer char and page number
AddFooterEnd(
ref pdfDoc, footerText, bFooter, bPageNumber,
pdfDoc.PageSettings.Width,footerHeight);
//if filename is empty ,set name
if (string.IsNullOrEmpty(FileName))
FileName =
"pdf_file.pdf";
//save pdf
if(OpenInBrowser) HttpReadType.Open);
{
pdfDoc.Save(FileName, Context.Response,
}
else
{
pdfDoc.Save(FileName, Context.Response,
HttpReadType.Save);
}
//close pdf
pdfDoc.Close(
true);
}
///
<summary>///Drawing Footer.only draw area.
/// </summary>
private void AddFooterBegin(ref PdfDocument doc,float width,float height)
{
// Setting the footer layout size according to the size of the text
RectangleF rect = new RectangleF
(0, 0, width, height);
//Create a page template
PdfPageTemplateElement footer = new PdfPageTemplateElement
(rect);
doc.Template.Bottom = footer;
}
/// <summary> ///Drawing Footer and draw page number
/// </summary>///
<param name="doc"></param>
///
<param name="footerText"></param>
///
<param name="bFooter"></param>
///
<param name="bPageNumber"></param>
private void AddFooterEnd(ref PdfDocument
doc, string footerText, bool bFooter, bool
bPageNumber,
float width,floatheight)
{
if ((bFooter == false && bPageNumber == false) ||
(bPageNumber ==
false && bFooter == true && footerText == string
.Empty))
{
return; }
//footer char font
PdfFont font = new PdfStandardFont(PdfFontFamily.Helvetica, 8, PdfFontStyle.Regular);
//footer char brush
PdfSolidBrush brush = new PdfSolidBrush(Color.Black);
// Measuring footer char String
SizeF size;
if (footerText != string
.Empty)
else
new SizeF (width, height);
{size =
}
// Setting the footer layout size according to the size of the text
RectangleF rect = new RectangleF (0, 0, width, height);
//Create a page template
PdfPageTemplateElement footer = new PdfPageTemplateElement(rect);
//draw footer char
if (bFooter == true)
{
PdfStringFormat format = new PdfStringFormat();
format.Alignment =
PdfTextAlignment.Left;
format.LineAlignment =
PdfVerticalAlignment.Bottom;
footer.Graphics.DrawString(footerText, font, brush,
new RectangleF(6, 10, size.Width, size.Height), format);
}
//draw page numbe
if (bPageNumber == true
&& doc.Pages.Count>0)
{
//page number
PdfFont fontPagenumber = new PdfStandardFont(PdfFontFamily.Helvetica, 10, PdfFontStyle.Bold);
PdfSolidBrush brushPagenumber = new PdfSolidBrush(Color
.Blue);
//Create page number field
PdfPageNumberField pageNumber = new PdfPageNumberField (fontPagenumber, brushPagenumber);
//Create page count field
PdfPageCountField count = new PdfPageCountField
(fontPagenumber, brushPagenumber);
PdfCompositeField compositeField = new PdfCompositeField
(fontPagenumber, brushPagenumber,
"Page {0} of {1}"
, pageNumber, count);
compositeField.Bounds = footer.Bounds;
compositeField.Draw(footer.Graphics,
new PointF(doc.Pages[0].GetClientSize().Width - 100, 10));
}
//Add the footer template at the bottom
doc.Template.Bottom = footer;
}
{
size = font.MeasureString(footerText);
}
pdfDoc.DocumentInformation.Title = DocumentTitle;
pdfDoc.DocumentInformation.Author = DocumentAuthor;
pdfDoc.DocumentInformation.Keywords = DocumentKeywords;
相关文章推荐
- Java导出PDF文档使用iText操作
- ThinkPHP使用Tcpdf导出pdf文档
- 使用免费组件view pdf 文档
- 使用PDFlib在PHP网页导出中文pdf文档
- 使用免费组件view pdf 文档
- 使用免费组件给PDF文档添加文本和图片页眉
- C# 不使用第三方插件导出XPS,PDF,图片文档
- 使用免费组件view pdf 文档
- 使用itext创建PDF文档-导出大表格-每页显示标题-项目实战
- 使用第三方组件NPOI和iTextSharp根据DataTable导出Excel、Word、Pdf
- 使用jfreechart和itext实现导出报表和表格到pdf文档
- 如何使用ABBYY FineReader 14添加文本到PDF文档
- 使用IReport制作并导出PDF文件(一)----文件名默认
- flex实现百度库文浏览文档使用word文档转pdf然后再用pdf转swf最后flex页面使用flexpaper显示文库数据
- JasperReport报表技术导出PDF报表(使用IReport设计工具 )
- Java导出Excel文档使用poi操作
- 使用itext导出pdf
- [Android]使用浏览器直接打开PDF和Office文档
- 在.NET 3.5 平台上使用LINQ to SQL创建三层/多层Web应用系统(源代码下载和PDF文档下载)