(通过在内容中插入盖章图片的形式)

Posted 个人记录与分享

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了(通过在内容中插入盖章图片的形式)相关的知识,希望对你有一定的参考价值。

C# 通过iTextSharp实现pdf文件盖章(通过在内容中插入盖章图片的形式)

具体盖章方法实现

    /// <summary>
        /// 第一页盖章
        /// </summary>
        /// <param name="pdfPath">源pdf地址</param>
        /// <param name="outPdfPath">盖章后生成pdf地址</param>
        /// <param name="imagePath">盖章图片地址</param>
        public static void SignFirstPage(string pdfPath, string outPdfPath, string imagePath)
        
            //创建盖章后生成pdf
            System.IO.Stream outputPdfStream = new System.IO.FileStream(outPdfPath, System.IO.FileMode.Create, System.IO.FileAccess.Write, System.IO.FileShare.None);
            //读取原有pdf
            iTextSharp.text.pdf.PdfReader pdfReader = new iTextSharp.text.pdf.PdfReader(pdfPath);
            iTextSharp.text.pdf.PdfStamper pdfStamper = new iTextSharp.text.pdf.PdfStamper(pdfReader, outputPdfStream);
            //获取内容
            //GetUnderContent 加在内容下层
            //GetOverContent 加在内容上层
            //盖章在第一页
            iTextSharp.text.pdf.PdfContentByte pdfContentByte = pdfStamper.GetUnderContent(1);
            //获取图片
            iTextSharp.text.Image image = iTextSharp.text.Image.GetInstance(imagePath);
            //设置图片比例
            image.ScalePercent(40);
            //读取pdf文件第一页尺寸
            iTextSharp.text.Rectangle psize = pdfReader.GetPageSize(1);
            //设置图片的绝对位置,位置偏移方向为:左到右,下到上
            image.SetAbsolutePosition(psize.Width / 10 * 7, psize.Height / 10);
            //图片添加到文档
            pdfContentByte.AddImage(image);
            pdfStamper.Close();
            pdfReader.Close();
            //直接打开盖章后文件
            System.Diagnostics.Process.Start(outPdfPath);
        
    /// <summary>
        /// 最后一页盖章
        /// </summary>
        /// <param name="pdfPath">源pdf地址</param>
        /// <param name="outPdfPath">盖章后生成pdf地址</param>
        /// <param name="imagePath">盖章图片地址</param>
        public static void SignLastPage(string pdfPath, string outPdfPath, string imagePath)
        
            //创建盖章后生成pdf
            System.IO.Stream outputPdfStream = new System.IO.FileStream(outPdfPath, System.IO.FileMode.Create, System.IO.FileAccess.Write, System.IO.FileShare.None);
            //读取原有pdf
            iTextSharp.text.pdf.PdfReader pdfReader = new iTextSharp.text.pdf.PdfReader(pdfPath);
            iTextSharp.text.pdf.PdfStamper pdfStamper = new iTextSharp.text.pdf.PdfStamper(pdfReader, outputPdfStream);
            //读取页数
            int pdfPageSize = pdfReader.NumberOfPages;
            //获取内容
            //GetUnderContent 加在内容下层
            //GetOverContent 加在内容上层
            //盖章在最后一页
            iTextSharp.text.pdf.PdfContentByte pdfContentByte = pdfStamper.GetUnderContent(pdfPageSize);
            //获取图片
            iTextSharp.text.Image image = iTextSharp.text.Image.GetInstance(imagePath);
            //设置图片比例
            image.ScalePercent(40);
            //读取pdf文件第一页尺寸
            iTextSharp.text.Rectangle psize = pdfReader.GetPageSize(1);
            //设置图片的绝对位置,位置偏移方向为:左到右,下到上
            image.SetAbsolutePosition(psize.Width / 10 * 7, psize.Height / 10);
            //图片添加到文档
            pdfContentByte.AddImage(image);
            pdfStamper.Close();
            pdfReader.Close();
            //直接打开盖章后文件
            System.Diagnostics.Process.Start(outPdfPath);
        
     /// <summary>
        /// PDF盖章,循环到每页
        /// </summary>
        /// <param name="pdfPath">源pdf地址</param>
        /// <param name="outPdfPath">盖章后生成pdf地址</param>
        /// <param name="imagePath">盖章图片地址</param>
        public static void SignEachPage(string pdfPath, string outPdfPath, string imagePath)
        
            //读取pdf
            iTextSharp.text.pdf.PdfReader pdfReader = new iTextSharp.text.pdf.PdfReader(pdfPath);
            //读取页数
            int pdfPageSize = pdfReader.NumberOfPages;
            //创建新pdf
            System.IO.FileStream outputStream = new System.IO.FileStream(outPdfPath, System.IO.FileMode.Create, System.IO.FileAccess.Write, System.IO.FileShare.None);
            iTextSharp.text.pdf.PdfStamper pdfStamper = new iTextSharp.text.pdf.PdfStamper(pdfReader, outputStream);
            //文件内容
            iTextSharp.text.pdf.PdfContentByte waterMarkContent;
            //读取第一页尺寸
            iTextSharp.text.Rectangle psize = pdfReader.GetPageSize(1);
            //读取盖章图片
            iTextSharp.text.Image image = iTextSharp.text.Image.GetInstance(imagePath);
            //图片缩放到一定百分比
            image.ScalePercent(40);
            //设置图片位置,位置偏移方向为:左到右,下到上
            image.SetAbsolutePosition(psize.Width / 10 * 7, psize.Height / 10);
            //循环给每页盖章
            for (int i = 1; i <= pdfPageSize; i++)
            
                //GetUnderContent 加在内容下层
                //GetOverContent 加在内容上层
                waterMarkContent = pdfStamper.GetUnderContent(i);
                //添加
                waterMarkContent.AddImage(image);
            
            pdfStamper.Close();
            pdfReader.Close();
            //直接打开盖章后文件
            System.Diagnostics.Process.Start(outPdfPath);
        

效果图如下

 

 

参考文章:C# PdfStamper.GetOverContent方法代码示例 - 纯净天空 (vimsky.com)

 

5.4心得

1、音频和视频标签
音频:audio
视频:video

2、背景图片和插入图片的区别
1.写在css里面的图片是以背景图形式存在的,而写在html里的img是以标签形式存在的,在网页加载的过程中,以css背景图存在的图片会等到结构加载完成(网页的内容全部显示以后)才开始加载,而html里的img标签是网页结构(内容)的一部分会在加载结构的过程中加载。

2.通常是非内容的图片就写在css里面(用来修饰页面的元素),如果是内容性的图片就写在html里面,
打个比方,你要做一个有漂亮边框的相册。那么修饰边框的图片就写在css里面,相框里面的内容照片就写在html里面。

3.图片做为背景,在图片没加载的时候或者加载失败的时候,不会有个图片的占位标记,不会出现红叉。

3、为什么同一个代码,在不同浏览器显示方式不一样
各浏览器解译网站代码的方式略有不同,这意味着您的网站在不同浏览器中显示的效果会有所差异。一般情况下,您应避免依赖于浏览器特定的行为,例如在未指定内容类型或编码的情况下,希望浏览器可以正确检测到相应的内容类型或编码。

4、<style>

a{text-decoration:none}(这里为什么不能加“;”)
a:hover{color:red}
</style>
html里a链接可以使用css设置为:默认不显示下划线,鼠标移到上方显示下划线:
<style>
a:link{text-decoration:none;}
a:hover{text-decoration:underline;}
</style>
如果把直接在a标签内写样式像这样:<a style="text-decoration:none;">

现在想把”hover{text-decoration:underline;}“这一项也直接放在标签内的style里,该如何写?

以下是不成功的:
<a style="text-decoration:none; hover{TEXT-DECORATION:underline};"> 无论鼠标是否在上面都无下划线
<a style="link{text-decoration:none}; hover{TEXT-DECORATION:underline}; "> 仍旧默认显示下划线,鼠标过来消失

以上是关于(通过在内容中插入盖章图片的形式)的主要内容,如果未能解决你的问题,请参考以下文章

看到许多网站的图片大多都和盖章一样图片上都印有自己网站的地址不知道这些照片上的网站地址是怎样写上去

将pdf文件以图片形式添加到word中

5.4心得

Markdown使用-5 数学公式

CSS盒子模型外边距 ③ ( 插入图片 | 插入图片位置移动 - 修改外边距 | 背景图片 | 背景图片移动位置 - 修改背景位置 background-position )

电子印章一jquery.stamper使用说明