C# 图片转PDF,PDF增加水印文字
好久没写博客了,今天给大家分享一个图片转PDF的相关操作,也算是一次总结吧。首先需要准备动态库itextsharp.dll,这个dll去网上下载,都可以下载到,C#对PDF的操作都是基于这个类库来实现的。话不多说,直接上代码。
/// <summary>
/// 导出PDF
/// </summary>
/// <param name="FilePath">图片的路劲</param>
/// <param name="FileName">图片的名称</param>
private bool PrintToPdf(string FilePath,string FileName )
{
iTextSharp.text.Rectangle rec = new iTextSharp.text.Rectangle(0, 0, iTextSharp.text.PageSize.A4.Width, iTextSharp.text.PageSize.A4.Height);
iTextSharp.text.Image image;
iTextSharp.text.Document document = null;
FileStream fs = null;
PdfWriter writer = null;
try
{
//生成PDF
document = new iTextSharp.text.Document(rec);
fs = new FileStream(FilePath + FileName + ".pdf", FileMode.Create);
PdfWriter.GetInstance(document, fs);
document.Open();
image = iTextSharp.text.Image.GetInstance(FilePath + FileName + ".jpg");
//调整图片大小,使之适合A4
if (image.Height > rec.Height)
{
image.ScaleToFit(rec.Width, rec.Height);
}
else if (image.Width > rec.Width)
{
image.ScaleToFit(rec.Width, rec.Height);
}
//调整图片位置,使之居中
image.Alignment = iTextSharp.text.Image.ALIGN_MIDDLE;
document.NewPage();
document.Add(image);
}
catch (Exception ex)
{
return false;
}
finally
{
if (document.IsOpen())
{
document.Close();
}
fs.Close();
//最后删除生成的图片
File.Delete(FilePath + FileName + ".jpg");
}
try
{
//添加水印图片,水印图片采取的是先生成图片,再添加到PDF文件中
document = new iTextSharp.text.Document(rec);
fs = new FileStream(FilePath + FileName + ".pdf", FileMode.Open);
writer = PdfWriter.GetInstance(document, fs);
iTextSharp.text.Image imgWater = CreateWaterImage();
PdfReader reader = new PdfReader(fs);
document.Open();
PdfContentByte cb = writer.DirectContent;
PdfImportedPage newPage;
int iPageNum = reader.NumberOfPages;
for (int j = 1; j <= iPageNum; j++)
{
document.NewPage();
newPage = writer.GetImportedPage(reader, j);
//pdf旋转
if (newPage.Width > newPage.Height)
{
cb.AddTemplate(newPage, 0, -1f, 1f, 0, 0, newPage.Width);
}
else
{
cb.AddTemplate(newPage, 0, 0);
}
cb.AddImage(imgWater);
}
return true;
}
catch (Exception ex)
{
return false;
}
finally
{
if (document.IsOpen())
{
document.Close();
}
writer.Close();
fs.Close();
}
}
/// <summary>
/// 生成水印图片
/// </summary>
/// <returns></returns>
private iTextSharp.text.Image CreateWaterImage()
{
string WaterText = "水印文本";
Bitmap bitmap = new Bitmap(595, 842);
using (Graphics g = Graphics.FromImage(bitmap))
{
//重置图像
g.ResetTransform();
//设置旋转中心
g.TranslateTransform(bitmap.Width / 2, bitmap.Height / 2);
//旋转50度 顺时针
g.RotateTransform(-50);
//指定文本呈现的质量 解决文字锯齿问题
g.TextRenderingHint = System.Drawing.Text.TextRenderingHint.AntiAlias;
System.Drawing.Font font = new System.Drawing.Font("微软雅黑", 14);
SolidBrush solidBrush = new SolidBrush(Color.FromArgb(100, 0, 0, 0));
//设置文字、字体、大小、颜色、起始位置
g.DrawString(WaterText, font, solidBrush, new Point(-240, -100));
g.DrawString(WaterText, font, solidBrush, new Point(-340, 100));
}
//把水印图片保存在系统指定位置
bitmap.Save("C:\\WaterTemp.jpg");
iTextSharp.text.Image image = iTextSharp.text.Image.GetInstance("C:\\WaterTemp.jpg");
//透明度,灰色填充
image.GrayFill = 20;
image.SetAbsolutePosition(0, 0);
return image;
}
来源:https://www.cnblogs.com/zhenzaizai/archive/2023/06/21/17496661.html
免责声明:由于采集信息均来自互联网,如果侵犯了您的权益,请联系我们【E-Mail:cb@itdo.tech】 我们会及时删除侵权内容,谢谢合作!
页:
[1]