QQ登录

只需一步,快速开始

华印网

快捷导航
查看: 184|回复: 3
收起左侧

关于ID提取字符样式的脚本插件求会编写的修改更新

[复制链接]
  • TA的每日心情
    开心
    2020-11-24 11:37
  • 发表于 2020-11-24 12:48:52 | 显示全部楼层 |阅读模式
    1. //0ne or two level TOC contents CharacterStyle.js
    2. //one level: only need select *[None]* CharacterStyle in the 2nd dialogs.
    3. myDocument = app.documents[0];
    4. myAllCharaStyleNames = myDocument.characterStyles.everyItem().name;
    5. //Create 1st dialog.
    6. var myDialog = app.dialogs.add({name:"TOC 1st Level CharacterStyle",canCancel:true});
    7. with(myDialog){
    8.         with(dialogColumns.add()){
    9.                 staticTexts.add({staticLabel:"TOC 1st Level CharacterStyle"});
    10.                 staticTexts.add({staticLabel:"Select OneOfAll"});
    11.                 my1stCharaStyleDropdown = dropdowns.add({stringList:myAllCharaStyleNames, selectedIndex:1, minWidth:150});
    12.         }
    13. }
    14. if(myDialog.show() == true){
    15.         my1stCharaStyle = myAllCharaStyleNames[my1stCharaStyleDropdown.selectedIndex];
    16.         for(s =0; s<=myDocument.stories.length-1; s++){
    17.                 myStory = myDocument.stories[s];
    18.                 if(myStory.characters.length !=0){
    19.                         myStory.insertionPoints[-1].contents = SpecialCharacters.emSpace; //" "
    20.                         myStory.characters[-1].appliedCharacterStyle = myDocument.characterStyles.item(my1stCharaStyle);
    21.                 }
    22.         }
    23.         app.findPreferences = NothingEnum.nothing;
    24.         app.changePreferences = NothingEnum.nothing;
    25.         app.findPreferences.appliedCharacterStyle = myDocument.characterStyles.item(my1stCharaStyle);
    26.         myCharaFound = myDocument.search("", false, false,undefined);
    27.         ////Create 2nd dialog.
    28.         try{
    29.                 myDocument.characterStyles.item("[None]").name;
    30.         }
    31.         catch(e){
    32.                 myNoneCharaStyle = myDocument.characterStyles.add({name:"[None]"});
    33.         }
    34.         myAllCharaStyleNames = myDocument.characterStyles.everyItem().name;
    35.         //myNoneCharaStyle.name = "[None]";
    36.         var myDialog1 = app.dialogs.add({name:"TOC 2nd Level CharacterStyle",canCancel:true});
    37.         with(myDialog1){
    38.                 with(dialogColumns.add()){
    39.                         staticTexts.add({staticLabel:"TOC 2nd Level CharacterStyle"});
    40.                         staticTexts.add({staticLabel:"Select OneOfAll"});
    41.                         my2ndCharaStyleDropdown = dropdowns.add({stringList:myAllCharaStyleNames, selectedIndex:1, minWidth:150});
    42.                 }
    43.         }
    44.         if(myDialog1.show() == true){
    45.                 my2ndCharaStyle = myAllCharaStyleNames[my2ndCharaStyleDropdown.selectedIndex];
    46.                 app.findPreferences = NothingEnum.nothing;
    47.                 app.changePreferences = NothingEnum.nothing;
    48.                 app.findPreferences.appliedCharacterStyle = myDocument.characterStyles.item(my2ndCharaStyle);
    49.         }
    50.         else{
    51.                 myDialog1.destroy();
    52.         }               
    53.         //
    54.         myTocLine = new Array;
    55.         myTocLine_ = new Array;
    56.         myParseInt = new Array;
    57.         var myCharaContent, myCharaPageNumber, myLine;
    58.         for(chara=myCharaFound.length-1; chara>=0; chara--){
    59.                 myChara = myCharaFound[chara];
    60.                 myCharaContentX = myChara.contents;
    61.                 try{
    62.                         A = /\r/gm;
    63.                         myCharaContent = myCharaContentX.replace(A, "");
    64.                 }
    65.                 catch(e){}
    66.                 try{
    67.                         myCharaPageNumber = getPageFromAnyObject(myChara.parentTextFrame).name;//.parent.name;
    68.                 }
    69.                 catch(e){}
    70.                 try{
    71.                         var myCharaContent_, myCharaPageNumber_, myLine_, myStart, myEnd, myText, myCharaFound_;
    72.                         myStart = myCharaFound[chara].index - 1;
    73.                         myEnd = myCharaFound[chara-1].index + myCharaFound[chara-1].length;
    74.                         myText = myChara.parent.characters.itemByRange(myStart, myEnd);
    75.                         //alert(myText.contents);
    76.                         myCharaFound_ = myText.search("", false, false,undefined);
    77.                         var myCharaContent_, myCharaPageNumber_, myLine_;
    78.                         for(chara_=myCharaFound_.length-1; chara_>=0; chara_--){
    79.                                 myChara_ = myCharaFound_[chara_]
    80.                                 myCharaContentX_ = myChara_.contents;
    81.                                 try{
    82.                                         A_ = /\r/gm;
    83.                                         myCharaContent_ = myCharaContentX_.replace(A_, "");
    84.                                 }
    85.                                 catch(e){}
    86.                                 try{
    87.                                         myCharaPageNumber_ = getPageFromAnyObject(myChara_.parentTextFrame).name;//.parent.name;
    88.                                 }
    89.                                 catch(e){}
    90.                                 if(myCharaContent_ != undefined){
    91.                                         myLine_ = "   " + myCharaContent_ + "\t"+ myCharaPageNumber_;
    92.                                         myParseInt.push(chara);
    93.                                         myTocLine_.push(myLine_);
    94.                                 }
    95.                         }
    96.                         myLine = myCharaContent + "\t"+ myCharaPageNumber;
    97.                         myTocLine.push(myLine);
    98.                 }
    99.                 catch(e){
    100.                         myLine = myCharaContent + "\t"+ myCharaPageNumber;
    101.                         myTocLine.push(myLine);
    102.                 }
    103.         }
    104.         myTocLine.shift();
    105.         myTocLine.reverse();
    106.         try{
    107.                 for(mysplice = 0; mysplice<=myParseInt.length-1; mysplice++){
    108.                         myTocLine.splice(myParseInt[mysplice], 0, myTocLine_[mysplice]);
    109.                 }
    110.                 myToc = String(myTocLine).split(",").join("\r");
    111.         }
    112.         catch(e){
    113.                 myToc = String(myTocLine).split(",").join("\r");
    114.         }
    115.         //
    116.         myDocument.characterStyles.item("[None]").remove();
    117.         //
    118.         for(d=myDocument.stories.length-1; d>=0; d--){
    119.                 myStory = myDocument.stories[d];
    120.                 try{
    121.                         if((myStory.characters[-1].contents == String(SpecialCharacters.emSpace))&&(myStory.characters[-1].appliedCharacterStyle == myDocument.characterStyles.item(my1stCharaStyle))){ //" "
    122.                                 myStory.characters[-1].remove();
    123.                         }
    124.                 }
    125.                 catch(e){}
    126.         }
    127.         //
    128.         myTocDocument = app.documents.add();
    129.         myTocPage = myTocDocument.pages[0];
    130.         myTocTextFrame = myTocPage.textFrames.add();
    131.         myTocTextFrame.geometricBounds = myGetBounds(myTocDocument, myTocPage);
    132.         myTocTextFrame.contents = myToc;

    133. }
    134. else{
    135.         myDialog.destroy();
    136. }

    137. //--------------------------------------------------------------------------------------
    138. function getPageFromAnyObject(myPageObject){
    139.         var myPage;
    140.         if(myPageObject.constructor.name == "Page"){
    141.                 myPage = myPageObject;
    142.         }
    143.         else{
    144.                 myPage = getPageFromAnyObject(myPageObject.parent);
    145.         }
    146.         return(myPage);
    147. }

    148. //Utility function for getting the bounds of the "live area" of a page.
    149. function myGetBounds(myDocument, myPage){
    150.         with(myDocument.documentPreferences){
    151.                   var myPageHeight = pageHeight;
    152.                   var myPageWidth = pageWidth;
    153.         }
    154.         with(myPage.marginPreferences){
    155.                  var myTop = top;
    156.                   var myLeft = left;
    157.                   var myRight = right;
    158.                   var myBottom = bottom;
    159.         }
    160.         myRight = myPageWidth - myRight;
    161.         myBottom = myPageHeight- myBottom;
    162.         return [myTop, myLeft, myBottom, myRight];
    163. }
    复制代码


    上面的代码是可以在InDesign CS3中执行的,但现在普遍更新了新的版本,所以在高版本ID里执行会报错。

    关于ID提取字符样式的脚本插件求会编写的修改更新(1)

    不知道有大神会不会修改这个脚本,感觉很有用的样子。

    华印网相关搜索

    回复 送花

    使用道具 举报

  • TA的每日心情
    开心
    2020-12-12 21:56
  • 发表于 2020-11-24 14:47:11 | 显示全部楼层
    这种得需要专业人士才行,哈哈
    回复 支持 反对 送花

    使用道具 举报

  • TA的每日心情
    开心
    2020-11-24 11:37
  •  楼主| 发表于 2020-11-24 16:27:27 | 显示全部楼层
    大神周 发表于 2020-11-24 14:47
    这种得需要专业人士才行,哈哈

    所以你看哪种功能很复杂安装还要说明的插件,是不是坑人的。这种早就写出来了,国外网上肯定有,只是英文不好,外加有一些网站让墙了。我是好久不碰代码了,不想花这个时间去研究,专业的要交给专业的人。
    回复 支持 反对 送花

    使用道具 举报

  • TA的每日心情
    开心
    2020-12-12 21:56
  • 发表于 2020-11-25 12:34:53 | 显示全部楼层
    stevenfm 发表于 2020-11-24 16:27
    所以你看哪种功能很复杂安装还要说明的插件,是不是坑人的。这种早就写出来了,国外网上肯定有,只是英文 ...

    说的没错,其实国内的插件普遍都比国外的LOW多了,墙外却实很多高级插件,就像你说的,需要专业的人去干了才行。
    回复 支持 反对 送花

    使用道具 举报

    您需要登录后才可以回帖 登录 | 注册帐号

    本版积分规则

    关闭

    会员必看上一条 /1 下一条

    华印网 - 华印社区
    Share More 周一至周日:09:00 - 21:00
    华印网旗下的设计印刷制作类专业技术站点
    请勿发布违反国家法律法规的内容,会员观点不代表本站立场
    企鹅:32917909 Email:32917909#qq.com

    华印网汇集印前技术、PDF拼版、防伪包装、数码印刷、合版印刷、图文设计、平面设计、数码印刷及CTP等最新印刷技术,提供软件汉化、插件汉化、cdr插件、ai扩展插件、ps扩展插、pdf插件、印刷流程、ctp输出、字体下载、印刷软件资料、印能捷、esko、CorelDRAW、CTP、CDR、PDF、InDesign、Illustrator软件下载的综合性印刷论坛社区!

    Powered by Discuz! X3.4 © 2001-2021,Tencent Cloud.

    站点地图|小黑屋|手机版|华印网 ( 粤ICP备19020152号-1 )

    GMT+8, 2021-1-17 01:36 , Processed in 0.253182 second(s), 37 queries , Gzip On.

    快速回复 返回顶部 返回列表