|
楼主 |
发表于 2024-1-28 01:34
|
显示全部楼层
本帖最后由 opiona 于 2024-2-20 19:24 编辑
纯VBA代码实现添加水印文字
- Sub TEST()
- Dim Path, PathB, StrX As String
- Dim IntAngle, IntFont As Integer
- Dim DouZoom, DouTSC As Double
- Path = ThisWorkbook.Path & "\1.pdf"
- PathB = ThisWorkbook.Path & "\4.pdf"
- StrX = "Watermarks TEST"
-
- IntFont = 40
- IntAngle = 30
- DouZoom = 1.5
- DouTSC = 0.3
- Call PDFWatermark(Path:=Path, StrX:=StrX, PathB:=PathB, IntFont:=IntFont, DouZoom:=DouZoom, IntAngle:=IntAngle, DouTSC:=DouTSC)
- End Sub
- Sub PDFWatermark(ByVal Path As String, ByVal StrX As String, Optional ByVal PathB As String = "", Optional ByVal IntFont As Integer = 20, Optional ByVal DouZoom As Double = 1, Optional ByVal IntAngle As Integer = 45, Optional ByVal DouTSC As Double = 0.3)
- Rem 添加PDF水印
- Rem Path 原始PDF文件全路径
- Rem StrX 水印文字; 参数1: 水印内容,换行使用 \r 好像汉字会乱码
- Rem PathB 保存PDF文件全路径
- Rem IntFont 字体大小=20; 参数4: 字体大小
- Rem DouZoom 显示倍数=1; 参数16: 水印的比例,其中1.0是100%。-1指定水印应适合于页面,同时保持其比例。默认值是1
- Rem IntAngle 旋转度数=45; 参数18: 逆时针旋转度数,默认0
- Rem DouTSC 透明度数=0.3; 参数19: 水印是否(0,1)透明,默认1不透明
-
- Rem 引用: Adobe Acrobat X.0 Type Library 和 AcroBrokerLib
- Rem Call PDFWatermark(Path, StrX, PathB)
-
- Rem 下面这个用法是 加字符水印(AP - 100), 水印系统参数全部使用系统默认的:
- Rem jso.addWaterMarkFromText ("AP-100")
-
- Rem 下面这个用法是添加字符水印(watermarks TEST),带各种水印参数:
- Rem 1=文本,2=对齐,3=字体,4=字体大小
- Rem 5=颜色,6=开始页,7=结束页,8=真值在水印上
- Rem 9=屏幕显示水印,10=打印时有水印,11=水印水平位置,12=水印垂直位置
- Rem 13=水平位移值,或百分比,14=垂直位移值,或百分比,15=位移适用百分比,16=显示倍数
- Rem 17=保持水印自身大小,18=角度,19=透明度或灰度
-
- Dim pdApp As Acrobat.AcroApp
- Dim pdDoc As Acrobat.AcroPDDoc
- Dim pdPage As Acrobat.AcroPDPage
- Dim jso As Object
- Dim IntPageCount, IntStarPage, IntEndPage As Integer '//页码
-
- Set pdApp = CreateObject("AcroExch.App")
- Set pdDoc = CreateObject("AcroExch.PDDoc")
- pdDoc.Open (Path) '这里加个循环变量就可以实现动态的打开指定的pdf文件
- Set jso = pdDoc.GetJSObject
-
- IntPageCount = pdDoc.GetNumPages '//页码总数量
- IntStarPage = 0 '//参数:6=开始页 第一页从0 开始
- IntEndPage = IntPageCount - 1 '//参数:7=结束页 从0 开始 所以 -1
-
- Call jso.addWaterMarkFromText(StrX, jso.app.Constants.Align.Center, jso.Font.Helv, IntFont _
- , jso.Color.Black, IntStarPage, IntEndPage, True _
- , True, True, jso.app.Constants.Align.Center, jso.app.Constants.Align.Center _
- , 0, 0, False, DouZoom _
- , False, IntAngle, DouTSC)
-
- If PathB = "" Then PathB = Path
- pdDoc.Save 1, PathB '这里可以是不同于打开的pdf文件名,相当于另存为;如果是和打开的pdf文件名相同,自动保存不提示
- pdDoc.Close
- Set pdDoc = Nothing
- Set pdApp = Nothing
-
- End Sub
复制代码 |
|