C
HAPTER
6: Text and Type
Working with Tables     111
set change text preferences to nothing
--Set the change to property to an empty string.
set change to of change text preferences to ""
--Search to remove the tags.
tell myStory
change text
end tell
--Reset the find/change preferences again.
set change text preferences to nothing
end repeat
end if
--Reset the findGrepPreferences.
set find grep preferences to nothing
end tell
end myReadPMTags
Using glyph search
You can find and change individual characters in a specific font using the 
findGlyph
and 
changeGlyph
methods and the associated 
findGlyphPreferences
and 
changeGlyphPreferences
objects. The 
following scripts fragment shows how to find and change a glyph in an example document (for the 
complete script, see FindChangeGlyph):
--Clear glyph search preferences.
set find glyph preferences to nothing
set change glyph preferences to nothing
set myDocument to document 1
--You must provide a font that is used in the document for the
--applied font property of the find glyph preferences object.
set applied font of find glyph preferences to applied font of character 1 of story 1 of 
myDocument
--Provide the glyph ID, not the glyph Unicode value.
set glyph ID of find glyph preferences to 374
--The applied font of the change glyph preferences object can be
--any font available to the application.
set applied font of change glyph preferences to "ITC Zapf DingbatsMedium"
set glyph ID of change glyph preferences to 85
tell myDocument
change glyph
end tell
--Clear glyph search preferences.
set find glyph preferences to nothing
set change glyph preferences to nothing
Working with Tables
Tables can be created from existing text using the 
convertTextToTable
method, or an empty table can 
be created at any insertion point in a story. The following script fragment shows three different ways to 
create a table (for the complete script, see MakeTable):
How to convert pdf file to tiff - Library control class:C# PDF Convert to Tiff SDK: Convert PDF to tiff images in C#.net, ASP.NET MVC, Ajax, WinForms, WPF
Online C# Tutorial for How to Convert PDF File to Tiff Image File
www.rasteredge.com
How to convert pdf file to tiff - Library control class:VB.NET PDF Convert to Tiff SDK: Convert PDF to tiff images in vb.net, ASP.NET MVC, Ajax, WinForms, WPF
Free VB.NET Guide to Render and Convert PDF Document to TIFF
www.rasteredge.com
C
HAPTER
6: Text and Type
Working with Tables     112
--Given a document "myDocument" containing a story...
set myStory to story 1 of myDocument
tell myStory
set myStartCharacter to index of character 1 of paragraph 7
set myEndCharacter to index of character -2 of paragraph 7
set myText to object reference of text from character 
myStartCharacter to character myEndCharacter
--The convertToTable method takes three parameters:
--[column separator as string]
--[row separator as string]
--[number of columns as integer] (only used if the column separator
--and row separator values are the same)
--In the last paragraph in the story, columns are separated by commas
--and rows are separated by semicolons, so we provide those characters
--to the method as parameters.
tell myText
set myTable to convert to table column separator "," row separator ";"
end tell
set myStartCharacter to index of character 1 of paragraph 2
set myEndCharacter to index of character -2 of paragraph 5
set myText to object reference of text from character myStartCharacter 
to character myEndCharacter
--In the second through the fifth paragraphs, colums are separated by
--tabs and rows are separated by returns. These are the default delimiter
--parameters, so we don't need to provide them to the method.
tell myText
set myTable to convert to table column separator tab row separator return
end tell
--You can also explicitly add a table--you don't have to convert text to a table.
tell insertion point -1
set myTable to make table
set column count of myTable to 3
set body row count of myTable to 3
end tell
end tell
The following script fragment shows how to merge table cells. (For the complete script, see 
MergeTableCells.)
--Given a document "myDocument" containing a story...
tell story 1 of myDocument
tell table 1
--Merge all of the cells in the first column.
merge cell 1 of column 1 with cell -1 of column 1
--Convert column 2 into 2 cells (rather than 4).
merge cell 3 of column 2 with cell -1 of column 2
merge cell 1 of column 2 with cell 2 of column 2
--Merge the last two cells in row 1.
merge cell -2 of row 1 with cell -1 of row 1
--Merge the last two cells in row 3.
merge cell -2 of row 3 with cell -1 of row 3
end tell
end tell
The following script fragment shows how to split table cells. (For the complete script, see SplitTableCells.)
Library control class:Online Convert PDF file to Tiff. Best free online PDF Tif
Download Free Trial. Convert a PDF File to Tiff. Just upload your file by clicking on the blue button or drag-and-drop your PDF file into the drop area.
www.rasteredge.com
Library control class:Online Convert PDF file to Word. Best free online PDF Conversion
Convert a Tiff/Tif File to PDF. Just upload your file by clicking on the blue button or drag-and-drop your Tiff or Tif file into the drop area.
www.rasteredge.com
C
HAPTER
6: Text and Type
Working with Tables     113
tell table 1 of story 1 of document 1
split cell 1 using horizontal
split column 1 using vertical
split cell 1 using vertical
split row -1 using horizontal
split cell -1 using vertical
--Fill the cells with row:cell labels.
repeat with myRowCounter from 1 to (count rows)
set myRow to row myRowCounter
repeat with myCellCounter from 1 to (count cells of myRow)
set myString to "Row: " & myRowCounter & " Cell: " & myCellCounter
set contents of text 1 of cell myCellCounter of row myRowCounter to myString
end repeat
end repeat
end tell
The following script fragment shows how to create header and footer rows in a table (for the complete 
script, see HeaderAndFooterRows):
--Given a document containing a story that contains a table...
tell table 1 of story 1 of document 1
--Convert the first row to a header row.
set row type of row 1 to header row
--Convert the last row to a footer row.
set row type of row -1 to footer row
end tell
The following script fragment shows how to apply formatting to a table (for the complete script, see 
TableFormatting):
set myTable to table 1 of story 1 of myDocument
tell myTable
--Convert the first row to a header row.
set row type of row 1 to header row
--Use a reference to a swatch, rather than to a color.
set fill color of row 1 to swatch "DGC1_446b" of myDocument
set fill tint of row 1 to 40
set fill color of row 2 to swatch "DGC1_446a" of myDocument
set fill tint of row 2 to 40
set fill color of row 3 to swatch "DGC1_446a" of myDocument
set fill tint of row 3 to 20
set fill color of row 4 to swatch "DGC1_446a" of myDocument
set fill tint of row 4 to 40
tell every cell in myTable
set top edge stroke color to swatch "DGC1_446b" of myDocument
set top edge stroke weight to 1
set bottom edge stroke color to swatch "DGC1_446b" of myDocument
set bottom edge stroke weight to 1
--When you set a cell stroke to a swatch, make certain that 
--you also set the stroke weight.
set left edge stroke color to swatch "None" of myDocument
set left edge stroke weight to 0
set right edge stroke color to swatch "None" of myDocument
set right edge stroke weight to 0
end tell
end tell
The following script fragment shows how to add alternating row formatting to a table (for the complete 
script, see AlternatingRows):
Library control class:Online Convert Excel to PDF file. Best free online export xlsx
Download Free Trial. Convert a Excel File to PDF. Drag and drop your excel file into the box or click the green button to browse for a file to upload.
www.rasteredge.com
Library control class:C# Create PDF from Tiff Library to convert tif images to PDF in C#
TIFFDocument doc = new TIFFDocument(inputFilePath); // Convert loaded TIFF file to PDF document. doc.ConvertToDocument(DocumentType.PDF, outputFilePath);
www.rasteredge.com
C
HAPTER
6: Text and Type
Path Text     114
--Given a document "myDocument" containing a story that 
--contains a table...
set myTable to table 1 of story 1 of myDocument
tell myTable
--Apply alternating fills to the table.
set alternating fills to alternating rows
set start row fill color to swatch "DGC1_446a" of myDocument
set start row fill tint to 60
set end row fill color to swatch "DGC1_446b" of myDocument
set end row fill tint to 50
end tell
The following script fragment shows how to process the selection when text or table cells are selected. In 
this example, the script displays an alert for each selection condition, but a real production script would 
then do something with the selected item(s). (For the complete script, see TableSelection.)
--Check to see if any documents are open.
if (count documents) is not equal to 0 then
--If the selection contains more than one item, the selection
--is not text selected with the Type tool.
set mySelection to selection
if (count mySelection) is not equal to 0 then
--Evaluate the selection based on its type.
set myTextClasses to {insertion point, word, text style range,
line, paragraph, text column, text, story}
if class of item 1 of selection is in myTextClasses then
--The object is a text object; display the text object type.
--A practical script would do something with the selection,
--or pass the selection on to a function.
if class of parent of item 1 of mySelection is cell then
display dialog ("The selection is inside a table cell")
else
display dialog ("The selection is not in a table")
end if
else if class of item 1 of selection is cell then
display dialog ("The selection is a table cell")
else if class of item 1 of selection is row then
display dialog ("The selection is a table row")
else if class of item 1 of selection is column then
display dialog ("The selection is a table column")
else if class of item 1 of selection is table then
display dialog ("The selection is a table.")
else
display dialog ("The selection is not in a table")
end if
else
display dialog ("Please select some text and try again.")
end if
else
display dialog ("Nothing is selected. Please select some text and try again.")
end if
Path Text
You can add path text to any rectangle, oval, polygon, graphic line, or text frame. The following script 
fragment shows how to add path text to a page item (for the complete script, see PathText):
Library control class:C# PDF File Split Library: Split, seperate PDF into multiple files
Application. Best and professional adobe PDF file splitting SDK for Visual Studio .NET. outputOps); Divide PDF File into Two Using C#.
www.rasteredge.com
Library control class:VB.NET PDF File Compress Library: Compress reduce PDF size in vb.
Convert smooth lines to curves. Detect and merge image fragments. Flatten visible layers. VB.NET Demo Code to Optimize An Exist PDF File in Visual C#.NET Project
www.rasteredge.com
C
HAPTER
6: Text and Type
Autocorrect     115
--Given a document "myDocument" with a rectangle on page 1...
set myRectangle to rectangle 1 of page 1 of myDocument
tell myRectangle
set myTextPath to make text path with properties {contents:"This is path text."}
end tell
To link text paths to another text path or text frame, use the 
nextTextFrame
and 
previousTextFrame
properties, just as you would for a text frame (see “Working with Text Frames” on page93
).
Autocorrect
The autocorrect feature can correct text as you type. The following script shows how to use it (for the 
complete script, see Autocorrect):
tell auto correct preferences
set autocorrect to true
set auto correct capitalization errors to true
--Add a word pair to the autocorrect list. Each auto correct table
--is linked to a specific language. 
end tell
set myAutoCorrectTable to auto correct table "English: USA"
--To safely add a word pair to the auto correct table, get the current
--word pair list, then add the new word pair to that array, and then
--set the autocorrect word pair list to the array.
set myWordPairList to {}
set myWordPairList to myWordPairList & auto correct word pair list of 
myAutoCorrectTable
--Add a new word pair to the array.
set myWordPairList to myWordPairList & {{"paragarph", "paragraph"}}
--Update the word pair list.
set auto correct word pair list of auto correct table "English: USA" to myWordPairList
--To clear all autocorrect word pairs in the current dictionary:
--myAutoCorrectTable.autoCorrectWordPairList to {{}}
Footnotes
The following script fragment shows how to add footnotes to a story (for the complete script, including 
the 
myGetRandom
function, see Footnotes):
Library control class:C# PDF Convert to Word SDK: Convert PDF to Word library in C#.net
Description: Convert to DOCX/TIFF with specified zoom value and save it zoomValue, The magnification of the original PDF page size. filePath, The output file path
www.rasteredge.com
Library control class:C# PDF Convert to Jpeg SDK: Convert PDF to JPEG images in C#.net
PDFPage page = (PDFPage)doc.GetPage(0); // Convert the first PDF page to a JPEG file. page.ConvertToImage(ImageType.JPEG, Program.RootPath + "\\Output.jpg");
www.rasteredge.com
C
HAPTER
6: Text and Type
Span Columns     116
set myDocument to document 1
tell footnote options of myDocument
set separator text to tab
set marker positioning to superscript marker
end tell
set myStory to story 1 of myDocument
--Add four footnotes at random locations in the story.
local myStoryLength, myRandomNumber
set myStoryLength to (count words of myStory)
repeat with myCounter from 1 to 5
set myRandomNumber to my myGetRandom(1, myStoryLength)
tell insertion point -1 of word myRandomNumber of myStory
set myFootnote to make footnote
end tell
--Note: when you create a footnote, it contains text--the footnote marker
--and the separator text (if any). If you try to set the text of the footnote
--by setting the footnote contents, you will delete the marker. Instead, append
--the footnote text, as shown below.
tell insertion point -1 of myFootnote
set contents to "This is a footnote."
end tell
end repeat
Span Columns
A paragraph layout can span multiple columns or split into subcolumns with the Span Columns attribute 
or Split Column attribute applied. The following script fragment shows how to set the Span Columns and 
Split Column style for a paragraph (for the complete script, see SpanColumns):
set myDocument to active document
set myPage to page 1 of myDocument
set myTextFrame to item 1 of text frames of myPage
tell myTextFrame
set text column count of text frame preferences to 3
set myStory to parent story
tell item 1 of paragraphs of myStory
--split column
set span column type to split columns
set span split column count to 2
set split column outside gutter to 0
set split column inside gutter to 1
end tell
set mySpanIndex to (count of paragraphs of myStory) div 2 + 1
tell item mySpanIndex of paragraphs of myStory
--span columns
set span column type to span columns
set span split column count to all
end tell
end tell
Setting Text Preferences
The following script shows how to set general text preferences (for the complete script, see 
TextPreferences):
C
HAPTER
6: Text and Type
Setting Text Preferences     117
tell text preferences
set abut text to text wrap to true
--baseline shift key increment can range from .001 to 200 points.
set baseline shift key increment to 1
set highlight custom spacing to false
set highlight hj violations to true
set highlight keeps to true
set highlight substituted fonts to true
set highlight substituted glyphs to true
set justify text wraps to true
--kerning key increment value is 1/1000 of an em.
set kerning key increment to 10
--leading key increment value can range from .001 to 200 points.
set leading key increment to 1
set link text files when importing to false
set show invisibles to true
set small cap to 60
set subscript position to 30
set subscript size to 60
set superscript position to 30
set superscript size to 60
set typographers quotes to false
set use optical size to false
set use paragraph leading to false
set z order text wrap to false
end tell
--Text editing preferences are application-wide.
tell text editing preferences
set allow drag and drop text in story to true
set drag and drop text in layout to true
set smart cut and paste to true
set triple click selects line to false
end tell
118
7
User Interfaces
AppleScript can create dialogs for simple yes/no questions and text entry, but you probably will need to 
create more complex dialogs for your scripts. InDesign scripting can add dialogs and populate them with 
common user-interface controls, like pop-up lists, text-entry fields, and numeric-entry fields. If you want 
your script to collect and act on information entered by you or any other user of your script, use the 
dialog
object. 
This chapter shows how to work with InDesign dialog scripting. The sample scripts in this chapter are 
presented in order of complexity, starting with very simple scripts and building toward more complex 
operations.
N
OTE
: InDesign scripts written in JavaScript also can include user interfaces created using the Adobe 
ScriptUI component. This chapter includes some ScriptUI scripting tutorials; for more information, see 
Adobe CS5 JavaScript Tools Guide.
We assume that you have already read Adobe InDesign CS5 Scripting Tutorial and know how to create and 
run a script.
Dialog Overview
An InDesign dialog box is an object like any other InDesign scripting object. The dialog box can contain 
several different types of elements (known collectively as “widgets”), as shown in the following figure. The 
elements of the figure are described in the table following the figure.
dialog
dialog column
border panel
checkbox control
radiobutton group
radiobutton control
static text
measurement editbox
dropdown
C
HAPTER
7: User Interfaces
Your First InDesign Dialog     119
The 
dialog
object itself does not directly contain the controls; that is the purpose of the 
dialog
column
object. 
dialog
columns
give you a way to control the positioning of controls within a dialog box. Inside 
dialog
columns
, you can further subdivide the dialog box into other 
dialog
columns
or 
border
panels
(both of which can, if necessary, contain more 
dialog
columns
and 
border
panels
). 
Like any other InDesign scripting object, each part of a dialog box has its own properties. A 
checkbox
control
, for example, has a property for its text (
static
label
) and another property for its state 
(
checked state
). The 
dropdown
control has a property (
string
list
) for setting the list of options that 
appears on the control’s menu.
To use a dialog box in your script, create the 
dialog
object, populate it with various controls, display the 
dialog box, and then gather values from the dialog-box controls to use in your script. Dialog boxes remain 
in InDesign’s memory until they are destroyed. This means you can keep a dialog box in memory and have 
data stored in its properties used by multiple scripts, but it also means the dialog boxes take up memory 
and should be disposed of when they are not in use. In general, you should destroy a dialog-box object 
before your script finishes executing.
Your First InDesign Dialog
The process of creating an InDesign dialog is very simple: add a dialog, add a dialog column to the dialog, 
and add controls to the dialog column. The following script demonstrates the process (for the complete 
script, see SimpleDialog):
Dialog box element
InDesign name
Text-edit fields
Text editbox control
Numeric-entry fields
Real editbox, integer editbox, measurement 
editbox, percent editbox, angle editbox
Pop-up menus
Drop-down control
Control that combines a text-edit field with a 
pop-up menu
Combo-box control
Check box
Check-box control
Radio buttons
Radio-button control
C
HAPTER
7: User Interfaces
Adding a User Interface to “Hello World”     120
set myDialog to make dialog with properties {name:"Simple Dialog"}
tell myDialog
tell (make dialog column)
make static text with properties {static label:"This is a very 
simple dialog box."}
end tell
end tell
--Show the dialog box.
set myResult to show myDialog
--If the user clicked OK, display one message;
--if they clicked Cancel, display a different message.
if myResult is true then
display dialog ("You clicked the OK button")
else
display dialog ("You clicked the Cancel button")
end if
--Remove the dialog box from memory.
destroy myDialog
Adding a User Interface to “Hello World”
In this example, we add a simple user interface to the Hello World tutorial script presented in Adobe 
InDesign CS5 Scripting Tutorial. The options in the dialog box provide a way for you to specify the sample 
text and change the point size of the text:
set myDialog to make dialog
tell myDialog
set name to "Simple User Interface Example Script"
set myDialogColumn to make dialog column
tell myDialogColumn
--Create a text entry field.
set myTextEditField to make text editbox with properties 
{edit contents:"Hello World!", min width:180}
--Create a number (real) entry field
set myPointSizeField to make measurement editbox with properties 
{edit value:72, edit units:points}
end tell
end tell
set myResult to show myDialog
if myResult is true then
--Get the settings from the dialog box.
--Get the point size from the point size field.
set myPointSize to edit value of myPointSizeField
--Get the example text from the text edit field.
set myString to edit contents of myTextEditField
--Remove the dialog box from memory.
destroy myDialog
my myMakeDocument(myPointSize, myString)
else
destroy myDialog
end if
Here is the 
myMakeDocument
handler referred to in the above fragment:
Documents you may be interested
Documents you may be interested