Click here to Skip to main content
6,595,854 members and growing! (18,640 online)
Email Password   helpLost your password?
Platforms, Frameworks & Libraries » .NET Framework » General     Intermediate License: The Code Project Open License (CPOL)

Accessing Adobe InDesign CS COM Objects from .NET

By elmer_torensma

An article showing how to access Adobe InDesign CS COM objects from .NET
C#, Windows, .NET 1.0, .NET 1.1, COM, VS.NET2003, Dev
Posted:9 Nov 2005
Views:26,962
Bookmarked:9 times
Announcements
Loading...
 
Search    
Advanced Search
Add to IE Search
printPrint   add Share
      Discuss Discuss   Broken Article?Report  
6 votes for this article.
Popularity: 1.95 Rating: 2.50 out of 5
3 votes, 50.0%
1

2
1 vote, 16.7%
3
1 vote, 16.7%
4
1 vote, 16.7%
5

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:

/// <SUMMARY>
/// Creates a COM object given its ProgID.
/// </SUMMARY>
/// <param name="sProgID">The ProgID to create</param>
/// <RETURNS>The newly created object, or null on failure.</RETURNS>
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


Member

Occupation: Web Developer
Location: Netherlands Netherlands

Other popular .NET Framework articles:

Article Top
You must Sign In to use this message board.
FAQ FAQ 
 
Noise Tolerance  Layout  Per page   
 Msgs 1 to 6 of 6 (Total in Forum: 6) (Refresh)FirstPrevNext
GeneralThanks PinmemberGary Stafford16:00 7 Feb '07  
QuestionC# and InDesign Pinmemberkzimny10:31 12 Sep '06  
AnswerRe: C# and InDesign Pinmemberelmer_torensma22:10 12 Sep '06  
GeneralRe: C# and InDesign Pinmemberpasaulis3:53 4 May '07  
GeneralRe: C# and InDesign Pinmemberamin_khan22:24 6 Oct '07  
QuestionRe: C# and InDesign PinmemberMember 365198722:36 8 Dec '08  

General General    News News    Question Question    Answer Answer    Joke Joke    Rant Rant    Admin Admin   

PermaLink | Privacy | Terms of Use
Last Updated: 9 Nov 2005
Editor: Deeksha Shenoy
Copyright 2005 by elmer_torensma
Everything else Copyright © CodeProject, 1999-2009
Web15 | Advertise on the Code Project