【问题标题】:Excel VBA - Crop PDF page using VBAExcel VBA - 使用 VBA 裁剪 PDF 页面
【发布时间】:2018-06-20 07:12:34
【问题描述】:

我编写了一段代码,用于裁剪 pdf 页面,然后使用 Adob​​e Acrobat 10.0 Type Library for Excel VBA 将此页面重新插入到全局 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")

我对这个库一点也不满意(代码来自我在互联网上找到的代码片段)所以我可能写了一些错误的行(但它最初有效)。 非常感谢您的帮助!

【问题讨论】:

  • 请注意,Dim nameFile, s, exportCroppedPDF As String 只会将最后一个变量定义为 String,而前 2 个变量仍为 Variant 类型。您必须为 每个 变量声明一个类型:Dim nameFile As String, s As String, exportCroppedPDF As String.
  • @Peh 哦,我不知道,谢谢提供信息

标签: vba excel acrobat


【解决方案1】:

根据文档,CropPages 有 4 个参数,其中 acroRect 应该是最后一个。

returnValue = Object.CropPages( nStartPage, nEndPage, nEvenOrOddPagesOnly, acroRect ) 

参数:

  • nStartPage:被裁剪的第一页。 PDDoc 对象的第一页是 第 0 页。
  • nEndPage:被裁剪的最后一页。
  • nEvenOrOddPagesOnly 表示范围内哪些页面被裁剪的值。一定是 以下之一:
    • 0 表示裁剪范围内的所有页面
    • 1 表示仅裁剪范围内的奇数页
    • 2 表示仅裁剪范围内的偶数页
  • acroRect AcroExch.Rect 指定裁剪矩形,即 在用户空间中指定。

【讨论】:

  • @Peh,很好,但是无论屏幕分辨率如何,我都看不到裁剪页面的方法(如果是问题所在)-我会尝试一些事情并告诉你,感谢您的宝贵时间!
  • @Chris 好吧,我认为这不应该是屏幕分辨率的问题。我认为您以错误的方式使用了参数,它应该与CropPage (0,0,0,acroRect) 一起使用。你能测试一下吗?
  • @Peh 在我的电脑上,裁剪操作完美无缺,但在分辨率与我不同的同事的办公桌上却不行。这就是为什么我只看到分辨率,但你是对的,根据文档,我认为这也不是分辨率问题。今天早上晚些时候我会测试一下这个功能,我们一定会和你联系的!谢谢!
  • @Peh 你好,奇怪的是,没有任何更改,今天早上我同事的电脑上裁剪的 PDF 工作正常。似乎重新启动就足够了。另外,我今天测试了 CropPages 方法,它还可以使用其中的前 3 个参数。非常感谢您的宝贵时间!
猜你喜欢
  • 2015-10-11
  • 2011-03-23
  • 1970-01-01
  • 2010-10-02
  • 2017-12-06
  • 2014-12-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多