/// <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); } }
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()); }
public void TestEntireDocument(string expectedMinimalPattern) { PageRange pageRange = PageRange.EntireDocument(doc100); string acutalMinimalPattern = pageRange.GetPattern(); Assert.AreEqual(expectedMinimalPattern, acutalMinimalPattern); }
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); } }