使用 Syncfusion组件
using
using
using
using
using
public
{
//PdfLoadedDocumentLinkAnnotation
string strResult = string.Empty;
//pdf document
PdfDocument pdfDoc = default(PdfDocument);
pdfDoc =
//Add PDF Document Settings
//set margin
pdfDoc.PageSettings.SetMargins(leftMargin, topMargin,rightMargin, bottomMargin);
//set page orientation
pdfDoc.PageSettings.Orientation =
//set rotation
pdfDoc.PageSettings.Rotate =
//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 =
//setting pagebreak
html.AutoDetectPageBreak =
//setting hyperlink
html.EnableHyperlinks =
//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= pdfLFormat.Layout= pdfLFormat.PaginateBounds =
(0, 0, width, pageHeight);
pdfLFormat.SplitImages = pdfLFormat.SplitTextLines =
////Image img = result.RenderedImage;
////img.Save("a"+i+".jpg");
result.Render(newpage, pdfLFormat);
}
//set footer char and page number
AddFooterEnd(
pdfDoc.PageSettings.Width,footerHeight);
//if filename is empty ,set name
if (string.IsNullOrEmpty(FileName))
FileName =
//save pdf
if(OpenInBrowser) HttpReadType.Open);
{
pdfDoc.Save(FileName, Context.Response,
}
else
{
pdfDoc.Save(FileName, Context.Response,
HttpReadType.Save);
}
//close pdf
pdfDoc.Close(
}
///
/// </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 ==
.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 = format.LineAlignment = footer.Graphics.DrawString(footerText, font, brush,
}
//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;
该博客介绍了如何利用Syncfusion组件将HTML内容转换为PDF文档。通过设置页面布局、页边距、页眉和页脚,以及处理JavaScript和超链接,最终生成并保存PDF文件。此外,还提供了自定义页眉和页脚以及页码的实现方法。
699

被折叠的 条评论
为什么被折叠?



