VB.net 2010 视频教程 VB.net 2010 视频教程 python基础视频教程
SQL Server 2008 视频教程 c#入门经典教程 Visual Basic从门到精通视频教程
当前位置:
首页 > c#编程 >
  • C# 图片转PDF,PDF增加水印文字

  好久没写博客了,今天给大家分享一个图片转PDF的相关操作,也算是一次总结吧。

  首先需要准备动态库itextsharp.dll,这个dll去网上下载,都可以下载到,C#对PDF的操作都是基于这个类库来实现的。话不多说,直接上代码。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
/// <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;
}

  


相关教程