xlogI125’s blog

パソコン作業を効率化したい

Acrobat IAC練習 CropBoxを移動

メモ

その場しのぎで紙面上の文書を平行移動させて余白を調整する場合に便利だと思います。

使い捨てスクリプト

  • PDFを開いたウィンドウを表示させた状態でマクロを実行してください
  • 図形に「マクロの登録」すると効率的に実行できます
' Excel 2019, Acrobat Standard DC (2022年3月頃), Windows 11

' 参照設定
' Acrobat (Adobe Acrobat 10.0 Type Library)

Option Explicit

Public Sub MoveCropBox(ByVal moveXmm As Double, ByVal moveYmm As Double)

#Const DEBUG_ = False

#If DEBUG_ Then
  Dim avApp As Acrobat.AcroApp
  Dim pdDoc As Acrobat.AcroPDDoc
#Else
  Dim avApp As Object
  Dim pdDoc As Object
#End If

  Dim pageNum As Long
  Dim rBox() As Variant

  On Error GoTo ErrorHandler

  Set avApp = VBA.Interaction.CreateObject(Class:="AcroExch.App")
  Set pdDoc = avApp.GetActiveDoc().GetPDDoc()

  pageNum = pdDoc.OpenAVDoc("").GetAVPageView().GetPageNum()

  rBox = pdDoc.GetJSObject().getPageBox("Crop", pageNum)

  rBox(0) = rBox(0) + moveXmm * 72 / 25.4
  rBox(3) = rBox(3) + moveYmm * 72 / 25.4
  rBox(2) = rBox(2) + moveXmm * 72 / 25.4
  rBox(1) = rBox(1) + moveYmm * 72 / 25.4

  pdDoc.GetJSObject().setPageBoxes "Crop", pageNum, pageNum, rBox

ErrorHandler:
  Set pdDoc = Nothing
  Set avApp = Nothing
  Debug.Print VBA.Conversion.Error(VBA.Information.Err.Number)

End Sub

Public Sub 移動_上方向5mm()
  MoveCropBox moveXmm:=0, moveYmm:=-5
End Sub

Public Sub 移動_下方向5mm()
  MoveCropBox moveXmm:=0, moveYmm:=5
End Sub

Public Sub 移動_左方向5mm()
  MoveCropBox moveXmm:=5, moveYmm:=0
End Sub

Public Sub 移動_右方向5mm()
  MoveCropBox moveXmm:=-5, moveYmm:=0
End Sub