Excel VBA-使用VBA裁剪PDF页面

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

我编写了一段代码,裁剪pdf页面,然后使用AdobeAcrobat10.0TypeLibraryforExcelVBA在全局pdf中重新插入该页面。 这段代码在我的电脑上运行得很好,但在我的一位同事身上运行得太快了。我认为它可能来自于解析(我的是1440x900,我的同事是1600x900),但我不知道解析会在代码中产生什么影响

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
应该是最后一个参数

参数:

  • nStartPage
    :裁剪的第一页。PDDoc对象中的第一个页面是 第0页
  • 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 )