From 6d0a2e3a45689ac0796cf2517dd64ab6c05d0552 Mon Sep 17 00:00:00 2001 From: Jonathan Jenne Date: Wed, 1 Jun 2022 16:33:12 +0200 Subject: [PATCH] DocumentViever: Add Support for Annotations --- .../DocumentViewer.Designer.vb | 15 +-- Controls.DocumentViewer/DocumentViewer.resx | 28 ++-- Controls.DocumentViewer/DocumentViewer.vb | 120 ++++++++++++------ 3 files changed, 100 insertions(+), 63 deletions(-) diff --git a/Controls.DocumentViewer/DocumentViewer.Designer.vb b/Controls.DocumentViewer/DocumentViewer.Designer.vb index 9e3aebd2..356666fb 100644 --- a/Controls.DocumentViewer/DocumentViewer.Designer.vb +++ b/Controls.DocumentViewer/DocumentViewer.Designer.vb @@ -129,7 +129,7 @@ Partial Class DocumentViewer Me.GdViewer.ScrollLargeChange = CType(50, Short) Me.GdViewer.ScrollSmallChange = CType(1, Short) Me.GdViewer.SilentMode = True - Me.GdViewer.Size = New System.Drawing.Size(1015, 557) + Me.GdViewer.Size = New System.Drawing.Size(1079, 557) Me.GdViewer.TabIndex = 0 Me.GdViewer.ViewRotation = System.Drawing.RotateFlipType.RotateNoneFlipNone Me.GdViewer.Zoom = 1.0R @@ -151,7 +151,6 @@ Partial Class DocumentViewer Me.RichEditControl1.ReadOnly = True Me.RichEditControl1.Size = New System.Drawing.Size(249, 161) Me.RichEditControl1.TabIndex = 8 - Me.RichEditControl1.Text = "RichEditControl1" Me.RichEditControl1.Visible = False ' 'BarManager1 @@ -164,7 +163,7 @@ Partial Class DocumentViewer Me.BarManager1.Form = Me Me.BarManager1.Items.AddRange(New DevExpress.XtraBars.BarItem() {Me.buttonPrint, Me.buttonFitPage, Me.buttonFitWidth, Me.buttonZoomIn, Me.buttonZoomOut, Me.buttonRotateRight, Me.buttonRotateLeft, Me.buttonFlipX, Me.buttonFlipY, Me.buttonSettings, Me.buttonPrevPage, Me.buttonNextPage, Me.buttonFirstPage, Me.buttonLastPage, Me.txtCurrentPage, Me.BarStaticItem1, Me.labelPageCount}) Me.BarManager1.MainMenu = Me.ToolbarDocumentViewer - Me.BarManager1.MaxItemId = 25 + Me.BarManager1.MaxItemId = 26 Me.BarManager1.RepositoryItems.AddRange(New DevExpress.XtraEditors.Repository.RepositoryItem() {Me.RepositoryItemTextEdit1, Me.RepositoryItemTextEdit2, Me.RepositoryItemColorEdit1, Me.RepositoryItemComboBox1}) ' 'ToolbarDocumentViewer @@ -318,7 +317,7 @@ Partial Class DocumentViewer Me.barDockControlTop.Dock = System.Windows.Forms.DockStyle.Top Me.barDockControlTop.Location = New System.Drawing.Point(0, 0) Me.barDockControlTop.Manager = Me.BarManager1 - Me.barDockControlTop.Size = New System.Drawing.Size(1015, 33) + Me.barDockControlTop.Size = New System.Drawing.Size(1079, 33) ' 'barDockControlBottom ' @@ -326,7 +325,7 @@ Partial Class DocumentViewer Me.barDockControlBottom.Dock = System.Windows.Forms.DockStyle.Bottom Me.barDockControlBottom.Location = New System.Drawing.Point(0, 590) Me.barDockControlBottom.Manager = Me.BarManager1 - Me.barDockControlBottom.Size = New System.Drawing.Size(1015, 0) + Me.barDockControlBottom.Size = New System.Drawing.Size(1079, 0) ' 'barDockControlLeft ' @@ -340,7 +339,7 @@ Partial Class DocumentViewer ' Me.barDockControlRight.CausesValidation = False Me.barDockControlRight.Dock = System.Windows.Forms.DockStyle.Right - Me.barDockControlRight.Location = New System.Drawing.Point(1015, 33) + Me.barDockControlRight.Location = New System.Drawing.Point(1079, 33) Me.barDockControlRight.Manager = Me.BarManager1 Me.barDockControlRight.Size = New System.Drawing.Size(0, 557) ' @@ -386,15 +385,15 @@ Partial Class DocumentViewer ' Me.AutoScaleDimensions = New System.Drawing.SizeF(6.0!, 13.0!) Me.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font - Me.Controls.Add(Me.SpreadsheetControl1) Me.Controls.Add(Me.RichEditControl1) + Me.Controls.Add(Me.SpreadsheetControl1) Me.Controls.Add(Me.GdViewer) Me.Controls.Add(Me.barDockControlLeft) Me.Controls.Add(Me.barDockControlRight) Me.Controls.Add(Me.barDockControlBottom) Me.Controls.Add(Me.barDockControlTop) Me.Name = "DocumentViewer" - Me.Size = New System.Drawing.Size(1015, 590) + Me.Size = New System.Drawing.Size(1079, 590) CType(Me.BarManager1, System.ComponentModel.ISupportInitialize).EndInit() CType(Me.RepositoryItemTextEdit2, System.ComponentModel.ISupportInitialize).EndInit() CType(Me.RepositoryItemTextEdit1, System.ComponentModel.ISupportInitialize).EndInit() diff --git a/Controls.DocumentViewer/DocumentViewer.resx b/Controls.DocumentViewer/DocumentViewer.resx index dc74ec2b..75a0f04e 100644 --- a/Controls.DocumentViewer/DocumentViewer.resx +++ b/Controls.DocumentViewer/DocumentViewer.resx @@ -126,7 +126,7 @@ - AAEAAAD/////AQAAAAAAAAAMAgAAAFlEZXZFeHByZXNzLkRhdGEudjE5LjIsIFZlcnNpb249MTkuMi4z + AAEAAAD/////AQAAAAAAAAAMAgAAAFlEZXZFeHByZXNzLkRhdGEudjIxLjIsIFZlcnNpb249MjEuMi40 LjAsIEN1bHR1cmU9bmV1dHJhbCwgUHVibGljS2V5VG9rZW49Yjg4ZDE3NTRkNzAwZTQ5YQUBAAAAHURl dkV4cHJlc3MuVXRpbHMuU3ZnLlN2Z0ltYWdlAQAAAAREYXRhBwICAAAACQMAAAAPAwAAAOcCAAAC77u/ PD94bWwgdmVyc2lvbj0nMS4wJyBlbmNvZGluZz0nVVRGLTgnPz4NCjxzdmcgeD0iMHB4IiB5PSIwcHgi @@ -146,7 +146,7 @@ - AAEAAAD/////AQAAAAAAAAAMAgAAAFlEZXZFeHByZXNzLkRhdGEudjE5LjIsIFZlcnNpb249MTkuMi4z + AAEAAAD/////AQAAAAAAAAAMAgAAAFlEZXZFeHByZXNzLkRhdGEudjIxLjIsIFZlcnNpb249MjEuMi40 LjAsIEN1bHR1cmU9bmV1dHJhbCwgUHVibGljS2V5VG9rZW49Yjg4ZDE3NTRkNzAwZTQ5YQUBAAAAHURl dkV4cHJlc3MuVXRpbHMuU3ZnLlN2Z0ltYWdlAQAAAAREYXRhBwICAAAACQMAAAAPAwAAANcCAAAC77u/ PD94bWwgdmVyc2lvbj0nMS4wJyBlbmNvZGluZz0nVVRGLTgnPz4NCjxzdmcgdmlld0JveD0iMCAwIDIw @@ -166,7 +166,7 @@ - AAEAAAD/////AQAAAAAAAAAMAgAAAFlEZXZFeHByZXNzLkRhdGEudjE5LjIsIFZlcnNpb249MTkuMi4z + AAEAAAD/////AQAAAAAAAAAMAgAAAFlEZXZFeHByZXNzLkRhdGEudjIxLjIsIFZlcnNpb249MjEuMi40 LjAsIEN1bHR1cmU9bmV1dHJhbCwgUHVibGljS2V5VG9rZW49Yjg4ZDE3NTRkNzAwZTQ5YQUBAAAAHURl dkV4cHJlc3MuVXRpbHMuU3ZnLlN2Z0ltYWdlAQAAAAREYXRhBwICAAAACQMAAAAPAwAAAJcCAAAC77u/ PD94bWwgdmVyc2lvbj0nMS4wJyBlbmNvZGluZz0nVVRGLTgnPz4NCjxzdmcgdmlld0JveD0iMCAwIDIw @@ -185,7 +185,7 @@ - AAEAAAD/////AQAAAAAAAAAMAgAAAFlEZXZFeHByZXNzLkRhdGEudjE5LjIsIFZlcnNpb249MTkuMi4z + AAEAAAD/////AQAAAAAAAAAMAgAAAFlEZXZFeHByZXNzLkRhdGEudjIxLjIsIFZlcnNpb249MjEuMi40 LjAsIEN1bHR1cmU9bmV1dHJhbCwgUHVibGljS2V5VG9rZW49Yjg4ZDE3NTRkNzAwZTQ5YQUBAAAAHURl dkV4cHJlc3MuVXRpbHMuU3ZnLlN2Z0ltYWdlAQAAAAREYXRhBwICAAAACQMAAAAPAwAAAPMCAAAC77u/ PD94bWwgdmVyc2lvbj0nMS4wJyBlbmNvZGluZz0nVVRGLTgnPz4NCjxzdmcgeD0iMHB4IiB5PSIwcHgi @@ -205,7 +205,7 @@ - AAEAAAD/////AQAAAAAAAAAMAgAAAFlEZXZFeHByZXNzLkRhdGEudjE5LjIsIFZlcnNpb249MTkuMi4z + AAEAAAD/////AQAAAAAAAAAMAgAAAFlEZXZFeHByZXNzLkRhdGEudjIxLjIsIFZlcnNpb249MjEuMi40 LjAsIEN1bHR1cmU9bmV1dHJhbCwgUHVibGljS2V5VG9rZW49Yjg4ZDE3NTRkNzAwZTQ5YQUBAAAAHURl dkV4cHJlc3MuVXRpbHMuU3ZnLlN2Z0ltYWdlAQAAAAREYXRhBwICAAAACQMAAAAPAwAAAM8CAAAC77u/ PD94bWwgdmVyc2lvbj0nMS4wJyBlbmNvZGluZz0nVVRGLTgnPz4NCjxzdmcgeD0iMHB4IiB5PSIwcHgi @@ -224,7 +224,7 @@ - AAEAAAD/////AQAAAAAAAAAMAgAAAFlEZXZFeHByZXNzLkRhdGEudjE5LjIsIFZlcnNpb249MTkuMi4z + AAEAAAD/////AQAAAAAAAAAMAgAAAFlEZXZFeHByZXNzLkRhdGEudjIxLjIsIFZlcnNpb249MjEuMi40 LjAsIEN1bHR1cmU9bmV1dHJhbCwgUHVibGljS2V5VG9rZW49Yjg4ZDE3NTRkNzAwZTQ5YQUBAAAAHURl dkV4cHJlc3MuVXRpbHMuU3ZnLlN2Z0ltYWdlAQAAAAREYXRhBwICAAAACQMAAAAPAwAAAHIBAAAC77u/ PD94bWwgdmVyc2lvbj0nMS4wJyBlbmNvZGluZz0nVVRGLTgnPz4NCjxzdmcgdmlld0JveD0iMCAwIDIw @@ -238,7 +238,7 @@ - AAEAAAD/////AQAAAAAAAAAMAgAAAFlEZXZFeHByZXNzLkRhdGEudjE5LjIsIFZlcnNpb249MTkuMi4z + AAEAAAD/////AQAAAAAAAAAMAgAAAFlEZXZFeHByZXNzLkRhdGEudjIxLjIsIFZlcnNpb249MjEuMi40 LjAsIEN1bHR1cmU9bmV1dHJhbCwgUHVibGljS2V5VG9rZW49Yjg4ZDE3NTRkNzAwZTQ5YQUBAAAAHURl dkV4cHJlc3MuVXRpbHMuU3ZnLlN2Z0ltYWdlAQAAAAREYXRhBwICAAAACQMAAAAPAwAAAHMBAAAC77u/ PD94bWwgdmVyc2lvbj0nMS4wJyBlbmNvZGluZz0nVVRGLTgnPz4NCjxzdmcgdmlld0JveD0iMCAwIDIw @@ -252,7 +252,7 @@ - AAEAAAD/////AQAAAAAAAAAMAgAAAFlEZXZFeHByZXNzLkRhdGEudjE5LjIsIFZlcnNpb249MTkuMi4z + AAEAAAD/////AQAAAAAAAAAMAgAAAFlEZXZFeHByZXNzLkRhdGEudjIxLjIsIFZlcnNpb249MjEuMi40 LjAsIEN1bHR1cmU9bmV1dHJhbCwgUHVibGljS2V5VG9rZW49Yjg4ZDE3NTRkNzAwZTQ5YQUBAAAAHURl dkV4cHJlc3MuVXRpbHMuU3ZnLlN2Z0ltYWdlAQAAAAREYXRhBwICAAAACQMAAAAPAwAAAIIBAAAC77u/ PD94bWwgdmVyc2lvbj0nMS4wJyBlbmNvZGluZz0nVVRGLTgnPz4NCjxzdmcgdmlld0JveD0iMCAwIDIw @@ -266,7 +266,7 @@ - AAEAAAD/////AQAAAAAAAAAMAgAAAFlEZXZFeHByZXNzLkRhdGEudjE5LjIsIFZlcnNpb249MTkuMi4z + AAEAAAD/////AQAAAAAAAAAMAgAAAFlEZXZFeHByZXNzLkRhdGEudjIxLjIsIFZlcnNpb249MjEuMi40 LjAsIEN1bHR1cmU9bmV1dHJhbCwgUHVibGljS2V5VG9rZW49Yjg4ZDE3NTRkNzAwZTQ5YQUBAAAAHURl dkV4cHJlc3MuVXRpbHMuU3ZnLlN2Z0ltYWdlAQAAAAREYXRhBwICAAAACQMAAAAPAwAAAIABAAAC77u/ PD94bWwgdmVyc2lvbj0nMS4wJyBlbmNvZGluZz0nVVRGLTgnPz4NCjxzdmcgdmlld0JveD0iMCAwIDIw @@ -280,7 +280,7 @@ - AAEAAAD/////AQAAAAAAAAAMAgAAAFlEZXZFeHByZXNzLkRhdGEudjE5LjIsIFZlcnNpb249MTkuMi4z + AAEAAAD/////AQAAAAAAAAAMAgAAAFlEZXZFeHByZXNzLkRhdGEudjIxLjIsIFZlcnNpb249MjEuMi40 LjAsIEN1bHR1cmU9bmV1dHJhbCwgUHVibGljS2V5VG9rZW49Yjg4ZDE3NTRkNzAwZTQ5YQUBAAAAHURl dkV4cHJlc3MuVXRpbHMuU3ZnLlN2Z0ltYWdlAQAAAAREYXRhBwICAAAACQMAAAAPAwAAANUBAAAC77u/ PD94bWwgdmVyc2lvbj0nMS4wJyBlbmNvZGluZz0nVVRGLTgnPz4NCjxzdmcgdmlld0JveD0iMCAwIDIw @@ -295,7 +295,7 @@ - AAEAAAD/////AQAAAAAAAAAMAgAAAFlEZXZFeHByZXNzLkRhdGEudjE5LjIsIFZlcnNpb249MTkuMi4z + AAEAAAD/////AQAAAAAAAAAMAgAAAFlEZXZFeHByZXNzLkRhdGEudjIxLjIsIFZlcnNpb249MjEuMi40 LjAsIEN1bHR1cmU9bmV1dHJhbCwgUHVibGljS2V5VG9rZW49Yjg4ZDE3NTRkNzAwZTQ5YQUBAAAAHURl dkV4cHJlc3MuVXRpbHMuU3ZnLlN2Z0ltYWdlAQAAAAREYXRhBwICAAAACQMAAAAPAwAAAP8AAAAC77u/ PD94bWwgdmVyc2lvbj0nMS4wJyBlbmNvZGluZz0nVVRGLTgnPz4NCjxzdmcgdmlld0JveD0iMCAwIDIw @@ -307,7 +307,7 @@ - AAEAAAD/////AQAAAAAAAAAMAgAAAFlEZXZFeHByZXNzLkRhdGEudjE5LjIsIFZlcnNpb249MTkuMi4z + AAEAAAD/////AQAAAAAAAAAMAgAAAFlEZXZFeHByZXNzLkRhdGEudjIxLjIsIFZlcnNpb249MjEuMi40 LjAsIEN1bHR1cmU9bmV1dHJhbCwgUHVibGljS2V5VG9rZW49Yjg4ZDE3NTRkNzAwZTQ5YQUBAAAAHURl dkV4cHJlc3MuVXRpbHMuU3ZnLlN2Z0ltYWdlAQAAAAREYXRhBwICAAAACQMAAAAPAwAAAP0AAAAC77u/ PD94bWwgdmVyc2lvbj0nMS4wJyBlbmNvZGluZz0nVVRGLTgnPz4NCjxzdmcgdmlld0JveD0iMCAwIDIw @@ -319,7 +319,7 @@ - AAEAAAD/////AQAAAAAAAAAMAgAAAFlEZXZFeHByZXNzLkRhdGEudjE5LjIsIFZlcnNpb249MTkuMi4z + AAEAAAD/////AQAAAAAAAAAMAgAAAFlEZXZFeHByZXNzLkRhdGEudjIxLjIsIFZlcnNpb249MjEuMi40 LjAsIEN1bHR1cmU9bmV1dHJhbCwgUHVibGljS2V5VG9rZW49Yjg4ZDE3NTRkNzAwZTQ5YQUBAAAAHURl dkV4cHJlc3MuVXRpbHMuU3ZnLlN2Z0ltYWdlAQAAAAREYXRhBwICAAAACQMAAAAPAwAAAM4BAAAC77u/ PD94bWwgdmVyc2lvbj0nMS4wJyBlbmNvZGluZz0nVVRGLTgnPz4NCjxzdmcgdmlld0JveD0iMCAwIDIw @@ -334,7 +334,7 @@ - AAEAAAD/////AQAAAAAAAAAMAgAAAFlEZXZFeHByZXNzLkRhdGEudjE5LjIsIFZlcnNpb249MTkuMi4z + AAEAAAD/////AQAAAAAAAAAMAgAAAFlEZXZFeHByZXNzLkRhdGEudjIxLjIsIFZlcnNpb249MjEuMi40 LjAsIEN1bHR1cmU9bmV1dHJhbCwgUHVibGljS2V5VG9rZW49Yjg4ZDE3NTRkNzAwZTQ5YQUBAAAAHURl dkV4cHJlc3MuVXRpbHMuU3ZnLlN2Z0ltYWdlAQAAAAREYXRhBwICAAAACQMAAAAPAwAAAGQEAAAC77u/ PD94bWwgdmVyc2lvbj0nMS4wJyBlbmNvZGluZz0nVVRGLTgnPz4NCjxzdmcgdmlld0JveD0iMCAwIDIw diff --git a/Controls.DocumentViewer/DocumentViewer.vb b/Controls.DocumentViewer/DocumentViewer.vb index 9a9350ff..a8bb89b6 100644 --- a/Controls.DocumentViewer/DocumentViewer.vb +++ b/Controls.DocumentViewer/DocumentViewer.vb @@ -1,11 +1,7 @@ Imports System.IO -Imports System.ComponentModel -Imports System.Globalization -Imports System.Text.RegularExpressions Imports DevExpress Imports DevExpress.Spreadsheet Imports DevExpress.XtraRichEdit.Commands -Imports DevExpress.XtraRichEdit Imports DevExpress.Office.Utils Imports GdPicture14 Imports DigitalData.Modules.Logging @@ -30,6 +26,11 @@ Public Class DocumentViewer Excel End Enum + Private Enum FileLoadMode + File + Stream + End Enum + Private _ViewerMode As ViewerMode Private _currentSearchOccurence As Integer = 0 Private _toggleGamma As Boolean = True @@ -40,10 +41,14 @@ Public Class DocumentViewer Private _email As Email2 Private _Config As ConfigManager(Of Config) Private _Annotations As Annotations + Private _AnnotationsPending As Boolean = False Private _hide_file_info_from_user As Boolean = False + + Private _FileStream As Stream Private _FilePath As String Private _Fileinfo As FileInfo + Private _FileLoadMode As FileLoadMode = FileLoadMode.File ' List of all created temp files when converting msg files Private _TempFiles As New List(Of String) @@ -54,6 +59,11 @@ Public Class DocumentViewer Public Property FileLoaded As Boolean = False + Public ReadOnly Property AnnotationsSaved As Boolean + Get + Return Not _AnnotationsPending + End Get + End Property ''' ''' Initialize the Viewer @@ -72,31 +82,9 @@ Public Class DocumentViewer _Config = New ConfigManager(Of Config)(pLogConfig, oConfigPath) End Sub - - ''' - ''' Terminate Viewer, freeing up resources and deleting temp files + ''' Load a file from a path and display it ''' - Public Sub Done() - Try - _logger.Debug("Done: Deleting Temp Files") - DeleteTempFiles() - - _logger.Debug("Done: Closing Documents") - FreeFile() - - _logger.Debug("Done: Triggering GC") - GC.Collect() - Catch ex As Exception - _logger.Warn("Error while cleaning up DocumentViewer") - _logger.Error(ex) - End Try - End Sub - - ''' - ''' Load a file and display it - ''' - ''' Public Sub LoadFile(FilePath As String) FileLoaded = False @@ -110,16 +98,20 @@ Public Class DocumentViewer Exit Sub End If - _logger.Info("Loading File {0}", FilePath) - - FileLoaded = DoLoadFile(FilePath) _FilePath = FilePath + _FileLoadMode = FileLoadMode.File _Fileinfo = New FileInfo(FilePath) + _logger.Info("Loading File [{0}] from Filesystem", FilePath) + FileLoaded = DoLoadFile(FilePath) + SetViewerMode(_Fileinfo.Extension) UpdateMainUi() End Sub + ''' + ''' Load a file from a stream and display it + ''' Public Sub LoadFile(FileName As String, Stream As Stream) FileLoaded = False @@ -130,26 +122,71 @@ Public Class DocumentViewer Dim oExtension As String = FileName.Substring(FileName.LastIndexOf(".")) - _logger.Info("Loading File [{0}]", FileName) + _FileStream = Stream + _FileLoadMode = FileLoadMode.Stream + _logger.Info("Loading file [{0}] from Stream", FileName) FileLoaded = DoLoadFile(Stream, oExtension) SetViewerMode(oExtension) UpdateMainUi() End Sub + ''' + ''' Terminate Viewer, freeing up resources and deleting temp files + ''' + Public Sub Done() + Try + _logger.Debug("Done: Deleting Temp Files") + DeleteTempFiles() + + _logger.Debug("Done: Closing Documents") + FreeFile() + + _logger.Debug("Done: Triggering GC") + GC.Collect() + Catch ex As Exception + _logger.Warn("Error while cleaning up DocumentViewer") + _logger.Error(ex) + End Try + End Sub + Public Function AddAnnotation(pText As String) As Boolean - Dim oFontStyle = System.Drawing.FontStyle.Bold Or System.Drawing.FontStyle.Underline - GdViewer.AddTextAnnotationInteractive(pText, Color.Black, "Arial", oFontStyle, 12, True, Color.Red, Color.White, 1, 0) + Dim oFontStyle = FontStyle.Regular + Dim oFontColor = Color.Black + Dim oFontFamily = "Arial" + Dim oFontSize = 8 + Dim oBorderColor = Color.Red + Dim oBackColor = Color.LightYellow + Dim oOpacity = 1.0F + Dim oRotation = 0.0F + + GdViewer.AddTextAnnotationInteractive(pText, oFontColor, oFontFamily, oFontStyle, oFontSize, Fill:=True, oBorderColor, oBackColor, oOpacity, oRotation) + _AnnotationsPending = True Return True End Function - Public Sub Save() - If GdViewer.SaveDocumentToPDF(_FilePath) = GdPictureStatus.OK Then - _logger.Debug("PDF Successfully saved") + + + Public Function Save() As Boolean + Dim oSaveResult As GdPictureStatus = GdPictureStatus.OK + + If GdViewer.BurnAnnotationsToPage(True, False) = GdPictureStatus.OK Then + If _FileLoadMode = FileLoadMode.Stream Then + oSaveResult = GdViewer.SaveDocumentToPDF(_FileStream) + Else + oSaveResult = GdViewer.SaveDocumentToPDF(_FilePath) + End If End If - End Sub + + If oSaveResult = GdPictureStatus.OK Then + _AnnotationsPending = False + Return True + Else + Return False + End If + End Function Public Sub CloseDocument() Try @@ -455,12 +492,13 @@ Public Class DocumentViewer SpreadsheetControl1.Dock = DockStyle.Fill Case Else - 'ToolbarDocumentViewer.Visible = True - GdViewer.ZoomMode = ViewerZoomMode.ZoomModeWidthViewer GdViewer.DocumentAlignment = ViewerDocumentAlignment.DocumentAlignmentTopCenter + GdViewer.ForceTemporaryMode = True + GdViewer.AnnotationDropShadow = True GdViewer.DisplayFromFile(FilePath) + End Select UpdateMainUi() @@ -528,13 +566,13 @@ Public Class DocumentViewer SpreadsheetControl1.Dock = DockStyle.Fill Case Else - 'ToolbarDocumentViewer.Visible = True - GdViewer.ZoomMode = ViewerZoomMode.ZoomModeWidthViewer GdViewer.DocumentAlignment = ViewerDocumentAlignment.DocumentAlignmentTopCenter GdViewer.ForceTemporaryMode = True + GdViewer.AnnotationDropShadow = True GdViewer.DisplayFromStream(Stream) + End Select UpdateMainUi()