Foxtable(狐表)用户栏目专家坐堂 → [求助]如何给PDF文件添加水印


  共有2726人关注过本帖树形打印复制链接

主题:[求助]如何给PDF文件添加水印

帅哥哟,离线,有人找我吗?
5159518
  1楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:小狐 帖子:384 积分:2706 威望:0 精华:0 注册:2015/11/27 19:09:00
[求助]如何给PDF文件添加水印  发帖心情 Post By:2018/6/21 23:01:00 [只看该作者]

请教老师,我现在有一个表中有一个二进制列,用来存储pdf文件,现在想在这个PDF文件中添加三行水印,分别是:

订单已作废
作废日期:& 【作废日期】
操作人:& 【操作人】

请问老师,应该如何编写代码?

请老师做好代码注释,咱是小白,嘻嘻,还请老师指点

 回到顶部
帅哥哟,离线,有人找我吗?
有点甜
  2楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2018/6/22 0:07:00 [只看该作者]

mark pdf水印

 

Dim waterMarkName As String = "aaaaaabbbbcccc"
Dim reader As New iTextSharp.text.pdf.PdfReader("d:\test.pdf")

Dim msWater As new io.FileStream("d:\123.pdf", io.FileMode.Create)


Dim total  As Integer = reader.NumberOfPages
Dim pdfStamper As new iTextSharp.text.pdf.PdfStamper(Reader, msWater)

Dim psize = Reader.GetPageSize(1)
Dim width = psize.Width
Dim height = psize.Height
Dim gs As new iTextSharp.text.pdf.PdfGState
Dim basefont  As iTextSharp.text.pdf.BaseFont = iTextSharp.text.pdf.BaseFont.CreateFont("C:\WINDOWS\Fonts\SIMYOU.TTF", iTextSharp.text.pdf.BaseFont.IDENTITY_H, iTextSharp.text.pdf.BaseFont.NOT_EMBEDDED)
For i As Integer = 1 To total
   
    Dim waterContent = pdfStamper.GetOverContent(i)
    waterContent.SetGState(gs)
    waterContent.BeginText()
    waterContent.SetColorFill( iTextSharp.text.BaseColor.RED)
    waterContent.SetFontAndSize(basefont, 18)
    waterContent.SetTextMatrix(0, 0)
    waterContent.ShowTextAligned(iTextSharp.text.Element.ALIGN_CENTER, waterMarkName, width / 2, height / 2, 55)
    waterContent.EndText()
Next

pdfStamper.close
reader.Close()


 回到顶部
帅哥哟,离线,有人找我吗?
有点甜
  3楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2018/6/22 0:12:00 [只看该作者]

2楼的代码,你要先引用dll

 

下载信息  [文件大小:1.3 MB  下载次数:5]
图片点击可在新窗口打开查看点击浏览该文件:itextsharp.zip


 回到顶部
帅哥哟,离线,有人找我吗?
5159518
  4楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:小狐 帖子:384 积分:2706 威望:0 精华:0 注册:2015/11/27 19:09:00
  发帖心情 Post By:2018/6/22 0:58:00 [只看该作者]

谢谢老师,只是代码没有注释,一时半会看不明白,不知道要如何修改才能完全嵌入到我的代码里面

 回到顶部
帅哥哟,离线,有人找我吗?
5159518
  5楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:小狐 帖子:384 积分:2706 威望:0 精华:0 注册:2015/11/27 19:09:00
  发帖心情 Post By:2018/6/22 1:00:00 [只看该作者]

另外,我需要添加的是三行水印,应该如何修改?

 回到顶部
帅哥哟,离线,有人找我吗?
5159518
  6楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:小狐 帖子:384 积分:2706 威望:0 精华:0 注册:2015/11/27 19:09:00
  发帖心情 Post By:2018/6/22 2:13:00 [只看该作者]

Dim waterMarkName As String = "报价单已作废!" & vbcrlf & " 作废日期: " & dr("作废日期")  & vbcrlf & "操作人: " & dr("作废人")

这行代码究竟错在哪里呢?编译没有报错,可是执行完之后没有换行,究竟啥意思?

 回到顶部
帅哥哟,离线,有人找我吗?
有点甜
  7楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2018/6/22 10:11:00 [只看该作者]

参考代码

 

 

Dim waterMarkName As String = "aaaaaabbbbcccc" & chr(13) & "123456" & chr(13) & "11111"
Dim reader As New iTextSharp.text.pdf.PdfReader("d:\test.pdf")

Dim msWater As new io.FileStream("d:\123.pdf", io.FileMode.Create)

Dim total  As Integer = reader.NumberOfPages
Dim pdfStamper As new iTextSharp.text.pdf.PdfStamper(Reader, msWater)

Dim psize = Reader.GetPageSize(1)
Dim width = psize.Width
Dim height = psize.Height
Dim gs As new iTextSharp.text.pdf.PdfGState
Dim basefont  As iTextSharp.text.pdf.BaseFont = iTextSharp.text.pdf.BaseFont.CreateFont("C:\WINDOWS\Fonts\SIMYOU.TTF", iTextSharp.text.pdf.BaseFont.IDENTITY_H, iTextSharp.text.pdf.BaseFont.NOT_EMBEDDED)
For i As Integer = 1 To total
    Dim waterContent = pdfStamper.GetOverContent(i) 'GetUnderContent(i)
    waterContent.SetGState(gs)
    waterContent.BeginText()
    waterContent.SetColorFill( iTextSharp.text.BaseColor.RED)
    waterContent.SetFontAndSize(basefont, 18)
    waterContent.SetTextMatrix(0, 0)
    Dim ary = waterMarkName.split(chr(13))
    For j As Integer = 0 To ary.length-1
        Dim s As String = ary(j)
        s = s.PadRight(20)
        waterContent.ShowTextAligned(iTextSharp.text.Element.ALIGN_left, s, (width-50)/2+j*20, height / 2-30*j, 45)
    Next
    waterContent.EndText()
Next

pdfStamper.close
reader.Close()


 回到顶部
帅哥哟,离线,有人找我吗?
5159518
  8楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:小狐 帖子:384 积分:2706 威望:0 精华:0 注册:2015/11/27 19:09:00
  发帖心情 Post By:2018/6/22 12:41:00 [只看该作者]

谢谢老师,幸苦了

 回到顶部