dit is de java script
if (app.viewerVersion < 10) {
app.addMenuItem({ cName: "AddLinksToBible", cUser: "Add Links To Bible", cParent: "Tools", nPos: -1,
cExec: "addLinksToBible()", cEnable: "event.rc = (event.target != null);"});
app.addMenuItem({ cName: "DiscloseFile", cUser: "Disclose File", cParent: "Tools", nPos: 0,
cExec: "discloseFile()", cEnable: "event.rc = (event.target != null);"});
} else {
app.addToolButton({ cName: "AddLinksToBible", cLabel: "Add Links To Bible", cTooltext: "Add Links To Bible",
cExec: "addLinksToBible()", cEnable: "event.rc = (event.target != null);"});
app.addToolButton({ cName: "DiscloseFile", cLabel: "Disclose File", cTooltext: "Disclose File",
cExec: "discloseFile()", cEnable: "event.rc = (event.target != null);"});
app.addToolButton({ cName: "OffsetLinks", cLabel: "Offset Links", cTooltext: "Offset Links",
cExec: "offsetLinks()", cEnable: "event.rc = (event.target != null);"});
}
var booksFullNames = ["Genesis", "Exodus", "Leviticus", "Numeri", "Deuteronomium", "Jozua", "Rechters", "Ruth", "1Samuël", "2Samuël",
"1Koningen", "2Koningen", "1Kronieken", "2Kronieken", "Ezra", "Nehemia", "Esther", "Job", "Psalm", "Spreuken", "Prediker",
"Hooglied", "Jesaja", "Jeremia", "Klaagliederen", "Ezechiël", "Daniël", "Hosea", "Joël", "Amos", "Obadja", "Jona", "Micha", "Nahum",
"Habakuk", "Zefanja", "Haggaï", "Zacharia", "Maleachi",
"Mattheüs", "Markus", "Lukas", "Johannes", "Handelingen", "Romeinen", "1Korinthiërs", "2Korinthiërs", "Galaten",
"Efeziërs", "Filippenzen", "Kolossenzen", "1Thessalonicenzen", "2Thessalonicenzen", "1Timotheüs", "2Timotheüs", "Titus", "Filemon",
"Hebreeën", "Jakobus", "1Petrus", "2Petrus", "1Johannes", "2Johannes", "3Johannes", "Judas", "Openbaring"
];
var booksMediumNames = [
"Gen", "Ex", "Lev", "Num", "Deut", "Joz", "Rechters", "Ruth", "1Sam", "2Sam",
"1Kon", "2Kon", "1Kron", "2Kron", "Ezra", "Neh", "Esth", "Job", "Ps", "Spr", "Pred",
"Hoogl", "Jes", "Jer", "Klaagl", "Ezech", "Dan", "Hos", "Joël", "Amos", "Obadja", "Jona", "Micha", "Nahum",
"Hab", "Zef", "Hag", "Zach", "Mal",
"Matth", "Mark", "Luk", "Joh", "Hand", "Rom", "1Kor", "2Kor", "Gal",
"Ef", "Fil", "Kol", "1Thess", "2Thess", "1Tim", "2Tim", "Tit", "Filem",
"Hebr", "Jak", "1Petr", "2Petr", "1Joh", "2Joh", "3Joh", "Jud", "Openb"
];
var booksShortNames = [ "Ge", "Ex", "Le", "Nu", "De", "Joz", "Re", "Ru", "1Sa", "2Sa",
"1Kon", "2Kon", "1Kr", "2Kr", "Ezr", "Ne", "Es", "Job", "Ps", "Sp", "Pr",
"Hgl", "Jes", "Jer", "Klg", "Ez", "Da", "Ho", "Joë", "Am", "Ob", "Jon", "Mi", "Na",
"Hab", "Ze", "Hag", "Za", "Mal",
"Mt", "Mr", "Lu", "Jo", "Han", "Ro", "1Kor", "2Kor", "Ga",
"Ef", "Fil", "Kol", "1Th", "2Th", "1Ti", "2Ti", "Tit", "Flm",
"Heb", "Jak", "1Pe", "2Pe", "1Jo", "2Jo", "3Jo", "Ju", "Opb"
];
var namedDests = ["Ge", "Ex", "Le", "Nu", "De", "Joz", "Re", "Ru", "1Sa", "2Sa",
"1Kon", "2Kon", "1Kr", "2Kr", "Ezr", "Ne", "Es", "Job", "Ps", "Sp", "Pr",
"Hgl", "Jes", "Jer", "Klg", "Ez", "Da", "Ho", "Joe", "Am", "Ob", "Jon",
"Mi", "Na", "Hab", "Ze", "Hag", "Za", "Mal",
"Mt", "Mr", "Lu", "Jo", "Han", "Ro", "1Kor", "2Kor", "Ga", "Ef", "Fil", "Kol",
"1Th", "2Th", "1Ti", "2Ti", "Tit", "Flm", "Heb", "Jak", "1Pe", "2Pe",
"1Jo", "2Jo", "3Jo", "Ju", "Opb"
];
function discloseFile() {
this.addScript("init", "this.disclosed=true;");
app.alert("Done.",3);
}
function offsetLinks() {
var resp = app.response("Enter the offset (in points):","", "16");
if (resp==null || resp=="" || isNaN(+resp)) return;
var offset = +resp;
for (var i=0; i<this.numFields; i++) {
var f = this.getField(this.getNthFieldName(i));
if (f==null) continue;
if (f.type=="button" && /^_/.test(f.name)) {
var r = f.rect;
r[0]-=offset;
r[1]-=offset;
r[2]-=offset;
r[3]-=offset;
f.rect = r;
}
}
app.alert("Done.",3);
}
//addLinksToBible(2,9,9);
function addLinksToBible() {
var mode, firstPage, lastPage;
var dialog1 = {
initialize: function (dialog) {
dialog.load({
rad1: true,
txt1: "1",
txt2: ""+this.parentDoc.numPages,
})
},
cancel: function(dialog) {
return;
},
destroy: function(dialog) {
return;
},
commit:function (dialog) {
var results = dialog.store();
if (results["rad1"]) mode = 1;
else if (results["rad2"]) mode = 2;
else if (results["rad3"]) mode = 3;
firstPage = Number(results["txt1"])-1;
lastPage = Number(results["txt2"])-1;
return;
},
validate:function (dialog) {
var results = dialog.store();
if (results["rad1"]==false && results["rad2"]==false && results["rad3"]==false) {
app.alert("You must select the book names mode.");
return false;
}
if (results["txt1"]==null || results["txt1"]=="" || isNaN(+results["txt1"]) ||
results["txt2"]==null || results["txt2"]=="" || isNaN(+results["txt2"])) {
app.alert("Invalid page range.");
return false;
}
return true;
},
description: {
name: "",
align_children: "align_left",
width: 350,
height: 100,
elements:[
{
type: "cluster",
name: "Add Bible Links",
align_children: "align_left",
elements:[
{
type: "static_text",
name: "Select the type of book names:"
},
{
type: "view",
align_children: "align_distribute",
elements:[
{
group_id: "mode",
item_id: "rad1",
type: "radio",
name: "Short names",
width: 20,
height: 20,
},
{
group_id: "mode",
item_id: "rad2",
type: "radio",
name: "Medium names",
width: 20,
height: 20,
},
{
group_id: "mode",
item_id: "rad3",
type: "radio",
name: "Long names",
width: 20,
height: 20,
}
]
},
{
type: "static_text",
name: "Which pages to process:"
},
{
type: "view",
align_children: "align_distribute",
elements:[
{
item_id: "txt1",
type: "edit_text",
width: 40,
},
{
type: "static_text",
name: "-"
},
{
item_id: "txt2",
type: "edit_text",
width: 40,
}
]
},
{ type: "gap"},
{
alignment: "align_right",
type: "ok_cancel",
ok_name: "OK",
cancel_name: "Cancel"
},
]
},
]
}
};
dialog1.parentDoc = this;
if (app.execDialog(dialog1)!="ok") {return};
function openBibleLink() {
var bibleFileName = "2006 'bi' BIJBEL genootsch";
var bibleDoc = app.openDoc({cPath: bibleFileName, oDoc: this, cDest: event.target.name});
if (bibleDoc==null) {
app.alert("Error! Can't locate the bible file: " + bibleFileName);
return;
}
}
var bookNames;
if (mode==1) { // short names
bookNames = [].concat(booksShortNames);
} else if (mode==2) { // medium names
bookNames = [].concat(booksMediumNames);
} else if (mode==3) { // full names
bookNames = [].concat(booksFullNames);
}
for (var i in bookNames) bookNames[i]=bookNames[i].toLowerCase();
//console.println(bookNames);
var startTime = new Date();
var t = app.thermometer;
t.duration = (lastPage - firstPage);
t.begin();
var counter = 0;
//console.clear();
for (var p=firstPage; p<=lastPage; p++) {
console.println("Processing page #"+p);
t.value = (p-firstPage)+1;
t.text = "Processing page " + ((p-firstPage)+1) + "/" + ((lastPage - firstPage)+1);
var numWords = this.getPageNumWords(p);
for (var i=0; i<numWords-2; i++) {
//console.println("Processing word #"+i);
var word = this.getPageNthWord(p,i,true).toLowerCase();
word = word.replace(/^\(/,"");
var wordFull = this.getPageNthWord(p,i,false);
var wordRect = convertWordQuadsToRect(this, p, i);
if (bookNames.indexOf(word)==-1 || bookNames.indexOf(word)==42) {
var prevWord = "";
if (i>0) prevWord=this.getPageNthWord(p,i-1,true).toLowerCase();
if (prevWord!="" && /^\d$/.test(prevWord)) {
word = prevWord+word;
var prevWordRect = convertWordQuadsToRect(this, p, i-1);
wordRect[0] = prevWordRect[0];
}
}
word = word.replace(/^\(/,"");
//console.println("word: " + word);
if (bookNames.indexOf(word)!=-1) {
//console.println("MATCH");
var word1 = this.getPageNthWord(p,i+1,true).toLowerCase();
var word2 = this.getPageNthWord(p,i+2,true).toLowerCase();
if (/^\d+$/.test(word1)) {
if (/^\d+$/.test(word2)) {
//var r1 = convertWordQuadsToRect(this, p, i);
var r2 = convertWordQuadsToRect(this, p, i+2);
var r;
if (wordRect[1]==r2[1]) {
r = [wordRect[0],wordRect[1],r2[2],wordRect[3]];
createBibleLink(this, p, r, word, word1, word2, bookNames);
}
else {
r = [wordRect[0],wordRect[1],wordRect[2],wordRect[3]];
createBibleLink(this, p, r, word, word1, word2, bookNames);
var r3 = convertWordQuadsToRect(this, p, i+1);
r = [r3[0],r3[1],r2[2],r3[3]];
createBibleLink(this, p, r, word, word1, word2, bookNames);
}
counter++;
} else {
//var r1 = convertWordQuadsToRect(this, p, i);
var r2 = convertWordQuadsToRect(this, p, i+1);
r = [wordRect[0],wordRect[1],r2[2],wordRect[3]];
createBibleLink(this, p, r, word, word1, "", bookNames);
counter++;
}
}
} else if (wordFull=="¨ " || wordFull=="¨") {
//console.println(i+":"+wordFull)
word = this.getPageNthWord(p,i-1,true).toLowerCase();
if (/u$/.test(word)) {
word = word.replace(/u$/, "ü");
}
word+=this.getPageNthWord(p,i+1,true).toLowerCase();
word = word.replace(/\s/g,"");
//console.println("full word: " + word);
if (bookNames.indexOf(word)!=-1) {
i++;
//console.println("MATCH");
wordRect = convertWordQuadsToRect(this, p, i-2);
var word1 = this.getPageNthWord(p,i+1,true).toLowerCase();
var word2 = this.getPageNthWord(p,i+2,true).toLowerCase();
if (/^\d+$/.test(word1)) {
if (/^\d+$/.test(word2)) {
//var r1 = convertWordQuadsToRect(this, p, i);
var r2 = convertWordQuadsToRect(this, p, i+2);
var r;
if (wordRect[1]==r2[1]) {
r = [wordRect[0],wordRect[1],r2[2],wordRect[3]];
createBibleLink(this, p, r, word, word1, word2, bookNames);
}
else {
r = [wordRect[0],wordRect[1],wordRect[2],wordRect[3]];
createBibleLink(this, p, r, word, word1, word2, bookNames);
var r3 = convertWordQuadsToRect(this, p, i+1);
r = [r3[0],r3[1],r2[2],r3[3]];
createBibleLink(this, p, r, word, word1, word2, bookNames);
}
counter++;
} else {
//var r1 = convertWordQuadsToRect(this, p, i);
var r2 = convertWordQuadsToRect(this, p, i+1);
r = [wordRect[0],wordRect[1],r2[2],wordRect[3]];
createBibleLink(this, p, r, word, word1, "", bookNames);
counter++;
}
}
}
} else {
// in case the book name and chapter number are connected
for (var j in bookNames) {
var reg = new RegExp("^"+bookNames[j]+"\\d+");
if (reg.test(word)) {
var word1 = this.getPageNthWord(p,i+1,true).toLowerCase();
if (/^\d+$/.test(word1)) {
var chapterNumber = word.match(/\d+$/)[0];
var bookName = word.replace(new RegExp(chapterNumber+"$"),"");
//var r1 = convertWordQuadsToRect(this, p, i);
var r2 = convertWordQuadsToRect(this, p, i+1);
r = [wordRect[0],wordRect[1],r2[2],wordRect[3]];
createBibleLink(this, p, r, bookName, chapterNumber, word1, bookNames);
counter++;
}
break;
}
}
}
}
}
t.end();
var endTime = new Date();
//console.println("Run time: " + ((endTime-startTime)/1000));
this.addScript("BibleLinks", openBibleLink);
app.alert("Done. " + counter + " links were created.",3);
}
function createBibleLink(doc, p, r, book, chapter, verse, bookNames) {
var bookIndex = bookNames.indexOf(book);
if (bookIndex==-1) {
console.println("Error! Could not locate the index for: " + book);
return false;
}
/*var pageCropBox = doc.getPageBox("Crop", p);
var pageBBox = doc.getPageBox("BBox", p);
var xOffset = pageBBox[0]-pageCropBox[0];
var yOffset = pageBBox[1]-pageCropBox[1];
console.println("xOffset:"+xOffset);
console.println("yOffset:"+yOffset);*/
/*xOffset = 16;
yOffset = 16;
r[0]-=xOffset;
r[2]-=xOffset;
r[1]-=yOffset;
r[3]-=yOffset;*/
var bookDestName = namedDests[bookIndex]
var destName = bookDestName+"_"+chapter;
if (verse!=null && verse!="" && verse!="1")
destName+="_"+verse;
var f = doc.addField(destName, "button", p, r);
f.setAction("MouseUp", "openBibleLink()");
f.lineWidth = 0;
//f.strokeColor = color.ltGray;
f.userName = "Click to jump to this location in the Bible file.";
}
function convertWordQuadsToRect(doc, p, i) {
return convertQuadsToRect(doc, p, doc.getPageNthWordQuads(p, i));
}
function convertQuadsToRect(doc, p, q) {
var m = (new Matrix2D).fromRotated(doc,p);
var mInv = m.invert()
var r = mInv.transform(q)
r = r.toString()
r = r.split(",");
return [+r[4], +r[3], +r[2], +r[5]];
}
de boek waar hij naar moet verwijzen is een andere maar als ik deze naam veranderd doet hij niks