/// <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);
            }
        }
示例#2
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());
        }
示例#3
0
        public void TestEntireDocument(string expectedMinimalPattern)
        {
            PageRange pageRange            = PageRange.EntireDocument(doc100);
            string    acutalMinimalPattern = pageRange.GetPattern();

            Assert.AreEqual(expectedMinimalPattern, acutalMinimalPattern);
        }
示例#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);
            }
        }