Click here to Skip to main content
Click here to Skip to main content

Accessing Adobe InDesign CS COM Objects from .NET

, 9 Nov 2005
Rate this:
Please Sign up or sign in to vote.
An article showing how to access Adobe InDesign CS COM objects from .NET

Introduction

This article shows how to access Adobe InDesign CS COM objects from .NET.

Background

I needed to make an application that read product information from a database and inserted it in an Adobe InDesign template to create a catalog ready for printing. There is not much information about this subject to be found on the Internet, so I thought I might share this article with you.

Note: Adobe InDesign CS and the InDesign SDK need to be installed on the development computer.

Using the Code

Create a new project in Visual Studio and make a reference to COM object 'Adobe InDesign CS Type Library'. The following code creates an instance of the InDesign application and gets the first textframe on the first page.

// create an InDesign instance
InDesign.Application app = 
    (InDesign.Application) COMCreateObject("InDesign.Application");

// get a reference to the current active document
InDesign.Document doc = app.ActiveDocument;

// get the first page
InDesign.Page page = (InDesign.Page) doc.Pages[1]; //1e pagina

// get the first textframe
InDesign.TextFrame frame = (InDesign.TextFrame) page.TextFrames[1];

// write contents of textframe
Console.WriteLine(frame.Contents.ToString());

// set contents of textframe
frame.Contents = "Andere content";

To create an instance of the InDesign COM object, I use the following code snippet:

/// <span class="code-SummaryComment"><SUMMARY></span>
/// Creates a COM object given its ProgID.
/// <span class="code-SummaryComment"></SUMMARY></span>
/// <span class="code-SummaryComment"><param name="sProgID">The ProgID to create</param></span>
/// <span class="code-SummaryComment"><RETURNS>The newly created object, or null on failure.</RETURNS></span>
public static object COMCreateObject (string sProgID)
{
    // We get the type using just the ProgID
    Type oType = Type.GetTypeFromProgID (sProgID);
    if (oType != null)
    {                    
        return Activator.CreateInstance( oType);
    }
    
    return null;
}

History

  • 9th November, 2005: First publication

License

This article, along with any associated source code and files, is licensed under The Code Project Open License (CPOL)

About the Author

elmer_torensma
Web Developer
Netherlands Netherlands
No Biography provided

Comments and Discussions

 
QuestionWeb Application Pinmemberqadirv9-May-12 2:27 
Questionhi Pinmemberdinakar9026-Mar-12 4:22 
Questionend of statement expected error Pinmemberdinakar9026-Mar-12 4:20 
Generalhi PinmemberHal201230-Nov-10 18:36 
Generalconverting indesign EPS file to indesign Pinmembervidyas198215-Aug-10 22:39 
GeneralFormatting text PinmemberChristian Gad13-Jan-10 22:00 
GeneralGreat topic Pinmemberinwi23-Nov-09 15:27 
GeneralThanks PinmemberGary Stafford7-Feb-07 15:00 
QuestionC# and InDesign Pinmemberkzimny12-Sep-06 9:31 
AnswerRe: C# and InDesign Pinmemberelmer_torensma12-Sep-06 21:10 
GeneralRe: C# and InDesign Pinmemberpasaulis4-May-07 2:53 
GeneralRe: C# and InDesign Pinmemberamin_khan6-Oct-07 21:24 
QuestionRe: C# and InDesign PinmemberMember 36519878-Dec-08 21:36 
AnswerRe: C# and InDesign PinmemberHal201230-Nov-10 19:15 

General General    News News    Suggestion Suggestion    Question Question    Bug Bug    Answer Answer    Joke Joke    Rant Rant    Admin Admin   

Use Ctrl+Left/Right to switch messages, Ctrl+Up/Down to switch threads, Ctrl+Shift+Left/Right to switch pages.

| Advertise | Privacy | Mobile
Web04 | 2.8.140721.1 | Last Updated 9 Nov 2005
Article Copyright 2005 by elmer_torensma
Everything else Copyright © CodeProject, 1999-2014
Terms of Service
Layout: fixed | fluid