1、打印功能使用spire.pdf组件,.NET环境使用4.7.2,效果图如下
2、spire.pdf 和aspose.pdf都为超强的文档处理组件,具体实现程序如下
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using Spire.Pdf;
using Spire.Pdf.Graphics;
using System.Drawing;
using Spire.Pdf.AutomaticFields;
namespace demo1
{
public partial class index : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
}
string p_font = "宋体"; //字体样式
Single p_fsize = 11f; //字体大小
string p_file = "d://" + "test.pdf"; //文件名
float p_scale = 0.8f; //缩放比例
string doc_key = "公司"; //自定义属性名称
string doc_value = "公司名称"; //属性值
string yemei = ""; //页眉
string yejiao = ""; //页脚
protected void Button1_Click(object sender, EventArgs e)
{
p_file = "d://"+TextBox1.Text+".pdf";
p_font = TextBox2.Text;
p_fsize = Single.Parse(TextBox3.Text);
p_scale = float.Parse(TextBox4.Text);
yemei = TextBox5.Text;
yejiao = TextBox6.Text;
doc_key = TextBox7.Text;
doc_value = TextBox8.Text;
//初始化一个PdfDocument实例
PdfDocument document = new PdfDocument();
//设置边距
PdfUnitConvertor unitCvtr = new PdfUnitConvertor();
PdfMargins margins = new PdfMargins();
margins.Top = unitCvtr.ConvertUnits(2.54f, PdfGraphicsUnit.Centimeter, PdfGraphicsUnit.Point);
margins.Bottom = margins.Top;
margins.Left = unitCvtr.ConvertUnits(3.17f, PdfGraphicsUnit.Centimeter, PdfGraphicsUnit.Point);
margins.Right = margins.Left;
//添加新页
PdfPageBase page = document.Pages.Add(PdfPageSize.A4, margins);
//自定义PdfTrueTypeFont、PdfPen实例
PdfTrueTypeFont font = new PdfTrueTypeFont(new Font(p_font, p_fsize), true);
PdfPen pen = new PdfPen(Color.Black);
//使用DrawString方法在指定位置写入文本
string text = Label1.Text;
page.Canvas.DrawString(text, font, pen, 100, 50);
//加载图片到Image对象
System.Drawing.Image image = System.Drawing.Image.FromFile(Server.MapPath("~/")+Image1.ImageUrl);
//调整图片大小
int width = image.Width;
int height = image.Height;
float scale = p_scale; //缩放比例
Size size = new Size((int)(width * scale), (int)(height * scale));
Bitmap scaledImage = new Bitmap(image, size);
//加载缩放后的图片到PdfImage对象
PdfImage pdfImage = PdfImage.FromImage(scaledImage);
//设置图片位置
float x = 0f;
float y = 100f;
//在指定位置绘入图片
page.Canvas.DrawImage(pdfImage, x, y);
//遍历文档所有页面
foreach (PdfPageBase page_1 in document.Pages)
{
//设置页面背景颜色
page_1.BackgroundColor = Color.LightSkyBlue;
}
//添加自定义文档属性
document.DocumentInformation.SetCustomerDefined(doc_key, doc_value);
//将页边距设置为0
document.PageSettings.Margins = new PdfMargins(0);
//创建PdfMargins对象,指定期望设置的页边距
PdfMargins margins1 = new PdfMargins(40, 60, 40, 60);
//在文档模板的顶部和底部应用页眉页脚模板
document.Template.Top = CreateHeaderTemplate(document, margins);
document.Template.Bottom = CreateFooterTemplate(document, margins);
//在文档模板的左右部分应用空白模板
document.Template.Left = new PdfPageTemplateElement(margins.Left, document.PageSettings.Size.Height);
document.Template.Right = new PdfPageTemplateElement(margins.Right, document.PageSettings.Size.Height);
//在文档中添加两页并写入文字
PdfPageBase page1 = document.Pages.Add();
PdfPageBase page2 = document.Pages.Add();
PdfTrueTypeFont font1 = new PdfTrueTypeFont(new Font("华文楷体", 15f, FontStyle.Bold), true);
page1.Canvas.DrawString(yemei, font, PdfBrushes.Black, 0, 0);
page2.Canvas.DrawString(yemei, font, PdfBrushes.Black, 0, 0);
//保存文档
document.SaveToFile(p_file);
}
//创建页眉模板
public PdfPageTemplateElement CreateHeaderTemplate(PdfDocument doc, PdfMargins margins)
{
//获取页面大小
SizeF pageSize = doc.PageSettings.Size;
//创建PdfPageTemplateElement对象headerSpace,即作页眉模板
PdfPageTemplateElement headerSpace = new PdfPageTemplateElement(pageSize.Width, margins.Top);
headerSpace.Foreground = false;
//声明x,y两个float型变量
float x = margins.Left;
float y = 0;
//在headerSpace中绘制图片
//PdfImage headerImage = PdfImage.FromFile(@"C:\logo.png");
//float width = headerImage.Width / 3;
//float height = headerImage.Height / 3;
//headerSpace.Graphics.DrawImage(headerImage, x, margins.Top - height - 2, width, height);
//在headerSpace中绘制线段
PdfPen pen = new PdfPen(PdfBrushes.Gray, 0.5f);
headerSpace.Graphics.DrawLine(pen, x, y + margins.Top - 2, pageSize.Width - x, y + margins.Top - 2);
//返回headerSpace
return headerSpace;
}
// 创建页脚模板
public PdfPageTemplateElement CreateFooterTemplate(PdfDocument doc, PdfMargins margins)
{
//获取页面大小
SizeF pageSize = doc.PageSettings.Size;
//创建PdfPageTemplateElement对象footerSpace,即页脚模板
PdfPageTemplateElement footerSpace = new PdfPageTemplateElement(pageSize.Width, margins.Bottom);
footerSpace.Foreground = false;
//声明x,y两个float型变量
float x = margins.Left;
float y = 0;
//在footerSpace中绘制线段
PdfPen pen = new PdfPen(PdfBrushes.Gray, 0.5f);
footerSpace.Graphics.DrawLine(pen, x, y, pageSize.Width - x, y);
//在footerSpace中绘制文字
y = y + 5;
PdfTrueTypeFont font = new PdfTrueTypeFont(new Font("黑体", 10f, FontStyle.Bold), true);
PdfStringFormat format = new PdfStringFormat(PdfTextAlignment.Left);
String footerText = yejiao;
footerSpace.Graphics.DrawString(footerText, font, PdfBrushes.Black, x, y, format);
//在footerSpace中绘制当前页码和总页码
PdfPageNumberField number = new PdfPageNumberField();
PdfPageCountField count = new PdfPageCountField();
PdfCompositeField compositeField = new PdfCompositeField(font, PdfBrushes.Black, "第{0}页/共{1}页", number, count);
compositeField.StringFormat = new PdfStringFormat(PdfTextAlignment.Right, PdfVerticalAlignment.Top);
SizeF size = font.MeasureString(compositeField.Text);
compositeField.Bounds = new RectangleF(pageSize.Width - x - size.Width, y, size.Width, size.Height);
compositeField.Draw(footerSpace.Graphics);
//返回footerSpace
return footerSpace;
}
}
}
原创文章,作者:witersen,如若转载,请注明出处:https://www.witersen.com