注釈でテキストボックスを追加 (FreeText)
- ページは回転0度、座標は注釈、MediaBox、CropBoxとで原点(0,0)の位置は同じと仮定する
(() => {
const doc = this;
const pageNum1Baseds = [...Array(doc.numPages)].map( (_null, i) => i + 1 );
const [x1mm, y1mm] = [10, 5];
const [x2mm, y2mm] = [x1mm + 100, y1mm + 50];
const rot = 0;
const [x1, y1, x2, y2] = [x1mm, y1mm, x2mm, y2mm].map(
x => (72 / 25.4) * x
);
const pageNums = pageNum1Baseds.map( p => p - 1 );
doc.syncAnnotScan();
pageNums.forEach( pageNum => {
const annotFreeText = addAnnot({
page: pageNum, type: "FreeText",
rect: [x1, y1, x2, y2], rotate: rot,
contents:
"書式は\r" +
"テキストのプロパティにて\r" +
"手動で設定してください",
style: "S",
borderEffectStyle: "",
strokeColor: ["RGB", 192 / 255, 0 / 255, 0 / 255],
opacity: 1.0, width: 1, fillColor: ["T"],
author: "作成者", subject: "タイトル",
modDate: util.scand("yyyy/mm/dd HH:MM:ss", "2022/03/01 09:00:00"),
lock: false, readOnly: false,
hidden: false, noView: false, toggleNoView: false,
print: true, delay: false
});
});
})();
注釈で長方形を追加 (Square)
- ページは回転0度、座標は注釈、MediaBox、CropBoxとで原点(0,0)の位置は同じと仮定する
(() => {
const doc = this;
const pageNum1Baseds = [...Array(doc.numPages)].map( (_null, i) => i + 1 );
const [x1mm, y1mm] = [20, 5];
const [x2mm, y2mm] = [210 - 10, 297 - 5];
const [x1, y1, x2, y2] = [x1mm, y1mm, x2mm, y2mm].map(
x => (72 / 25.4) * x
);
const pageNums = pageNum1Baseds.map( p => p - 1 );
pageNums.forEach( pageNum => {
const annotSquare = doc.addAnnot({
page: pageNum, type: "Square",
rect: [x1, y1, x2, y2],
style: "S",
borderEffectStyle: "",
strokeColor: ["RGB", 192 / 255, 0 / 255, 0 / 255],
opacity: 1.0, width: 1, fillColor: ["T"],
author: "作成者", subject: "タイトル",
modDate: util.scand("yyyy/mm/dd HH:MM:ss", "2022/03/01 10:00:00"),
lock: false, readOnly: false,
hidden: false, noView: false, toggleNoView: false,
print: true, delay: false
});
});
})();
注釈で線を追加 (Line)
- ページは回転0度、座標は注釈、MediaBox、CropBoxとで原点(0,0)の位置は同じと仮定する
(() => {
const doc = this;
const pageNum1Baseds = [...Array(doc.numPages)].map( (_null, i) => i + 1 );
const [x1mm, y1mm] = [0, 0];
const [x2mm, y2mm] = [210, 297];
const [x1, y1, x2, y2] = [x1mm, y1mm, x2mm, y2mm].map(
x => (72 / 25.4) * x
);
const pageNums = pageNum1Baseds.map( p => p - 1 );
pageNums.forEach( pageNum => {
const annotLine = doc.addAnnot({
page: pageNum, type: "Line",
points: [[x1, y1], [x2, y2]],
leaderExtend: (72 / 25.4) * 0, leaderLength: (72 / 25.4) * 0,
arrowBegin: "None", arrowEnd: "None",
style: "S",
strokeColor: ["RGB", 192 / 255, 0 / 255, 0 / 255],
opacity: 1.0, width: 1, fillColor: ["T"],
author: "作成者", subject: "タイトル",
modDate: util.scand("yyyy/mm/dd HH:MM:ss", "2022/03/01 11:00:00"),
lock: false, readOnly: false,
hidden: false, noView: false, toggleNoView: false,
print: true, delay: false
});
});
})();
注釈の作成者などを変更
(() => {
const doc = this;
const pageNum = doc.pageNum;
doc.syncAnnotScan();
const anns = doc.getAnnots({
nPage: pageNum,
nSortBy: ANSB_None, bReverse: false, nFilterBy: ANFB_ShouldNone
});
anns.forEach( ann => {
ann.hidden = false;
ann.readOnly = false;
ann.lock = false;
ann.author = "作成者";
ann.subject = "タイトル";
});
})();
フラット化 (flattenPages)
- 注釈の内容を十分に確認し、バックアップをとってから実行したほうが良いと思います
if (true) {
this.syncAnnotScan();
this.flattenPages(this.pageNum, this.pageNum + 0);
} else {
undefined;
}