saveDocument method

Future<void> saveDocument(
  1. PdfDocument doc,
  2. String outPath
)

Implementation

Future<void> saveDocument(PdfDocument doc, String outPath) async {
  final buffer = StringBuffer();

  buffer.writeln("%PDF-1.4");

  for (var obj in doc.objects) {
    buffer.writeln("${obj.number} ${obj.generation} obj");
    buffer.writeln(obj.content);
    buffer.writeln("endobj");
  }

  // Append overlays to pages
  for (var page in doc.pages) {
    for (var overlay in page.overlays) {
      buffer.writeln(overlay.toPdfStream());
    }
  }

  // Minimal xref (TODO: full rebuild)
  buffer.writeln("trailer << /Size ${doc.objects.length + 1} >>");
  buffer.writeln("startxref");
  buffer.writeln("0");
  buffer.writeln("%%EOF");

  await File(outPath).writeAsString(buffer.toString());
}