Excel VBA-使用VBA裁剪PDF页面
我编写了一段代码,裁剪pdf页面,然后使用AdobeAcrobat10.0TypeLibraryforExcelVBA在全局pdf中重新插入该页面。 这段代码在我的电脑上运行得很好,但在我的一位同事身上运行得太快了。我认为它可能来自于解析(我的是1440x900,我的同事是1600x900),但我不知道解析会在代码中产生什么影响Excel VBA-使用VBA裁剪PDF页面,vba,excel,acrobat,Vba,Excel,Acrobat,我编写了一段代码,裁剪pdf页面,然后使用AdobeAcrobat10.0TypeLibraryforExcelVBA在全局pdf中重新插入该页面。 这段代码在我的电脑上运行得很好,但在我的一位同事身上运行得太快了。我认为它可能来自于解析(我的是1440x900,我的同事是1600x900),但我不知道解析会在代码中产生什么影响 Dim acroRect, jso, page As Object Dim pdf1 As Acrobat.CAcroPDDoc Dim nameFile, s, ex
Dim acroRect, jso, page As Object
Dim pdf1 As Acrobat.CAcroPDDoc
Dim nameFile, s, exportCroppedPDF As String
Set acroRect = CreateObject("AcroExch.Rect")
Set pdf1 = CreateObject("AcroExch.PDDoc")
nameFile = "namefile.pdf"
If pdf1.Open(nameFile) Then
Set jso = pdf1.GetJSObject
Set page = pdf1.AcquirePage(pdf1.GetNumPages() - 1)
'These values were found from some tests I did, there is no logic behind them
acroRect.bottom = 22
acroRect.Left = 35
acroRect.Right = 785
acroRect.Top = 589
page.CropPage (acroRect)
exportCroppedPDF = "pathAndNamefile.pdf"
s = jso.extractPages(0, pdf1.GetNumPages() - 1, exportCroppedPDF)
Else
Debug.Print ("Can't open the file!")
End If
pdf1.Close
Set pdf1 = Nothing
Set acroRect = Nothing
Set jso = Nothing
Set page = Nothing
Debug.Print ("Crop successful")
我对这个库一点也不熟悉(代码来自我在互联网上找到的代码片段),所以我可能写了一些错误的行(但它最初是有效的)。
非常感谢你的帮助 根据文档
cropages
有4个参数,其中acroRect
应该是最后一个参数
参数:
:裁剪的第一页。PDDoc对象中的第一个页面是 第0页李>nStartPage
:裁剪的最后一页nEndPage
值,指示裁剪范围内的哪些页面。必须是 以下其中一项:nEvenOrOddPagesOnly
表示裁剪范围内的所有页面0
表示仅裁剪范围内的奇数页1
表示仅裁剪范围内的偶数页2
指定裁剪矩形的acroRect
,该矩形为 在用户空间中指定李>AcroExch.Rect
请注意,
Dim nameFile,s,exportcrapedpdf As String
将只将最后一个变量定义为String
,前两个变量仍为Variant
类型。您必须为每个变量声明一个类型:Dim nameFile为String,s为String,exportcropedpdf为String
@Peh哦,我不知道,谢谢您的帮助information@Peh,很好,但无论屏幕分辨率如何,我都看不到裁剪页面的方法(如果有问题的话)-我会尝试一些方法,并让您知道,谢谢你的时间@我认为这不应该是屏幕分辨率的问题。我认为您使用了错误的参数,它应该适用于裁剪(0,0,0,acroRect)
。你能测试一下吗?@Peh在我的电脑上,裁剪动作非常有效,但在我同事的桌子上却不行,他的分辨率和我不一样。这就是为什么除了决议我什么都看不到,但你是对的,根据文件,我也不认为这是一个决议问题。今天早上晚些时候我会测试这个功能,我们会与您保持联系!谢谢@Peh你好,奇怪的是,没有任何变化,今天早上我同事的电脑上剪下来的PDF工作得很好。看来重启是不够的。另外,我今天测试了CropPages方法,它还使用了其中的前3个参数。非常感谢您抽出时间!
returnValue = Object.CropPages( nStartPage, nEndPage, nEvenOrOddPagesOnly, acroRect )