Skip to content

Instantly share code, notes, and snippets.

@milligramme
Created June 5, 2014 00:43
Show Gist options
  • Select an option

  • Save milligramme/88a0c8789e0895b2e8da to your computer and use it in GitHub Desktop.

Select an option

Save milligramme/88a0c8789e0895b2e8da to your computer and use it in GitHub Desktop.
#target "InDesign-7.0"
var scan_characters = function (obj) {
var ary = [];
var c = obj.characters;
for (var i=0, len=c.length; i < len ; i++) {
if (c[i].contents === '\u0016') {
var cell = c[i].tables[0].cells;
for (var ii=0, llen=cell.length; ii < llen ; ii++) {
ary.push(get_content(cell[ii]));
};
}
else if (c[i].contents === '\ufffc') {
if ('contents' in c[i].pageItems[0]) {
arguments.callee(c[i].pageItems[0]);
}
}
else {
ary.push(c[i].contents);
}
}
return ary
}
var get_content = function (obj) {
if (obj.constructor.name !== 'Group') {
if ('contents' in obj) {
var ret = scan_characters(obj);
return ret.join("");
}
}
else {
var op = obj.pageItems;
for (var i=0, len=op.length; i < len ; i++) {
arguments.callee(op[i]);
};
}
}
if (new File($.fileName).name==$.stack.replace(/[\[\]\n]/g,"")) {
var page = app.documents[0].pages[0];
var pitm = page.pageItems;
var ar = [];
var _ar, _r;
for (var i=0, len=pitm.length; i < len ; i++) {
ar.push(pitm[i]);
};
_ar = ar.sort(function (a,b) {
return a.geometricBounds[0] > b.geometricBounds[0];
})
for (var i=0, len=_ar.length; i < len ; i++) {
if ('contents' in _ar[i]) {
_r = get_content(_ar[i])
$.writeln(_r);
}
};
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment