I use InDesign Server to generate previews and materials from my application. I have two scripts, first one to generate a preview (jpeg with watermark added) and material (pdf with pdfpreset). I use the same template file and the same datasource csv for each action. When I generate material QR codes are correctly generated, but for preview instead of QR codes I get gray boxes see attached file). How can I make it work?
I already contacted Robert at ID-Tasker, but I wanted to ask here since I have no working solution yet.
Indesign Server Version 20.0 x64 Windows Server 2022 Standard v. 21H2
generate preview code:
try {
const startTime = new Date();
var logs = [];
var errors = [];
var hasError = false;
var outputFolder = 'C:/OutputFiles/';
var templatePath = '__INDD__';
var datasourcePath = '__CSV__';
var outputName = '__OUT__';
var watermarkFilePath = 'C:/watermark/watermark.png';
var template = new File(templatePath);
var dataSource = new File(datasourcePath);
var outputFile = new File(outputFolder + outputName + '.jpg');
var watermarkFile = new File(watermarkFilePath);
var originalPNGPrefs = app.pngExportPreferences.properties;
var originalJPEGPrefs = app.jpegExportPreferences.properties;
// general settings
try {
app.textImportPreferences.characterSet = TextImportCharacterSet.UTF16;
with (app.jpegExportPreferences) {
exportResolution = 720.0;
jpegExportRange = ExportRangeOrAllPages.EXPORT_ALL;
jpegQuality = JPEGOptionsQuality.MAXIMUM;
jpegColorSpace = JpegColorSpaceEnum.RGB;
antiAlias = true;
exportingSpread = false;
simulateOverprint = true;
jpegRenderingStyle = JPEGOptionsFormat.BASELINE_ENCODING;
}
} catch (e) {
errors.push(e.message);
hasError = true;
}
logs.push('Paths set');
try {
var doc = app.open(template);
} catch (e) {
errors.push(e.message);
hasError = true;
}
// if no error - open data source
if (!hasError) {
logs.push('opened template');
try {
doc.dataMergeProperties.selectDataSource(dataSource);
} catch (e) {
errors.push(e.message);
hasError = true;
}
}
// if no error - export output
if (!hasError) {
logs.push('export output');
try {
doc.dataMergeOptions.createNewDocument = true;
doc.dataMergeOptions.removeBlankLines = true;
doc.dataMergeProperties.mergeRecords();
var mergedDoc = app.documents[0];
for (var s = 0; s < mergedDoc.stories.length; s++) {
var story = mergedDoc.stories[s];
for (var t = story.tables.length - 1; t >= 0; t--) {
var table = story.tables[t];
for (var r = table.rows.length - 1; r >= 0; r--) {
var row = table.rows[r];
var containsLetterOrDigit = false;
var containsImage = false;
for (var c = 0; c < row.cells.length; c++) {
var cell = row.cells[c];
if (/[a-zA-Z0-9]/.test(cell.contents)) {
containsLetterOrDigit = true;
break;
}
if (cell.allGraphics.length > 0) {
containsImage = true;
break;
}
}
if (!containsLetterOrDigit && !containsImage) {
row.remove();
}
}
}
}
logs.push(
'Rows without any letters, digits, or images removed successfully.',
);
var wmLayer = mergedDoc.layers.itemByName('Watermark');
if (!wmLayer.isValid) {
wmLayer = mergedDoc.layers.add({ name: 'Watermark' });
}
wmLayer.move(LocationOptions.AT_BEGINNING);
for (var i = 0; i < mergedDoc.pages.length; i++) {
var pg = mergedDoc.pages[i];
var wf = pg.rectangles.add({
geometricBounds: [
0,
0,
mergedDoc.documentPreferences.pageHeight,
mergedDoc.documentPreferences.pageWidth,
],
strokeWeight: 0,
itemLayer: wmLayer,
});
wf.place(watermarkFile);
wf.fit(FitOptions.fillProportionally);
wf.transparencySettings.blendingSettings.opacity = 20;
wf.bringToFront();
}
logs.push('watermark added to all pages successfully.');
mergedDoc.exportFile(ExportFormat.JPG, outputFile);
} catch (e) {
errors.push(e.message);
hasError = true;
}
try {
var countFile = new File(outputFolder + outputName + '_pages.txt');
countFile.open('w');
countFile.write(mergedDoc.pages.length);
countFile.close();
} catch (e) {
errors.push(e.message);
hasError = true;
}
}
// close file, log time and print message
mergedDoc.close(SaveOptions.NO);
logs.push('time: ' + (new Date() - startTime) / 1000 + 's');
} catch (e) {
$.writeln('Error: ' + e.message);
} finally {
app.pngExportPreferences.properties = originalPNGPrefs;
app.jpegExportPreferences.properties = originalJPEGPrefs;
if (hasError) {
var title = 'Error';
[title, errors[0]].join(' : ');
} else {
logs.join(' --- ');
}
}
Generate material code:
try {
const startTime = new Date();
var logs = [];
var errors = [];
var hasError = false;
var outputFolder = 'C:/OutputFiles/';
var templatePath = '__INDD__';
var datasourcePath = '__CSV__';
var outputName = '__OUT__';
var template = new File(templatePath);
var dataSource = new File(datasourcePath);
var pdfFile = new File(outputFolder + outputName + '.pdf');
// general settings
try {
var pdfPreset = app.pdfExportPresets.itemByName('PDFPreset');
if (!pdfPreset) {
var pdfPreset = app.pdfExportPresets.add({
name: 'PDFPreset',
bleedMarks: true,
cropMarks: true,
colorBars: true,
});
}
if (!pdfPreset.isValid) {
errors.push('pdf preset invalid');
hasError = true;
}
app.textImportPreferences.characterSet = TextImportCharacterSet.UTF16;
} catch (e) {
errors.push(e.message);
hasError = true;
}
logs.push('Paths set');
try {
var doc = app.open(template);
} catch (e) {
errors.push(e.message);
hasError = true;
}
// if no error - open data source
if (!hasError) {
logs.push('opened template');
try {
doc.dataMergeProperties.selectDataSource(dataSource);
} catch (e) {
errors.push(e.message);
hasError = true;
}
}
// if no error - export pdf
if (!hasError) {
logs.push('export pdf');
try {
doc.dataMergeProperties.exportFile(pdfFile, pdfPreset);
} catch (e) {
errors.push(e.message);
hasError = true;
}
}
// close file, log time and print message
doc.close(SaveOptions.NO);
if (hasError) {
var title = 'Error';
[title, errors[0]].join(' : ');
} else {
logs.push('time: ' + (new Date() - startTime) / 1000 + 's');
logs.join(' --- ');
}
} catch (e) {
$.writeln('Error: ' + e.message);
}