Beispiel #1
0
        public static async Task <PdfDocument> Load(
            string path,
            string password,
            PDFiumCoreManager manager,
            CancellationToken cancellationToken = default)
        {
            await PDFiumCoreManager.Initialize();

            int pages  = -1;
            var result = await manager.Dispatcher.QueueWithResult(() =>
            {
                var document = fpdfview.FPDF_LoadDocument(path, password);
                pages        = fpdfview.FPDF_GetPageCount(document);
                return(document);
            }, DispatcherPriority.Normal, cancellationToken);

            if (result == null)
            {
                return(null);
            }

            var pdfDocument = new PdfDocument(manager, result)
            {
                Pages = pages,
            };

            manager.AddDocument(pdfDocument);

            return(pdfDocument);
        }