public void Apply() { // Get read object options // Get resolution ResolutionItem resolutionItem = (ResolutionItem)_resolutionComboBox.SelectedItem; _resolution = resolutionItem.Value; _parseDocumentStructOptions = PDFParseDocumentStructureOptions.None; if (_readBookmarksCheckBox.Checked) { _parseDocumentStructOptions |= PDFParseDocumentStructureOptions.Bookmarks; } if (_readFontsCheckBox.Checked) { _parseDocumentStructOptions |= PDFParseDocumentStructureOptions.Fonts; } if (_readInternalLinksCheckBox.Checked) { _parseDocumentStructOptions |= PDFParseDocumentStructureOptions.InternalLinks; } _parsePagesOptions = PDFParsePagesOptions.None; if (_parseObjectsCheckBox.Checked) { _parsePagesOptions = PDFParsePagesOptions.AllIgnoreWhiteSpaces; } if (!_parseDigitalSignaturesCheckBox.Checked) { _parsePagesOptions &= ~PDFParsePagesOptions.Signatures; } _parseChunks = _parseChunksCheckBox.Checked; _lastResolution = _resolution; _lastParseDocumentStructOptions = _parseDocumentStructOptions; _lastParsePagesOptions = _parsePagesOptions; _lastParseChunks = _parseChunks; }
private void ParseObjects(PDFDocument document, PDFParsePagesOptions parsePagesOptions, bool parseChunks) { if (parsePagesOptions == PDFParsePagesOptions.None) { return; } _readObjectsLabel.Visible = true; int pageCount = document.Pages.Count; int chunkSize; if (parseChunks) { _readObjectsValueLabel.Visible = false; _readObjectsProgressBar.Visible = true; _stopButton.Visible = true; _readObjectsProgressBar.Minimum = 1; _readObjectsProgressBar.Maximum = pageCount; chunkSize = 50; } else { _readObjectsValueLabel.Visible = true; _readObjectsProgressBar.Visible = false; chunkSize = pageCount; Application.DoEvents(); } int pagesLeft = pageCount; int firstPageNumber = 1; while (pagesLeft > 0 && !_stopReading) { int toRead = Math.Min(pagesLeft, chunkSize); if (toRead > 0) { if (parseChunks) { Application.DoEvents(); } int lastPageNumber = firstPageNumber + toRead - 1; try { if (parseChunks) { document.ParsePages(parsePagesOptions, firstPageNumber, lastPageNumber); } else { using (WaitCursor wait = new WaitCursor()) { document.ParsePages(parsePagesOptions, firstPageNumber, lastPageNumber); } } } catch (Exception ex) { AddError(string.Format("{0} {1} {2} {3}", DemosGlobalization.GetResxString(GetType(), "resx_ReadingPages"), firstPageNumber, DemosGlobalization.GetResxString(GetType(), "resx_To"), lastPageNumber), ex); } pagesLeft -= toRead; firstPageNumber += toRead; if (_readObjectsProgressBar.Visible) { _readObjectsProgressBar.Value = firstPageNumber - 1; Application.DoEvents(); } } } if (!parseChunks) { _readObjectsValueLabel.Text = DemosGlobalization.GetResxString(GetType(), "resx_Finished"); Application.DoEvents(); } }
public bool Run(PDFDocument document, PDFParseDocumentStructureOptions parseDocumentStructureOptions, PDFParsePagesOptions parsePagesOptions, bool parseChunks) { // - Read the document structure ReadDocumentStructure(document, parseDocumentStructureOptions); // - Parse the document objects ParseObjects(document, parsePagesOptions, parseChunks); if (_errorsListBox.Items.Count > 0) { _errorsLabel.Visible = true; _copyToClipboardButton.Visible = true; return(false); } return(true); }