pdf_cos 1.3.0
pdf_cos: ^1.3.0 copied to clipboard
COS object layer for PDF: tokenizer, parser, filters (incl. CCITT, JBIG2, JPEG 2000), xref machinery, encryption, and serializer. Pure Dart, web-ready.
example/main.dart
import 'dart:typed_data';
import 'package:pdf_cos/pdf_cos.dart';
void main() {
final document = CosDocument.open(_minimalPdf());
final root = document.catalog;
print('PDF version: ${document.version}');
print('Catalog type: ${root.typeName}');
print('Pages reference: ${root['Pages']}');
}
Uint8List _minimalPdf() {
const objects = [
'<< /Type /Catalog /Pages 2 0 R >>',
'<< /Type /Pages /Kids [3 0 R] /Count 1 >>',
'<< /Type /Page /Parent 2 0 R /MediaBox [0 0 612 792] >>',
];
final buffer = StringBuffer('%PDF-1.4\n');
final offsets = <int>[];
for (var i = 0; i < objects.length; i++) {
offsets.add(buffer.length);
buffer.write('${i + 1} 0 obj\n${objects[i]}\nendobj\n');
}
final xrefOffset = buffer.length;
buffer
..write('xref\n0 ${objects.length + 1}\n')
..write('0000000000 65535 f \n');
for (final offset in offsets) {
buffer.write('${offset.toString().padLeft(10, '0')} 00000 n \n');
}
buffer
..write('trailer\n<< /Size ${objects.length + 1} /Root 1 0 R >>\n')
..write('startxref\n$xrefOffset\n%%EOF\n');
return Uint8List.fromList(buffer.toString().codeUnits);
}