選択されたスタンプのAPを表示
- app.response のテキストボックス部分に this.selectedAnnots[0].AP を表示する
var str = "(" + (() => {
try {
const annot = this.selectedAnnots[0];
const rect = annot.rect.map(x => (25.4/72)*x);
app.response({
cTitle: "this.selectedAnnots[0]",
cQuestion:
"type:\r" +
annot.type + "\r\r" +
"ページ回転:\r" +
this.getPageRotation(this.pageNum) + "\r\r" +
"注釈回転:\r" +
annot.rotate + "\r\r" +
"(rect[0], rect[1]), (rect[2], rect[3]) [mm]:\r" +
util.printf(
"(%.2f, %.2f), (%.2f, %.2f)", rect[0], rect[1], rect[2], rect[3]
) + "\r\r" +
"rect[2] - rect[0], rect[3] - rect[1] [mm]:\r" +
util.printf(
"%.2f, %.2f", rect[2] - rect[0], rect[3] - rect[1]
),
cLabel: "AP:",
cDefault: annot.AP
});
}
catch(e){
}
}).toString() + ")();";
app.addMenuItem({
cName: "TestGetNamedAppearanceOfTheStamp",
cUser: "選択されたスタンプのAPを表示",
cParent: "View",
nPos: 0,
cExec: str,
cEnable: "event.rc = (event.target != null)",
cMarked: "event.rc = false",
bPrepend: true
});
スタンプの貼り付け
- default user space がよく分からないので次の内容を仮定する
- ページは回転0度
- 座標は注釈、MediaBox、CropBoxとで原点(0,0)の位置は同じ
(() => {
const myAP = "Approved";
const [x1, y1, x2, y2] = [10, 20, 110, 45.57].map(x => (72/25.4)*x);
const myRotate = 0;
const doc = this;
const annotStamp = doc.addAnnot({
page: 0, type: "Stamp",
AP: myAP,
rect: [x1, y1, x2, y2], rotate: myRotate,
strokeColor: ["RGB", 192/255, 0/255, 0/255],
opacity: 1.00,
author: "作成者", subject: "タイトル",
modDate: util.scand("yyyy/mm/dd HH:MM:ss", "2022/01/23 12:34:56"),
lock: false, readOnly: false,
hidden: false, noView: false, toggleNoView: false,
print: true, delay: false
});
})()
VBAでパスを取得(app.getPath)
Option Explicit
Public Sub Main()
Dim pdDoc As Object
Dim fileName As String
Dim jso As Object
Dim pathAcroUsrRoot As String
Dim pathAcroUsrJS As String
Dim pathAcroUsrStamp As String
fileName = VBA.Interaction.Environ("USERPROFILE") & "\Desktop\文書.pdf"
Set pdDoc = VBA.Interaction.CreateObject("AcroExch.PDDoc")
If Not pdDoc.Open(fileName) Then
Set pdDoc = Nothing
Exit Sub
End If
Set jso = pdDoc.GetJSObject()
pathAcroUsrRoot = jso.app.getPath("user", "root")
pathAcroUsrJS = jso.app.getPath("user", "javascript")
pathAcroUsrStamp = jso.app.getPath("user", "stamps")
Set jso = Nothing
If Not pdDoc.Close() Then
Debug.Print "pdDoc.Close(): False"
End If
Set pdDoc = Nothing
Debug.Print "Root:" + VBA.Constants.vbCrLf + pathAcroUsrRoot
Debug.Print "JavaScript:" + VBA.Constants.vbCrLf + pathAcroUsrJS
Debug.Print "Stamps:" + VBA.Constants.vbCrLf + pathAcroUsrStamp
End Sub