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;
}
C# 图片转PDF,PDF增加水印文字的更多相关文章
- C#实现多个PDF合并及去除文字水印功能
实现pdf合并就是使用Spire.Pdf.dll类库的方法,但是注意需要同时引用Spire.Pdf.dll和Spire.License.dll两个类库,且两个类库的版本要一致 String[] fil ...
- java实现图片和pdf添加铺满文字水印
依赖jar包 <!-- pdf start --> <dependency> <groupId>com.itextpdf</groupId> <a ...
- pdf增加水印
/// <summary> /// 为PDF添加水印或背景图片 /// </summary> /// <param name="strSourceFilePat ...
- java -PDF添加文本水印与图片水印
java pdf添加水印文本及图片文本 PDF文件添加文本水印: private static int interval = 30; public static void waterMark(Stri ...
- Java在已存在的pdf文件中生成文字和图片--基础
自我总结,有什么不足之处请告知,感激不尽!下一次总结pdf模板映射生成报表(应对多变的pdf报表需求,数据提供和报表生成解耦). 目的:在给定的pdf模板上生成报表,就需要知道最基本的操作:文字添加, ...
- 「Python实用秘技04」为pdf文件批量添加文字水印
本文完整示例代码及文件已上传至我的Github仓库https://github.com/CNFeffery/PythonPracticalSkills 这是我的系列文章「Python实用秘技」的第4期 ...
- 图片合并成PDF,两个PDF的合并
需求: 将多张手机照片合并成一个PDF,并于另一个成型PDF合并 过程: 使用全能扫描王处理一遍,拆剪掉多余部分,并提高亮度增加文字对比度 合并: 使用Faststone Capture合并图片即可. ...
- ABBYY如何把图片转换成pdf格式
在制作工作文件的时候,有时候会遇到需要进行文件格式转换的情况,比较常见的文件格式转换就包含了Office与pdf格式之间的转换.但除此之外,图片与pdf格式也是可以进行转换的,那么图片要怎么操作,才能 ...
- 【使用Itext处理PDF文档(新建PDF文件、修改PDF文件、PDF中插入图片、将PDF文件转换为图片)】
iText简介 iText是著名的开放源码的站点sourceforge一个项目,是用于生成PDF文档的一个java类库.通过iText不仅可以生成PDF或rtf的文档,而且可以将XML.Html文件转 ...
- 阿里云ali-oss图片增加水印
先附上文档连接 : https://helpcdn.aliyun.com/document_detail/44957.html 水印文字或图片必须经过一下转化 URL安全的Base64位编码 在图片处 ...
随机推荐
- AlphaFold2无痛安装教程(超级详细)
目录 介绍 环境 安装 CMAKE安装 hmmer安装 HHsuite安装 Kalign安装 OpenMM安装 PDBfixer安装 Python依赖包安装 AlphaFold安装 AlphaFold ...
- golang pprof 监控系列(3) —— memory,block,mutex 统计原理
golang pprof 监控系列(3) -- memory,block,mutex 统计原理 大家好,我是蓝胖子. 在上一篇文章 golang pprof监控系列(2) -- memory,bloc ...
- pandas之concat链接操作
Pandas 通过 concat() 函数能够轻松地将 Series 与 DataFrame 对象组合在一起,函数的语法格式如下: pd.concat(objs,axis=0,join='outer' ...
- 四月十三号java基础知识
1.双层for循环外层要写,但是内层一定要写,不然容易报错2.Exception in thread "main" java.lang.ArrayIndexOutOfBoundsE ...
- ES_ChatGPT问答
Q1:springboot项目,如何使用elasticsearch的api增删改查?查询中有哪些方式,如果模糊查询.排序查询.分页查询?分别阐述下这些查询方式的用法?最后举一个完整的例子 答: 在Sp ...
- 基于django+ansible+webssh运维自动化管理系统
基于django+ansible+webssh运维自动化管理系统 前言 最初开发这个基于Django ansible运维自动化管理系统的想法其实从大学时候就已经有了,但是苦于技术原因和没有线上环境 ...
- 如何借助分布式存储 JuiceFS 加速 AI 模型训练
传统的机器学习模型,数据集比较小,模型的算法也比较简单,使用单机存储,或者本地硬盘就足够了,像 JuiceFS 这样的分布式存储并不是必需品. 随着近几年深度学习的蓬勃发展,越来越多的团队开始遇到了单 ...
- AI 绘画咒语入门 - Stable Diffusion Prompt 语法指南 【成为初级魔导士吧!】
要用好 Stable Diffusion,最最重要的就是掌握 Prompt(提示词).由于提示词对于生成图的影响甚大,所以被称为魔法,用得好惊天动地,用不好魂飞魄散 . 因此本篇整理下提示词的语法(魔 ...
- [双目视差] 立体校正源码分析(opencv)
文章目录 [双目视差] 立体校正源码分析(opencv) 一.源码解析 二.源码中的方法 [双目视差] 立体校正源码分析(opencv) 一.源码解析 立体校正:把实际中非共面行对准的两幅图像,校正成 ...
- [C++提高编程] 3.6 queue 容器
文章目录 3.6 queue 容器 3.6.1 queue 基本概念 3.6.2 queue 常用接口 3.6 queue 容器 3.6.1 queue 基本概念 概念:Queue是一种先进先出(Fi ...