QQ登录

只需一步,快速开始

查看: 5639|回复: 7
收起左侧

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

[复制链接]
累计签到:11 天
连续签到:1 天
发表于 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提取字符样式的脚本插件求会编写的修改更新{tag}(1)

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

华印网相关搜索

累计签到:188 天
连续签到:2 天
发表于 2020-11-24 14:47:11 | 显示全部楼层
这种得需要专业人士才行,哈哈
回复 支持 反对 送花

使用道具 举报

累计签到:11 天
连续签到:1 天
 楼主| 发表于 2020-11-24 16:27:27 | 显示全部楼层
大神周 发表于 2020-11-24 14:47
这种得需要专业人士才行,哈哈

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

使用道具 举报

累计签到:188 天
连续签到:2 天
发表于 2020-11-25 12:34:53 | 显示全部楼层
stevenfm 发表于 2020-11-24 16:27
所以你看哪种功能很复杂安装还要说明的插件,是不是坑人的。这种早就写出来了,国外网上肯定有,只是英文 ...

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

使用道具 举报

累计签到:11 天
连续签到:1 天
 楼主| 发表于 2021-1-29 14:38:29 | 显示全部楼层
这个高级插件我找到了,全英文的,在脚本改成英文的鸟~~~比这个好用,已经很久不用这种脚本了!设计师就是要慢,要这么高效率让人嫌弃地,觉得你不值!
回复 支持 反对 送花

使用道具 举报

累计签到:14 天
连续签到:1 天
发表于 2021-2-7 16:02:07 | 显示全部楼层
      原脚本通过提取字符样式创建目录样式。它通过提取两个字符样式来创建二级目录。经过修改,目前可以通过提取一个字符样式来创建一级目录。二级目录样式的脚本正在修改中。

提取文本样式创建一级目录.rar

2.5 KB, 下载次数: 2

回复 支持 反对 送花

使用道具 举报

累计签到:36 天
连续签到:1 天
发表于 2021-2-7 17:23:22 | 显示全部楼层
在脚本文件夹下 建一个 Version 3.0 Scripts  文件夹 ,脚本放入其中,就行了。一级,二级都没问题。
更多图片 小图 大图
组图打开中,请稍候......
回复 支持 反对 送花

使用道具 举报

累计签到:14 天
连续签到:1 天
发表于 2021-2-19 09:37:03 | 显示全部楼层
app.scriptPreferences.version = 2.0;
可以在代码的首行,增加一行该代码即可运行,不会报上述的错误。
但注意虽然脚本可以运行,也可生成目录,但其创建的目录并不完全正确,在几种情况下是不完整其错误的。
1.当出现两个以上的文章时;
2.不同文章中,二级字符样式出现在一级字符样式之前时;
因此,考虑到实际排版中的复杂情况,该脚本若只是经过这样简单的修改是不能在生产中使用的。
必须要经过更为深入的修改才行。
修改后的脚本地址:https://www.52cnp.com/thread-13643-1-1.html
1 赠人玫瑰,手有余香!如单纯感谢,请送花!凡是以文字形式感谢,即被视为水帖,会扣币处理! 鲜花榜单
回复 支持 反对 送花

使用道具 举报

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

本版积分规则

关闭

注意注意注意:必看上一条 /1 下一条

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

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

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

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

GMT+8, 2024-12-22 22:45 , Processed in 0.091217 second(s), 33 queries , Gzip On, Yac On.

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