好久没写博客了,今天给大家分享一个图片转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增加水印文字的更多相关文章

  1. C#实现多个PDF合并及去除文字水印功能

    实现pdf合并就是使用Spire.Pdf.dll类库的方法,但是注意需要同时引用Spire.Pdf.dll和Spire.License.dll两个类库,且两个类库的版本要一致 String[] fil ...

  2. java实现图片和pdf添加铺满文字水印

    依赖jar包 <!-- pdf start --> <dependency> <groupId>com.itextpdf</groupId> <a ...

  3. pdf增加水印

    /// <summary> /// 为PDF添加水印或背景图片 /// </summary> /// <param name="strSourceFilePat ...

  4. java -PDF添加文本水印与图片水印

    java pdf添加水印文本及图片文本 PDF文件添加文本水印: private static int interval = 30; public static void waterMark(Stri ...

  5. Java在已存在的pdf文件中生成文字和图片--基础

    自我总结,有什么不足之处请告知,感激不尽!下一次总结pdf模板映射生成报表(应对多变的pdf报表需求,数据提供和报表生成解耦). 目的:在给定的pdf模板上生成报表,就需要知道最基本的操作:文字添加, ...

  6. 「Python实用秘技04」为pdf文件批量添加文字水印

    本文完整示例代码及文件已上传至我的Github仓库https://github.com/CNFeffery/PythonPracticalSkills 这是我的系列文章「Python实用秘技」的第4期 ...

  7. 图片合并成PDF,两个PDF的合并

    需求: 将多张手机照片合并成一个PDF,并于另一个成型PDF合并 过程: 使用全能扫描王处理一遍,拆剪掉多余部分,并提高亮度增加文字对比度 合并: 使用Faststone Capture合并图片即可. ...

  8. ABBYY如何把图片转换成pdf格式

    在制作工作文件的时候,有时候会遇到需要进行文件格式转换的情况,比较常见的文件格式转换就包含了Office与pdf格式之间的转换.但除此之外,图片与pdf格式也是可以进行转换的,那么图片要怎么操作,才能 ...

  9. 【使用Itext处理PDF文档(新建PDF文件、修改PDF文件、PDF中插入图片、将PDF文件转换为图片)】

    iText简介 iText是著名的开放源码的站点sourceforge一个项目,是用于生成PDF文档的一个java类库.通过iText不仅可以生成PDF或rtf的文档,而且可以将XML.Html文件转 ...

  10. 阿里云ali-oss图片增加水印

    先附上文档连接 : https://helpcdn.aliyun.com/document_detail/44957.html 水印文字或图片必须经过一下转化 URL安全的Base64位编码 在图片处 ...

随机推荐

  1. AcWing 1353. 滑雪场设计

    原题链接 思路 本题如果以贪心的思路来理解,则会遇到如果根据贪心算法变更后的最高峰和最低峰会发生改变,产生后效性,导致贪心算法无效,再考虑到本题目数据量不大,山峰数量在1k以内,山峰高度在100之内, ...

  2. [ACM]STL-dfs

    #include<iostream> using namespace std; int book[101],sum,n,e[101][101]; void dfs(int cur) { c ...

  3. 鸿蒙开发学习笔记-UIAbility-Router页面跳转接口源码分析

    在鸿蒙开发中,UIAbility的跳转使用 router 方法. 在使用的时候需导入 import router from '@ohos.router'; 该方法接口成员如下: 1.interface ...

  4. 任意Exe转ShellCode?

    之前写过一个远控,但一直在琢磨如何生成shellcode,今天偶然看见一个项目:sRDI,github上就有 这个项目主要就是将dll转成shellcode,于是我就想到了"写一个输出文件的 ...

  5. [Java/LeetCode]算法练习:转变日期格式(1507/simple)

    1 题目描述 题目来源: https://leetcode-cn.com/problems/reformat-date 给你一个字符串 date ,它的格式为 Day Month Year ,其中: ...

  6. LeeCode 栈与队列问题(二)

    LeeCode 239: 滑动窗口最大值 题目描述 给你一个整数数组 nums,有一个大小为 k 的滑动窗口从数组的最左侧移动到数组的最右侧.你只可以看到在滑动窗口内的 k 个数字.滑动窗口每次只向右 ...

  7. Hooks与事件绑定

    Hooks与事件绑定 在React中,我们经常需要为组件添加事件处理函数,例如处理表单提交.处理点击事件等.通常情况下,我们需要在类组件中使用this关键字来绑定事件处理函数的上下文,以便在函数中使用 ...

  8. 图计算引擎分析--GridGraph

    作者:京东科技 李永萍 GridGraph:Large-Scale Graph Processing on a Single Machine Using 2-Level Hierarchical Pa ...

  9. Amazon S3 对象存储Java API操作记录(Minio与S3 SDK两种实现)

    缘起 今年(2023年) 2月的时候做了个适配Amazon S3对象存储接口的需求,由于4月份自学考试临近,一直在备考就拖着没总结记录下,开发联调过程中也出现过一些奇葩的问题,最近人刚从考试缓过来顺手 ...

  10. C# 获取指定窗口的上层窗口

    如何获取当前窗口层级上方的所有窗口信息 User32有函数GetWindow function (winuser.h) - Win32 apps | Microsoft Docs,可以根据已知窗口句柄 ...