VB.net 2010 视频教程 VB.net 2010 视频教程 python基础视频教程
SQL Server 2008 视频教程 c#入门经典教程 Visual Basic从门到精通视频教程
当前位置:
首页 > c#编程 >
  • 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/p/17496661.html


相关教程