zoukankan      html  css  js  c++  java
  • PDF加水印

    using System.IO;

    using iTextSharp.text;
    using iTextSharp.text.pdf;

    /// <summary>
            ///  PDF加水印
            /// </summary>
            /// <param name="inputfilepath">源PDF文件</param>
            /// <param name="outputfilepath">加水印后PDF文件 </param>
            /// <param name="ModelPicName">水印文件路径</param>
            /// <param name="top">离顶部距离</param>
            /// <param name="left">离左边距离,如果为负,则为离右边距离</param>
            /// <param name="strMsg">返回信息</param>
            /// <returns>返回</returns>
            public static bool PDFWatermark(string inputfilepath, string outputfilepath, string ModelPicName, float top, float left, ref string strMsg)
            {
                PdfReader pdfReader = null;
                PdfStamper pdfStamper = null;
                try
                {
                    pdfReader = new PdfReader(inputfilepath);

                    int numberOfPages = pdfReader.NumberOfPages;

                    iTextSharp.text.Rectangle psize = pdfReader.GetPageSize(1);

                    float width = psize.Width;

                    float height = psize.Height;

                    pdfStamper = new PdfStamper(pdfReader, new FileStream(outputfilepath, FileMode.Create));

                    PdfContentByte waterMarkContent;

                    iTextSharp.text.Image image = iTextSharp.text.Image.GetInstance(ModelPicName);

                    image.GrayFill = 20;//透明度,灰色填充
                    //image.Rotation//旋转
                    //image.RotationDegrees//旋转角度
                    //水印的位置
                    if (left < 0)
                    {
                        left = width - image.Width + left;
                    }

                    image.SetAbsolutePosition(left, (height - image.Height) - top);


                    //每一页加水印,也可以设置某一页加水印
                    for (int i = 1; i <= numberOfPages; i++)
                    {
                        waterMarkContent = pdfStamper.GetUnderContent(i);

                        waterMarkContent.AddImage(image);
                    }
                    strMsg = "success";
                    return true;
                }
                catch (Exception ex)
                {
                    strMsg = ex.Message.Trim();
                    return false;
                }
                finally
                {

                    if (pdfStamper != null)
                        pdfStamper.Close();

                    if (pdfReader != null)
                        pdfReader.Close();
                }
            } 

  • 相关阅读:
    Java8 Stream Function
    PLINQ (C#/.Net 4.5.1) vs Stream (JDK/Java 8) Performance
    罗素 尊重 《事实》
    小品 《研发的一天》
    Java8 λ表达式 stream group by max then Option then PlainObject
    这人好像一条狗啊。什么是共识?
    TOGAF TheOpenGroup引领开发厂商中立的开放技术标准和认证
    OpenMP vs. MPI
    BPMN2 online draw tools 在线作图工具
    DecisionCamp 2019, Decision Manager, AI, and the Future
  • 原文地址:https://www.cnblogs.com/OwenWu/p/1776465.html
Copyright © 2011-2022 走看看