Skip to main content
Participant
April 18, 2024
Question

Text adornment to export into idml

  • April 18, 2024
  • 2 replies
  • 598 views

Hello,

We have an InDesign/InCopy SDK plug-in that adds special text adornments such as insert or delete marks to text characters and runs.

These appear on prinitng or on export to interactive pdf but I cannot find a way to make the export to idml aware of my special text adornments. ?  I feel I must be missing something obvious, can anyone help?

Bit of code showing some of the special adornments and pic of how these appear in an interactive pdf attached. 

 

// Responder service implementation

DECLARE_PMID (kImplementationIDSpace, kBLUserEditResponderImpl, kBlackLining_Prefix + 45)

DECLARE_PMID (kImplementationIDSpace, kBLTextAttrDeletedTextReportImpl,   kBlackLining_Prefix + 46)

DECLARE_PMID (kImplementationIDSpace, kBLTextAttrDeletedTextAdornmentImpl,  kBlackLining_Prefix + 47)

DECLARE_PMID (kImplementationIDSpace, kBLTextAttrInsertedTextReportImpl, kBlackLining_Prefix + 48)

DECLARE_PMID (kImplementationIDSpace, kBLTextAttrInsertedTextAdornmentImpl, kBlackLining_Prefix + 49)

 

//  Responder Class ids

DECLARE_PMID (kClassIDSpace, kBLDeleteTextCmdResponderBoss, kBlackLining_Prefix + 26) 

DECLARE_PMID (kClassIDSpace, kBLTextAttrDeletedTextBoss, kBlackLining_Prefix + 28) 

DECLARE_PMID (kClassIDSpace, kBLTextAttrDeletedTextAdornmentBoss, kBlackLining_Prefix + 29) 

DECLARE_PMID (kClassIDSpace, kBLTextAttrInsertedTextBoss, kBlackLining_Prefix + 30) 

DECLARE_PMID (kClassIDSpace, kBLTextAttrInsertedTextAdornmentBoss, kBlackLining_Prefix + 31) 

DECLARE_PMID (kClassIDSpace, kBLUserEditTextCmdResponderBoss, kBlackLining_Prefix + 32) 

 

 

 

 

This topic has been closed for replies.

2 replies

Legend
April 19, 2024

Plug-ins (the C++ kind indicated by above source excerpt) can definitely add their share to IDML, ICML, snippet, library and so forth. Been there, done that.

 

The obvious you are missing is scriptability. Towards InDesign all these file formats use the scripting architecture, so you add appropriate properties and object classes to the scripting object model by means of scriptinfo resources for the declaration; you'd also write script providers to handle the calls and rebuild your persistent data.
 
You can withhold your scripting features from regular scripting languages by explicit resource statements, e.g. if you don't want it in UXPScript, want different names in AppleScript, or you can add them only to those script languages that you really want to support (e.g. IDML only, but none of the real ones). Prominent example (but unrelated here) are the font family details in IDML, also parameters for QR codes.
 
Unlike real scripting languages IDML and friends also make plenty use of metadata directives (again in the scriptinfo resource, unrelated to XMP metadata) where you e.g. influence the order within the document, or whether you want a separate file within the IDML zip the same way spreads and stories are handled.
 
As Raul vaguely notes "If IDML does not export tracking changes", it might be necessary to run your "own business logic". Or you can get along using the existing change tracking features - I did not try either. Such an investigation easily burns a few days.

James Gifford—NitroPress
Legend
April 18, 2024

One of the purposes of export to IDML is to write the file in absolutely standard, basic code that can be read by any fairly recent version of InDesign, and by other apps (such as translation tools) that do not have the capability of importing a specific, current INDD file. The process is so... sturdy that exporting a corrupted INDD file to IDML and then reopening it often fixes many document structural problems, especially with things like links.

 

What this means, though, is that IDML (more or less by design) does not accommodate plugins or add-ons, but strips their markers and content out as excess or faulty elements.

 

There may be exceptions, but I don't think you can use a plugin like this and export the file to IDML.

vossbarkAuthor
Participant
April 18, 2024

Hello James,

That's a swift and logical reply!  Although I take your point about the idml format needing to be a 'clean' xml standard,  I'm really hoping you're wrong! The InDesign- idml pages seeem to imply that they make it possible in idml to allow for special requirements for workflow autiomation such as mine.

 https://helpx.adobe.com/uk/indesign/automation.html 

I realise I missed out an important point though. Yes the idml export function must be able to detect the adornments and act on them but when representing them in idml stories these would be in the form of <tags> e.g. <kdeletedtextstart>. I should have also added that this is for a 'closed' workflow, for the indd -> idml -> indd round trips none of these files will be travellijg outside of their homeland. 

If there really is no way of detectng the adornments  I may have to come up with some horrible method extracting the stories with marks first, then exporting the file into idml,  then forcing those stories into a completed idml export file as a custom text stream which then replaces the existing stories. Ugh!

Here's hoping this finds its way to some InDesign idml specialist engineers! 

Many thanks for responding !

James Gifford—NitroPress
Legend
April 18, 2024

I'm not really an XML expert and there could be details about my suggestion that are wrong, but it's in line with what I know of how IDML export is used and managed. I am not sure what your workflow and purpose is, here, but IDML is not generally seen or used as a primary document format; it's an exchange format something like RTF. So if you're trying to use it outside that purpose, you may or may not succeed in finding any way to "extend" it, XML-style, to include non-native elements like your text markup.

 

I suggest that if XML, or something like it, is the basis for your workflow, FrameMaker might be a better platform, since it was reengineered to be highly XML/DITA supportive a number of years ago. But I wouldn't place any bets on InDesign's XML compliance, or anything like it, through IDML or any other standard doc format.