Back

If your email is not recognized and you believe it should be, please contact us.

  • You must be logged in to reply to this topic.Login

Ignore Anchored Objects?

Return to Member Forum

  • Author
    Posts
    • #90662
      Bob Rubey
      Member

      I have an old but still viable script that I use frequently in conjunction with a paragraph style that labels graphics. About five years ago Jongware helped me edit it to ignore text wraps (and I used the line for another script as well). Now I need to know if there is a way for the same scripts to ignore anchored objects as they generate errors. Is this a simple line or two or something more complicated? Here’s the script. For reference, ignore text wrap is near the end.

      //LabelGraphics.jsx
      //An InDesign CS4 JavaScript
      /*
      @@@BUILDINFO@@@ “LabelGraphics.jsx” 2.0.0 10-January-2008
      */
      //Adds labels to the graphics in the active document.
      //
      //For more on InDesign scripting, go to https://www.adobe.com/products/indesign/scripting/index.html
      //or visit the InDesign Scripting User to User forum at https://www.adobeforums.com
      //
      main();
      function main(){
      //Make certain that user interaction (display of dialogs, etc.) is turned on.
      app.scriptPreferences.userInteractionLevel = UserInteractionLevels.interactWithAll;
      if(app.documents.length != 0){
      if(app.documents.item(0).allGraphics.length != 0){
      myDisplayDialog();
      }
      else{
      alert(“Document contains no graphics.”);
      }
      }
      else{
      alert(“Please open a document and try again.”);
      }
      }
      function myDisplayDialog(){
      var myLabelWidth = 100;
      var myStyleNames = myGetParagraphStyleNames();
      var myDialog = app.dialogs.add({name:”LabelGraphics”});
      with(myDialog.dialogColumns.add()){
      //Label type
      with(dialogRows.add()){
      with(dialogColumns.add()){
      staticTexts.add({staticLabel:”Label Type”, minWidth:myLabelWidth});
      }
      with(dialogColumns.add()){
      var myLabelTypeDropdown = dropdowns.add({stringList:[“File name”, “File path”, “XMP description”, “XMP author”], selectedIndex:0});
      }
      }
      //Text frame height
      with(dialogRows.add()){
      with(dialogColumns.add()){
      staticTexts.add({staticLabel:”Label Height”, minWidth:myLabelWidth});
      }
      with(dialogColumns.add()){
      var myLabelHeightField = measurementEditboxes.add({editValue:24});
      }
      }
      //Text frame offset
      with(dialogRows.add()){
      with(dialogColumns.add()){
      staticTexts.add({staticLabel:”Label Offset”, minWidth:myLabelWidth});
      }
      with(dialogColumns.add()){
      var myLabelOffsetField = measurementEditboxes.add({editValue:0});
      }
      }
      //Style to apply
      with(dialogRows.add()){
      with(dialogColumns.add()){
      staticTexts.add({staticLabel:”Label Style”, minWidth:myLabelWidth});
      }
      with(dialogColumns.add()){
      var myLabelStyleDropdown = dropdowns.add({stringList:myStyleNames, selectedIndex:0});
      }
      }
      }
      var myResult = myDialog.show();
      if(myResult == true){
      var myLabelType = myLabelTypeDropdown.selectedIndex;
      var myLabelHeight = myLabelHeightField.editValue;
      var myLabelOffset = myLabelOffsetField.editValue;
      var myLabelStyle = myStyleNames[myLabelStyleDropdown.selectedIndex];
      myDialog.destroy();
      var myOldXUnits = app.documents.item(0).viewPreferences.horizontalMeasurementUnits;
      var myOldYUnits = app.documents.item(0).viewPreferences.verticalMeasurementUnits;
      app.documents.item(0).viewPreferences.horizontalMeasurementUnits = MeasurementUnits.points;
      app.documents.item(0).viewPreferences.verticalMeasurementUnits = MeasurementUnits.points;
      myAddLabels(myLabelType, myLabelHeight, myLabelOffset, myLabelStyle);
      app.documents.item(0).viewPreferences.horizontalMeasurementUnits = myOldXUnits;
      app.documents.item(0).viewPreferences.verticalMeasurementUnits = myOldYUnits;
      }
      else{
      myDialog.destroy();
      }
      }
      function myAddLabels(myLabelType, myLabelHeight, myLabelOffset, myLabelStyleName){
      var myDocument = app.documents.item(0);
      var myGraphics = myDocument.allGraphics;
      myLabelStyle = myDocument.paragraphStyles.item(myLabelStyleName);
      for(var myCounter = 0; myCounter < myGraphics.length; myCounter++){
      myAddLabel(myDocument, myGraphics[myCounter], myLabelType, myLabelHeight, myLabelOffset, myLabelStyle);
      }
      }
      function myAddLabel(myDocument, myGraphic, myLabelType, myLabelHeight, myLabelOffset, myLabelStyle){
      var myLabel;
      var myLink = myGraphic.itemLink;
      //Create the label layer if it does not already exist.
      var myLabelLayer = myDocument.layers.item(“labels”);
      try{
      myLabelLayer.name;
      }
      catch (myError){
      myLabelLayer = myDocument.layers.add({name:”labels”});
      }
      //Label type defines the text that goes in the label.
      switch(myLabelType){
      //File name
      case 0:
      myLabel = myLink.name;
      break;
      //File path
      case 1:
      myLabel = myLink.filePath;
      break;
      //XMP description
      case 2:
      try{
      myLabel = myLink.linkXmp.description;
      }
      catch(myError){
      myLabel = “No description available.”;
      }
      break;
      //XMP author
      case 3:
      try{
      myLabel = myLink.linkXmp.author
      }
      catch(myError){
      myLabel = “No author available.”;
      }
      break;
      }
      var myFrame = myGraphic.parent;
      myX1 = myFrame.geometricBounds[1];
      myY1 = myFrame.geometricBounds[2] + myLabelOffset;
      myX2 = myFrame.geometricBounds[3];
      myY2 = myY1 + myLabelHeight;
      var myTextFrame = myFrame.parent.textFrames.add(myLabelLayer, undefined, undefined,{geometricBounds:[myY1, myX1, myY2, myX2], contents:myLabel});
      myTextFrame.textFramePreferences.firstBaselineOffset = FirstBaseline.leadingOffset;
      myTextFrame.textFramePreferences.ignoreWrap = true;
      myTextFrame.parentStory.texts.item(0).appliedParagraphStyle = myLabelStyle;
      }
      function myGetParagraphStyleNames(){
      var myStyleNames = app.documents.item(0).paragraphStyles.everyItem().name;
      return myStyleNames;
      }

    • #90663
      Bob Rubey
      Member
Viewing 1 reply thread
  • You must be logged in to reply to this topic.
Forum Ads