prepare method
Prepare the object to be written to the stream
Implementation
@override
void prepare() {
super.prepare();
// the /Parent pages object
params['/Parent'] = pdfDocument.pdfPageList.ref();
if (rotate != PdfPageRotation.none) {
params['/Rotate'] = PdfNum(rotate.index * 90);
}
// the /MediaBox for the page size
params['/MediaBox'] =
PdfArray.fromNum(<double>[0, 0, pageFormat.width, pageFormat.height]);
for (final content in contents) {
if (!_contentGraphics[content]!.altered) {
content.inUse = false;
}
}
// The graphic operations to draw the page
final contentList =
PdfArray.fromObjects(contents.where((e) => e.inUse).toList());
if (params.containsKey('/Contents')) {
final prevContent = params['/Contents']!;
if (prevContent is PdfArray) {
contentList.values
.insertAll(0, prevContent.values.whereType<PdfIndirect>());
} else if (prevContent is PdfIndirect) {
contentList.values.insert(0, prevContent);
}
}
contentList.uniq();
if (contentList.values.length == 1) {
params['/Contents'] = contentList.values.first;
} else if (contentList.isNotEmpty) {
params['/Contents'] = contentList;
}
// The /Annots object
if (annotations.isNotEmpty) {
if (params.containsKey('/Annots')) {
final annotationList = params['/Annots'];
if (annotationList is PdfArray) {
annotationList.values
.addAll(PdfArray.fromObjects(annotations).values);
}
} else {
params['/Annots'] = PdfArray.fromObjects(annotations);
}
}
}