使用 Syncfusion组件 导出pdf文档

来源:互联网 发布:余额宝2017知乎 编辑:程序博客网 时间:2024/05/21 10:21

使用 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

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;

 

 

 

 

 

 

 

原创粉丝点击