Example #1
0
 /// <summary>
 /// Rotates the pages and saves the result as a new document to the given StorageFile
 /// </summary>
 private async void RotateAndSaveAsync(List <PageOrientation> orientations, StorageFile outputFile)
 {
     if (outputFile != null)
     {
         Task <Stream> outputStreamTask = outputFile.OpenStreamForWriteAsync();
         Stream        outputStream     = await outputStreamTask;
         if (outputStream != null)
         {
             PdfAssembler pdfAssembler = new PdfAssembler(outputStream);
             for (int i = 0; i < loadedFile.PageCount; i++)
             {
                 int        pageNumber = i + 1;
                 ExportTask task       = new ExportTask(PageRange.FromPattern(loadedFile.Document, pageNumber.ToString()), new PageRotation(orientations[i]));
                 pdfAssembler.AppendTask(task);
             }
             pdfAssembler.ExportFile();
         }
         else
         {
             ToolPage.Current.NotifyUser("Error occured while while exporting the merged file. Try again.", NotifyType.ErrorMessage);
         }
     }
     else
     {
         ToolPage.Current.NotifyUser("No output file has been selected.", NotifyType.ErrorMessage);
     }
 }
        /// <summary>
        /// Encrypts ands saves a file.
        /// @Requires: PasswordInput.Password != null && !String.Empty().Equals(PasswordInput.Password)
        /// </summary>
        private async void EncryptAndSaveAsync(InternalFile source, StorageFile outputFile)
        {
            if (outputFile != null)
            {
                Task <Stream> outputStreamTask = outputFile.OpenStreamForWriteAsync();
                Stream        outputStream     = await outputStreamTask;
                if (outputStream != null)
                {
                    string password = PasswordInput.Password;

                    PdfAssembler pdfAssembler = new PdfAssembler(outputStream);
                    PageRange    pageRange    = PageRange.EntireDocument(source.Document);
                    ExportTask   task         = new ExportTask(pageRange);
                    pdfAssembler.AppendTask(task);
                    pdfAssembler.ExportFileEncrypted(password);
                    loadedFilesList.Remove(source);
                    ToolPage.Current.NotifyUser(String.Empty, NotifyType.StatusMessage);
                }
                else
                {
                    ToolPage.Current.NotifyUser("Error occured while while exporting the merged file. Try again.", NotifyType.ErrorMessage);
                }
            }
            else
            {
                ToolPage.Current.NotifyUser("No output file has been selected.", NotifyType.ErrorMessage);
            }
        }
Example #3
0
        public void TestMergeEntireFiles(string[] inputFileNames, string outputFilename, int expectedNumberOfPages)
        {
            List <PdfDocument> inputFiles = new List <PdfDocument>();

            foreach (var filename in inputFileNames)
            {
                inputFiles.Add(LoadTestFile(filename));
            }
            List <PageRange> relevantPages = new List <PageRange>();

            foreach (var doc in inputFiles)
            {
                relevantPages.Add(PageRange.EntireDocument(doc));
            }
            List <ExportTask> exportTasks = new List <ExportTask>();

            foreach (var pageRange in relevantPages)
            {
                exportTasks.Add(new ExportTask(pageRange /*no transform*/));
            }
            Stream       outputStream = new FileStream(outputFilename, FileMode.OpenOrCreate, FileAccess.ReadWrite);
            PdfAssembler assembler    = new PdfAssembler(outputStream);

            foreach (var task in exportTasks)
            {
                assembler.AppendTask(task);
            }

            assembler.ExportFile();

            PdfDocument result = LoadTestFile(outputFilename);

            Assert.AreEqual(expectedNumberOfPages, result.GetNumberOfPages());
        }
Example #4
0
        private async void MergeButton_Click(object sender, RoutedEventArgs e)
        {
            if (loadedFilesList.Count > 0)
            {
                var savePicker = new FileSavePicker();
                savePicker.FileTypeChoices.Add("PDF-Document", new List <String>()
                {
                    ".pdf"
                });
                savePicker.SuggestedFileName = "MergedPdfDocuments";
                if (!StorageApplicationPermissions.FutureAccessList.ContainsItem(App.RECENT_FILE_DIRECTORY_TOKEN))
                {
                    savePicker.SuggestedStartLocation = PickerLocationId.DocumentsLibrary;
                }
                StorageFile savedFile = await savePicker.PickSaveFileAsync();

                if (savedFile != null)
                {
                    Task <Stream> outputStreamTask = savedFile.OpenStreamForWriteAsync();
                    Stream        outputStream     = await outputStreamTask;
                    if (outputStream != null)
                    {
                        PdfAssembler pdfAssembler = new PdfAssembler(outputStream);
                        foreach (var obj in loadedFilesList)
                        {
                            var        file      = (InternalFile)obj;
                            PageRange  pageRange = PageRange.EntireDocument(file.Document);
                            ExportTask task      = new ExportTask(pageRange);
                            pdfAssembler.AppendTask(task);
                        }
                        pdfAssembler.ExportFile();
                    }
                    else
                    {
                        ToolPage.Current.NotifyUser("Error occured while while exporting the merged file. Try again.", NotifyType.ErrorMessage);
                    }
                }
                else
                {
                    ToolPage.Current.NotifyUser("No output file has been selected.", NotifyType.ErrorMessage);
                }
            }
            else
            {
                ToolPage.Current.NotifyUser("No files loaded.", NotifyType.ErrorMessage);
            }
        }
 /// <summary>
 /// Saves the pages from the PageRange instance as a new document to the given StorageFile
 /// </summary>
 private async void ExtractAndSaveAsync(PageRange outputPageRange, StorageFile outputFile)
 {
     if (outputFile != null)
     {
         Task <Stream> outputStreamTask = outputFile.OpenStreamForWriteAsync();
         Stream        outputStream     = await outputStreamTask;
         if (outputStream != null)
         {
             PdfAssembler pdfAssembler = new PdfAssembler(outputStream);
             ExportTask   task         = new ExportTask(outputPageRange);
             pdfAssembler.AppendTask(task);
             pdfAssembler.ExportFile();
         }
         else
         {
             ToolPage.Current.NotifyUser("Error occured while while exporting the merged file. Try again.", NotifyType.ErrorMessage);
         }
     }
     else
     {
         ToolPage.Current.NotifyUser("No output file has been selected.", NotifyType.ErrorMessage);
     }
 }
Example #6
0
        public void TestRotatePages(string inputFileName, string outputFilename, int expectedNumberOfPages)
        {
            PdfDocument      inputFile     = LoadTestFile(inputFileName);
            List <PageRange> relevantPages = new List <PageRange>();

            relevantPages.Add(PageRange.FromPattern(inputFile, "1,5"));
            relevantPages.Add(PageRange.FromPattern(inputFile, "3-4"));
            relevantPages.Add(PageRange.FromPattern(inputFile, "2-3"));
            relevantPages.Add(PageRange.FromPattern(inputFile, ""));

            List <ExportTask> exportTasks = new List <ExportTask>();

            exportTasks.Add(new ExportTask(relevantPages[0], new List <IPageTransformation>()
            {
                new PageRotation(PageOrientation.NoRotation())
            }));
            exportTasks.Add(new ExportTask(relevantPages[1], new List <IPageTransformation>()
            {
                new PageRotation(PageOrientation.UpsideDown())
            }));
            exportTasks.Add(new ExportTask(relevantPages[2], new PageRotation(PageOrientation.RotateRight())));
            exportTasks.Add(new ExportTask(relevantPages[3], new PageRotation(PageOrientation.NoRotation())));

            Stream       outputStream = new FileStream(outputFilename, FileMode.OpenOrCreate, FileAccess.ReadWrite);
            PdfAssembler assembler    = new PdfAssembler(outputStream);

            foreach (var task in exportTasks)
            {
                assembler.AppendTask(task);
            }

            assembler.ExportFile();

            PdfDocument result = LoadTestFile(outputFilename);

            Assert.AreEqual(expectedNumberOfPages, result.GetNumberOfPages());
        }