prepare method
Prepare the object to be written to the stream
Implementation
@override
void prepare() {
super.prepare();
// This holds any resources for this page
final resources = PdfDict();
if (altered) {
resources['/ProcSet'] = PdfArray(const <PdfName>[
PdfName('/PDF'),
PdfName('/Text'),
PdfName('/ImageB'),
PdfName('/ImageC'),
]);
}
// fonts
if (fonts.isNotEmpty) {
resources['/Font'] = PdfDict.fromObjectMap(fonts);
}
// shaders
if (shading.isNotEmpty) {
resources['/Shading'] = PdfDict.fromObjectMap(shading);
}
// patterns
if (patterns.isNotEmpty) {
resources['/Pattern'] = PdfDict.fromObjectMap(patterns);
}
// Now the XObjects
if (xObjects.isNotEmpty) {
resources['/XObject'] = PdfDict.fromObjectMap(xObjects);
}
if (pdfDocument.hasGraphicStates) {
// Declare Transparency Group settings
params['/Group'] = PdfDict.values({
'/Type': const PdfName('/Group'),
'/S': const PdfName('/Transparency'),
'/CS': const PdfName('/DeviceRGB'),
'/I': PdfBool(isolatedTransparency),
'/K': PdfBool(knockoutTransparency),
});
resources['/ExtGState'] = pdfDocument.graphicStates.ref();
}
if (resources.isNotEmpty) {
if (params.containsKey('/Resources')) {
final res = params['/Resources'];
if (res is PdfDict) {
res.merge(resources);
return;
}
}
params['/Resources'] = resources;
}
}