I tested some libraries that create InDesign Interchange XML-documents, but was not happy with the results.
So if you want to create an InDesign document with C#, you need to
- install Adobe InDesign
- reference "Adobe InDesign CSx Type Library" in your application
Because I didn't find a good documentation, here's some code to get you started as well.
Type type = Type.GetTypeFromProgID("InDesign.Application");
Application application = (Application)Activator.CreateInstance(type);
application.ViewPreferences.HorizontalMeasurementUnits = idMeasurementUnits.idMillimeters;
application.ViewPreferences.VerticalMeasurementUnits = idMeasurementUnits.idMillimeters;
application.Documents.Add(true, application.DocumentPresets.FirstItem());
Document document = application.ActiveDocument;
document.DocumentPreferences.FacingPages = false;
document.DocumentPreferences.PageWidth = 210;
document.DocumentPreferences.PageHeight = 297;
Page page = (Page)document.Pages[1];
page.MarginPreferences.Top = 10;
page.MarginPreferences.Bottom = 10;
page.MarginPreferences.Left = 20;
page.MarginPreferences.Right = 10;
Rectangle rectangle = page.Rectangles.Add(document.Layers.FirstItem(), idLocationOptions.idUnknown, page);
rectangle.GeometricBounds = new[] { 20, 30, 120, 130 };
rectangle.Place(@"c:\temp\sample.png", false);
rectangle.Fit(idFitOptions.idContentToFrame);
page = document.Pages.Add(idLocationOptions.idUnknown, document);
page.MarginPreferences.Top = 10;
page.MarginPreferences.Bottom = 10;
page.MarginPreferences.Left = 20;
page.MarginPreferences.Right = 10;
TextFrame textFrame = page.TextFrames.Add(document.Layers.FirstItem(), idLocationOptions.idUnknown, page);
textFrame.GeometricBounds = new[] { 20, 30, 120, 130 };
textFrame.Contents = "line1\rline2\rline3";
IEnumerator paragraphs = textFrame.Paragraphs.GetEnumerator();
for (int j = 0; j < textFrame.Paragraphs.Count; j++)
{
paragraphs.MoveNext();
Paragraph paragraph = ((Paragraph)paragraphs.Current);
paragraph.Justification = idJustification.idCenterAlign;
paragraph.PointSize = 15 - j;
paragraph.FontStyle = "Regular";
paragraph.AppliedFont = "Verdana";
}