Parts: splitting and renaming email attachments
In a Control Script, parts can be defined to determine which sections should be output to the same file. This way it is possible to split the Print context into multiple email attachments. This topic shows how to do that.
For information about Control Scripts in general, see Control Scripts and Control Script API. If you don't know how to write scripts, see Writing your own scripts.
Defining parts
Defining parts is done by setting the part
field on a section
, for example: merge.template.contexts.PRINT.sections['Section 2'].part = "PDF_Attachment2";
. (Also see section and Control Script API.)
- If a part name is given, then that delimits the start of a new part (even if the part name is the same as the previous one). Following sections that don't define a part name, will be added to the previous part.
- A part ends at the last enabled* section or at the last section
before the start of a new part.
*When a Control Script has set theenabled
field of asection
tofalse
, it will not be outputted.
If no part name is set on any section, it is assumed that there is only one part, consisting of
Examples
No parts defined
Assume there are three Print sections: sections A, B and C. When generating Email output with the Print context as attachment, all three Print sections will be put together in one file and attached to the email. If the email's subject is 'Take action', the name of the attached file will be 'Take action.PDF'.
Splitting and renaming a Print attachment
Assume there are three Print sections: sections A, B and C. In a Control Script a part name is defined for section C:
var section = merge.template.contexts.PRINT.sections['Section C'];
section.part = 'Part2';
When generating Email output with the Print context as attachment, the email will have two attachments:
- attachment 1: Section A, Section B
- attachment 2: "Part2", which is Section C. The file name of this attachment is the part name.
Controlling multiple Email attachments
The following script attaches the following sections to an email:
- Print section 3 + 4 as attachment with continued page numbers
- Print section 6 as separate attachment
if (channel == Channel.EMAIL) { // only when generating Email output
if (merge.context.type == ContextType.PRINT) {
merge.context.sections['Section 1'].enabled = false;
merge.context.sections['Section 2'].enabled = false;
merge.context.sections['Section 3'].enabled = true;
merge.context.sections['Section 3'].part = "PDFAttach1";
merge.context.sections['Section 4'].enabled = true;
merge.context.sections['Section 4'].restartPageNumber = false;
merge.context.sections['Section 5'].enabled = false;
merge.context.sections['Section 6'].enabled = true;
merge.context.sections['Section 6'].part = "PDFAttach2";
}
}