Ejemplo n.º 1
0
        private void SetupUI(DocumentScanType scanType)
        {
            PageTitle.Text = (scanType == DocumentScanType.Text) ? "Extracted Results" : "Recognition Results";
            CopyButton.HorizontalOptions = (scanType == DocumentScanType.Text) ? LayoutOptions.End : LayoutOptions.CenterAndExpand;

            SpeakButton.IsVisible  = (scanType == DocumentScanType.Text);
            CopyButton.IsVisible   = (scanType == DocumentScanType.Text);
            ExportButton.IsVisible = (scanType == DocumentScanType.Document);
        }
        public DocumentViewerPage(string appDirectory,
                                  string documentsDirectory,
                                  LEADDocument document,
                                  ObservableCollection <DocumentItemData> documents,
                                  OcrOutputFormat sourceDocumentFormat,
                                  OcrOutputFormat outputDocumentFormat,
                                  int documentIndexInList,
                                  DocumentConverterHelper documentConverterHelper,
                                  DocumentScanType scanType,
                                  string pageTitle,
                                  string pageLanguage,
                                  bool allowConversionInsideDocumentViewerPage)
        {
            MessagingCenter.Subscribe <object, string>(this, "OnSleep", (sender, parameter) =>
            {
                CancelSpeech();
            });

            _documents           = documents;
            _documentIndexInList = documentIndexInList;
            _pageLanguage        = !string.IsNullOrWhiteSpace(pageLanguage) ? pageLanguage : "en";

            _applicationDirectory    = appDirectory;
            _documentsDirectory      = documentsDirectory;
            _documentConverterHelper = documentConverterHelper;
            SourceDocumentFormat     = sourceDocumentFormat;
            OutputDocumentFormat     = outputDocumentFormat;
            AllowConversionInsideDocumentViewerPage = allowConversionInsideDocumentViewerPage;

            _cts = new CancellationTokenSource();

            InitializeComponent();

            if (Device.RuntimePlatform == Device.iOS)
            {
                HasSystemPadding = false;
            }

            // Set thumbnails and annotations layouts heights and margins
            double bottomMargin            = DemoUtilities.Instance.SafeAreaBottom;
            double thumbnailsLayoutHeight  = DemoUtilities.DisplayHeight * 0.7 - bottomMargin;
            double annotationsLayoutHeight = DemoUtilities.DisplayHeight * 0.5 - bottomMargin;

            ThumbnailsLayout.Margin        = new Thickness(0, 0, 0, bottomMargin);
            ThumbnailsLayout.HeightRequest = thumbnailsLayoutHeight;

            AnnotationsLayout.Margin        = new Thickness(0, 0, 0, bottomMargin);
            AnnotationsLayout.HeightRequest = annotationsLayoutHeight;

            InitDocumentViewer(scanType);
            SetDocument(document);
            SetupUI(scanType, pageTitle);
        }
Ejemplo n.º 3
0
        private void SetDocument(string documentPath, DocumentScanType scanType)
        {
            LEADDocument leadDocument = DocumentFactory.LoadFromFile(documentPath, new LoadDocumentOptions()
            {
                UseCache = false, FirstPageNumber = 1, LastPageNumber = -1, MimeType = (scanType == DocumentScanType.Text) ? "text/plain" : null
            });

            leadDocument.Text.ImagesRecognitionMode = DocumentTextImagesRecognitionMode.Auto;
            leadDocument.Text.TextExtractionMode    = DocumentTextExtractionMode.Auto;

            // Set it in the document viewer
            _documentViewer.SetDocument(leadDocument);
        }
Ejemplo n.º 4
0
        // Create the document viewer
        private void InitDocumentViewer(string documentPath, DocumentScanType scanType)
        {
            var createOptions = new DocumentViewerCreateOptions();

            // Set the UI part where the main view is displayed
            createOptions.ViewContainer  = DocumentViewerContainer;
            createOptions.UseAnnotations = false;

            // Now create the viewer
            _documentViewer = DocumentViewerFactory.CreateDocumentViewer(createOptions);
            // Set the user name
            _documentViewer.UserName = Environment.UserName;
            // We prefer SVG viewing (if supported)
            _documentViewer.View.PreferredItemType = DocumentViewerItemType.Svg;

            var imageViewer = _documentViewer.View.ImageViewer;

            if (scanType == DocumentScanType.Document)
            {
                imageViewer.ScrollOffsetChanged += ImageViewer_ScrollOffsetChanged;
            }
            imageViewer.BackgroundColor     = Color.FromHex("#F5F7FA");
            imageViewer.IsFastScrollEnabled = true;
            imageViewer.Zoom(ControlSizeMode.FitWidth, 1, imageViewer.DefaultZoomOrigin);

            // Helps with debugging of there was a rendering error
            imageViewer.RenderError += (sender, e) =>
            {
                var message = string.Format("Error during render item {0} part {1}: {2}",
                                            e.Item != null ? imageViewer.Items.IndexOf(e.Item) : -1,
                                            e.Part,
                                            e.Error.Message);
                System.Diagnostics.Debug.WriteLine(message);
            };

            _documentViewer.Text.AutoGetText = true;
            _documentViewer.Commands.Run(DocumentViewerCommands.InteractiveAutoPan);

            // Enable the pan/zoom interactive mode only if the scan type is Document and not Text because
            // we want the suer to be able to select text in case of extracted text mode.
            if (scanType == DocumentScanType.Document)
            {
                _documentViewer.Commands.Run(DocumentViewerCommands.InteractivePanZoom);
            }

            // Enable inertia scroll
            ToggleInertiaScroll(true);

            SetDocument(documentPath, scanType);
        }
Ejemplo n.º 5
0
        public DocumentViewerPage(string documentPath, DocumentScanType scanType, string pageLanguage)
        {
            InitializeComponent();

#if __IOS__
            HasSystemPadding = false;
#endif

            _documentPath = documentPath;
            _pageLanguage = pageLanguage;
            _cts          = new CancellationTokenSource();

            SetupUI(scanType);

            InitDocumentViewer(documentPath, scanType);
        }
 private void SetupUI(DocumentScanType scanType, string pageTitle)
 {
     PageTitle.Text = pageTitle;
 }
        // Create the document viewer
        private void InitDocumentViewer(DocumentScanType scanType)
        {
            var createOptions = new DocumentViewerCreateOptions();

            // Set the UI part where the main view is displayed
            createOptions.ViewContainer       = DocumentViewerContainer;
            createOptions.ThumbnailsContainer = ThumbnailsLayout;
            createOptions.UseAnnotations      = true;

            // Now create the viewer
            _documentViewer = DocumentViewerFactory.CreateDocumentViewer(createOptions);
            // Set the user name
            _documentViewer.UserName = Environment.UserName;
            // We prefer SVG viewing (if supported)
            _documentViewer.View.PreferredItemType = DocumentViewerItemType.Svg;
            // Set thumbnail viewer options
            ImageViewer thumbnailsImageViewer = _documentViewer.Thumbnails.ImageViewer;

            thumbnailsImageViewer.BackgroundColor             = Color.Transparent;
            thumbnailsImageViewer.ItemHorizontalAlignment     = ControlAlignment.Near;
            thumbnailsImageViewer.ItemVerticalAlignment       = ControlAlignment.Near;
            thumbnailsImageViewer.SelectedItemBackgroundColor = Color.FromRgb(80, 131, 242);

            _documentViewer.Operation += _documentViewer_Operation;

            var imageViewer = _documentViewer.View.ImageViewer;

            imageViewer.BackgroundColor = Color.FromHex("#F5F7FA");
#if LEADTOOLS_V21_OR_LATER
            imageViewer.IsFastScrollGadgetEnabled = true;
#endif // #if LEADTOOLS_V21_OR_LATER
            imageViewer.ViewVerticalAlignment = ControlAlignment.Near;
            imageViewer.ViewBorderThickness   = 0;
            imageViewer.ItemBorderThickness   = 0;
            imageViewer.ImageBorderThickness  = 0;
            imageViewer.Zoom(ControlSizeMode.FitWidth, 1, imageViewer.DefaultZoomOrigin);
            imageViewer.InteractiveService.KeyDown += InteractiveService_KeyDown;

            // By default, document viewer has 11 interactive modes added and we don't need them all in our document viewer page.
            // So remove them all exception PanZoom, SelectText and Annotations interactive modes.
            ImageViewerPanZoomInteractiveMode panZoomMode = null;
            var panZoomModes = imageViewer.InteractiveModes.Where(mode => mode.GetType() == typeof(ImageViewerPanZoomInteractiveMode) && (mode as ImageViewerPanZoomInteractiveMode).EnablePan && (mode as ImageViewerPanZoomInteractiveMode).EnablePinchZoom);
            if (panZoomModes != null && panZoomModes.Count() > 0)
            {
                panZoomMode = panZoomModes.ElementAt(0) as ImageViewerPanZoomInteractiveMode;
            }

            DocumentViewerSelectTextInteractiveMode selectTextMode = null;
            var selectTextModes = imageViewer.InteractiveModes.Where(mode => mode.GetType() == typeof(DocumentViewerSelectTextInteractiveMode));
            if (selectTextModes != null && selectTextModes.Count() > 0)
            {
                selectTextMode = selectTextModes.ElementAt(0) as DocumentViewerSelectTextInteractiveMode;
            }

            AnnotationsInteractiveMode annotationsMode = null;
            var annotationsModes = imageViewer.InteractiveModes.Where(mode => mode.GetType() == typeof(AnnotationsInteractiveMode));
            if (annotationsModes != null && annotationsModes.Count() > 0)
            {
                annotationsMode = annotationsModes.ElementAt(0) as AnnotationsInteractiveMode;
            }

            imageViewer.BeginUpdate();
            imageViewer.InteractiveModes.Clear();
            imageViewer.InteractiveModes.Add(annotationsMode);
            imageViewer.InteractiveModes.Add(panZoomMode);
            imageViewer.InteractiveModes.Add(selectTextMode);
            imageViewer.EndUpdate();

            // Helps with debugging of there was a rendering error
            imageViewer.RenderError += (sender, e) =>
            {
                var message = string.Format("Error while rendering item {0} part {1}: {2}",
                                            e.Item != null ? imageViewer.Items.IndexOf(e.Item) : -1,
                                            e.Part,
                                            e.Error.Message);
                System.Diagnostics.Debug.WriteLine(message);
            };

            InitAutomation();

            _documentViewer.Text.AutoGetText = true;
            //_documentViewer.Commands.Run(DocumentViewerCommands.InteractiveAutoPan);

            _documentViewer.View.ImageViewer.ScrollOffsetChanged -= ImageViewer_ScrollOffsetChanged;
            if (scanType == DocumentScanType.Document)
            {
                _documentViewer.View.ImageViewer.ScrollOffsetChanged += ImageViewer_ScrollOffsetChanged;
            }

            // If the scan type is Document enable the pan/zoom interactive mode by default otherwise (Text scan type) enable select text interactive mode by default.
            if (scanType == DocumentScanType.Document)
            {
                _documentViewer.Commands.Run(DocumentViewerCommands.InteractivePanZoom);
                _activeInteractiveMode = DocumentViewerCommands.InteractivePanZoom;
            }
            else
            {
                _activeInteractiveMode = DocumentViewerCommands.InteractiveSelectText;
            }

            UpdateUIState();

            // Enable inertia scroll
            ToggleInertiaScroll(false);
        }