When creating a combined PDF (actually, creating a document from another document by cutting some pages), the result contains no bookmarks.
Code sample:
import 'dart:async';
import 'package:flutter/material.dart';
import 'package:pdfrx/pdfrx.dart';
void main() async {
WidgetsFlutterBinding.ensureInitialized();
runApp(MyApp());
}
class MyApp extends StatelessWidget {
MyApp({super.key});
final Future<void> operatorManualLoadFuture = loadPdf();
@override
Widget build(context) => MaterialApp(
debugShowCheckedModeBanner: false,
home: Center(
child: FutureBuilder(
future: operatorManualLoadFuture,
builder: (context, snapshot) => snapshot.connectionState != ConnectionState.done ? CircularProgressIndicator() : const SizedBox(),
),
),
);
}
final PdfDocumentRef pdfDocumentRef = PdfDocumentRefAsset("assets/manual.pdf");
Future<void> loadPdf() async => await pdfDocumentRef.resolveListenable().load().then((pdfDownloadReport) => PdfDocument.openAsset(pdfDocumentRef.sourceName).then((pdfDocument) => pdfCut(pdfDocument)));
void pdfCut(PdfDocument pdfDocument) async {
final List<int> newPagesIndices = List.generate(pdfDocument.pages.length, (j) => j)..removeWhere((pageIndex) =>
(pageIndex > 10)
);
final cuttedDoc = await PdfDocument.createNew(sourceName: 'combined.pdf');
cuttedDoc.pages = [
for (int i in newPagesIndices) pdfDocument.pages[i]
];
// Encode to PDF
final bytes = await cuttedDoc.encodePdf();
print("Original pdf bookmarks length: ${getBookmarksList(await pdfDocument.loadOutline(), 0).toList().length}");
print("Combined pdf bookmarks length: ${getBookmarksList(await cuttedDoc.loadOutline(), 0).toList().length}");
}
Iterable<({PdfOutlineNode node, int level})> getBookmarksList(List<PdfOutlineNode>? outline, int level) sync* {
if (outline == null) return;
for (var node in outline)
{
yield (node: node, level: level);
yield* getBookmarksList(node.children, level + 1);
}
}
Output:
Original pdf bookmarks length: 36
Combined pdf bookmarks length: 0
Am I missing something?
When creating a combined PDF (actually, creating a document from another document by cutting some pages), the result contains no bookmarks.
Code sample:
Output:
Original pdf bookmarks length: 36
Combined pdf bookmarks length: 0
Am I missing something?