Compare commits

...

4 Commits

Author SHA1 Message Date
Developer01
ef94ea93f2 Merge branch 'master' of http://git.dd:3000/AppStd/Monorepo 2025-09-16 15:46:14 +02:00
Developer01
8a61aa208d DocumentViewer handling inconsistent docxfiles 2025-09-16 15:46:03 +02:00
Developer01
3e2287c6b5 Vor Anpassung ViewerMode von Rahman 2025-09-16 14:28:38 +02:00
Developer01
59aed06099 Handling Tempfiles und References 2025-09-16 14:22:08 +02:00
6 changed files with 88 additions and 57 deletions

View File

@ -23,7 +23,7 @@
</dependentAssembly> </dependentAssembly>
<dependentAssembly> <dependentAssembly>
<assemblyIdentity name="System.Collections.Immutable" publicKeyToken="b03f5f7f11d50a3a" culture="neutral" /> <assemblyIdentity name="System.Collections.Immutable" publicKeyToken="b03f5f7f11d50a3a" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-8.0.0.0" newVersion="8.0.0.0" /> <bindingRedirect oldVersion="0.0.0.0-9.0.0.0" newVersion="9.0.0.0" />
</dependentAssembly> </dependentAssembly>
<dependentAssembly> <dependentAssembly>
<assemblyIdentity name="System.Numerics.Vectors" publicKeyToken="b03f5f7f11d50a3a" culture="neutral" /> <assemblyIdentity name="System.Numerics.Vectors" publicKeyToken="b03f5f7f11d50a3a" culture="neutral" />

View File

@ -55,10 +55,12 @@ Public Class DocumentViewer
Private _hide_file_info_from_user As Boolean = False Private _hide_file_info_from_user As Boolean = False
Private _FileStream As Stream Private _FileStream As Stream
Private _FilePath As String Private _FilePath As String
Private _FileInfo As FileInfo Private _FileInfo As FileInfo
Private _FileLoadMode As FileLoadMode = FileLoadMode.File Private _FileLoadMode As FileLoadMode = FileLoadMode.File
Private _ViewOverride As String = ""
' List of all created temp files when converting msg files ' List of all created temp files when converting msg files
Private _TempFiles As New List(Of String) Private _TempFiles As New List(Of String)
@ -79,6 +81,7 @@ Public Class DocumentViewer
End Class End Class
Public Property FileLoaded As Boolean = False Public Property FileLoaded As Boolean = False
Public Property Viewer_ForceTemporaryMode As Boolean = False
Public ReadOnly Property AnnotationsSaved As Boolean Public ReadOnly Property AnnotationsSaved As Boolean
Get Get
Return Not _AnnotationsPending Return Not _AnnotationsPending
@ -139,9 +142,8 @@ Public Class DocumentViewer
_FileInfo = New FileInfo(FilePath) _FileInfo = New FileInfo(FilePath)
_logger.Info("Loading file [{0}] from Filesystem", FilePath) _logger.Info("Loading file [{0}] from Filesystem", FilePath)
FileLoaded = DoLoadFile(FilePath)
SetViewerMode(_FileInfo.Extension) SetViewerMode(_FileInfo.Extension)
FileLoaded = DoLoadFile(FilePath)
UpdateMainUi() UpdateMainUi()
End Sub End Sub
@ -302,12 +304,10 @@ Public Class DocumentViewer
End Sub End Sub
Private Sub btnPreviousPage_Click(ByVal sender As System.Object, ByVal e As EventArgs) Handles buttonPrevPage.ItemClick Private Sub btnPreviousPage_Click(ByVal sender As System.Object, ByVal e As EventArgs) Handles buttonPrevPage.ItemClick
_ViewerMode = ViewerMode.GDPicture
GdViewer.DisplayPreviousPage() GdViewer.DisplayPreviousPage()
End Sub End Sub
Private Sub btnNextPage_Click(ByVal sender As System.Object, ByVal e As EventArgs) Handles buttonNextPage.ItemClick Private Sub btnNextPage_Click(ByVal sender As System.Object, ByVal e As EventArgs) Handles buttonNextPage.ItemClick
_ViewerMode = ViewerMode.GDPicture
GdViewer.DisplayNextPage() GdViewer.DisplayNextPage()
End Sub End Sub
@ -337,12 +337,10 @@ Public Class DocumentViewer
End Sub End Sub
Private Sub btnZoomOut_Click(sender As Object, e As EventArgs) Handles buttonZoomOut.ItemClick Private Sub btnZoomOut_Click(sender As Object, e As EventArgs) Handles buttonZoomOut.ItemClick
_ViewerMode = ViewerMode.GDPicture
GdViewer.ZoomOUT() GdViewer.ZoomOUT()
End Sub End Sub
Private Sub btnZoomIn_Click(sender As Object, e As EventArgs) Handles buttonZoomIn.ItemClick Private Sub btnZoomIn_Click(sender As Object, e As EventArgs) Handles buttonZoomIn.ItemClick
_ViewerMode = ViewerMode.GDPicture
GdViewer.ZoomIN() GdViewer.ZoomIN()
End Sub End Sub
@ -437,14 +435,18 @@ Public Class DocumentViewer
End Sub End Sub
Private Sub SetViewerMode(Extension As String) Private Sub SetViewerMode(Extension As String)
Select Case Extension.ToUpper If _ViewOverride = "Richtext" Then
Case "CSV" _ViewerMode = ViewerMode.Richtext
_ViewerMode = ViewerMode.Excel Else
Case ".EML", ".DOC", ".DOCX", ".ODT", ".RTF", ".TXT" Select Case Extension.ToUpper
_ViewerMode = ViewerMode.RichText Case "CSV"
Case Else _ViewerMode = ViewerMode.Excel
_ViewerMode = ViewerMode.GDPicture 'Case ".EML", ".DOC", ".DOCX", ".ODT", ".RTF", ".TXT"
End Select ' _ViewerMode = ViewerMode.RichText
Case Else
_ViewerMode = ViewerMode.GDPicture
End Select
End If
End Sub End Sub
Private Sub FreeFile() Private Sub FreeFile()
Try Try
@ -464,7 +466,7 @@ Public Class DocumentViewer
_logger.Warn($"Unexpected error in FreeFile: {ex.Message}") _logger.Warn($"Unexpected error in FreeFile: {ex.Message}")
End Try End Try
End Sub End Sub
Private Function DoLoadFile(FilePath As String) As Boolean Private Function DoLoadFile(FilePath As String, Optional ViewOverride As String = "") As Boolean
Try Try
Dim oFileInfo = New FileInfo(FilePath) Dim oFileInfo = New FileInfo(FilePath)
Dim oExtension As String = oFileInfo.Extension.ToUpper Dim oExtension As String = oFileInfo.Extension.ToUpper
@ -477,44 +479,73 @@ Public Class DocumentViewer
SpreadsheetControl1.Dock = DockStyle.None SpreadsheetControl1.Dock = DockStyle.None
RichEditControl1.Dock = DockStyle.None RichEditControl1.Dock = DockStyle.None
Select Case oExtension.ToUpper If ViewOverride = "Richtext" Then
Case ".CSV" RichEditControl1.LoadDocument(FilePath, GetDocumentFormat(oExtension))
Dim oFormat = GetSpreadsheetFormat(oExtension) RichEditControl1.Visible = True
SpreadsheetControl1.LoadDocument(FilePath, oFormat) GdViewer.Visible = False
RichEditControl1.Dock = DockStyle.Fill
_ViewOverride = "Richtext"
_ViewerMode = ViewerMode.Richtext
MsgBox("This docx-file contains a generic error and will be displayed in a reduced viewer." & vbNewLine &
"Please try to open the file in WORD", MsgBoxStyle.Exclamation, "Error opening docx-file")
Else
_ViewOverride = ""
Select Case oExtension.ToUpper
Case ".CSV"
Dim oFormat = GetSpreadsheetFormat(oExtension)
SpreadsheetControl1.LoadDocument(FilePath, oFormat)
Dim oRange = SpreadsheetControl1.ActiveWorksheet.GetUsedRange() Dim oRange = SpreadsheetControl1.ActiveWorksheet.GetUsedRange()
oRange.AutoFitColumns() oRange.AutoFitColumns()
SpreadsheetControl1.Visible = True SpreadsheetControl1.Visible = True
GdViewer.Visible = False GdViewer.Visible = False
SpreadsheetControl1.Dock = DockStyle.Fill SpreadsheetControl1.Dock = DockStyle.Fill
Case ".EML", ".DOC", ".DOCX", ".ODT", ".RTF", ".TXT"
RichEditControl1.LoadDocument(FilePath, GetDocumentFormat(oExtension))
RichEditControl1.Visible = True 'Case ".EML", ".DOC", ".DOCX", ".ODT", ".RTF", ".TXT"
GdViewer.Visible = False ' RichEditControl1.LoadDocument(FilePath, GetDocumentFormat(oExtension))
RichEditControl1.Dock = DockStyle.Fill
Case Else
GdViewer.ZoomMode = ViewerZoomMode.ZoomModeWidthViewer
GdViewer.DocumentAlignment = ViewerDocumentAlignment.DocumentAlignmentTopCenter
GdViewer.ForceTemporaryMode = True
GdViewer.AnnotationDropShadow = True
GdViewer.BackColor = Color.White
If GdViewer.DisplayFromFile(FilePath) <> GdPictureStatus.OK Then ' RichEditControl1.Visible = True
' GdViewer.Visible = False
' RichEditControl1.Dock = DockStyle.Fill
Case Else
Select Case oExtension.ToUpper
Case ".EML", ".DOC", ".DOCX", ".XLS", ".XLSX", ".ODT", ".RTF", ".TXT"
GdViewer.ForceTemporaryMode = False
End Select
Dim oFileName = IO.Path.GetFileName(FilePath) GdViewer.ZoomMode = ViewerZoomMode.ZoomModeWidthViewer
lbFileNotLoaded.Text = String.Format("Datei konnte nicht geladen werden:{0}{1}", vbCrLf, oFileName) GdViewer.DocumentAlignment = ViewerDocumentAlignment.DocumentAlignmentTopCenter
lbFileNotLoaded.Visible = True If Viewer_ForceTemporaryMode = True Then
Else GdViewer.ForceTemporaryMode = True
If GdViewer.Visible = False Then
GdViewer.Visible = True
End If End If
End If
End Select GdViewer.AnnotationDropShadow = True
GdViewer.BackColor = Color.White
Dim oGDPState As GdPicture14.GdPictureStatus = GdViewer.DisplayFromFile(FilePath)
If oGDPState <> GdPictureStatus.OK Then
_logger.Warn($"GdPictureStatus is [{oGDPState}]")
If oExtension.ToUpper = ".DOCX" And oGDPState = GdPictureStatus.GenericError Then
DoLoadFile(FilePath, "Richtext")
Else
Dim oFileName = IO.Path.GetFileName(FilePath)
lbFileNotLoaded.Text = String.Format("Datei konnte nicht geladen werden:{0}{1}", vbCrLf, oFileName)
lbFileNotLoaded.Visible = True
End If
Else
If GdViewer.Visible = False Then
GdViewer.Visible = True
End If
End If
End Select
End If
If _ViewOverride = "Richtext" Then
_ViewerMode = ViewerMode.Richtext
End If
UpdateMainUi()
Return True Return True
Catch ex As Exception Catch ex As Exception
@ -524,12 +555,10 @@ Public Class DocumentViewer
End Function End Function
Private Sub FitToPage() Private Sub FitToPage()
_ViewerMode = ViewerMode.GDPicture
GdViewer.ZoomMode = ViewerZoomMode.ZoomModeFitToViewer GdViewer.ZoomMode = ViewerZoomMode.ZoomModeFitToViewer
End Sub End Sub
Private Sub FitToWidth() Private Sub FitToWidth()
_ViewerMode = ViewerMode.GDPicture
GdViewer.ZoomMode = ViewerZoomMode.ZoomModeWidthViewer GdViewer.ZoomMode = ViewerZoomMode.ZoomModeWidthViewer
End Sub End Sub
@ -553,7 +582,9 @@ Public Class DocumentViewer
Case Else Case Else
GdViewer.ZoomMode = ViewerZoomMode.ZoomModeWidthViewer GdViewer.ZoomMode = ViewerZoomMode.ZoomModeWidthViewer
GdViewer.DocumentAlignment = ViewerDocumentAlignment.DocumentAlignmentTopCenter GdViewer.DocumentAlignment = ViewerDocumentAlignment.DocumentAlignmentTopCenter
GdViewer.ForceTemporaryMode = True If Viewer_ForceTemporaryMode = True Then
GdViewer.ForceTemporaryMode = True
End If
GdViewer.AnnotationDropShadow = True GdViewer.AnnotationDropShadow = True
GdViewer.DisplayFromStream(Stream) GdViewer.DisplayFromStream(Stream)
@ -665,9 +696,8 @@ Public Class DocumentViewer
btnSearch2.Visibility = ToVisibility(False) btnSearch2.Visibility = ToVisibility(False)
btnNextHighlight.Visibility = ToVisibility(False) btnNextHighlight.Visibility = ToVisibility(False)
btnPrevHighlight.Visibility = ToVisibility(False) btnPrevHighlight.Visibility = ToVisibility(False)
Case Else
ToolbarDocumentViewer.Visible = False
End Select End Select
End Sub End Sub

View File

@ -200,8 +200,8 @@
<Reference Include="System.CodeDom, Version=8.0.0.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51, processorArchitecture=MSIL"> <Reference Include="System.CodeDom, Version=8.0.0.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51, processorArchitecture=MSIL">
<HintPath>..\packages\System.CodeDom.8.0.0\lib\net462\System.CodeDom.dll</HintPath> <HintPath>..\packages\System.CodeDom.8.0.0\lib\net462\System.CodeDom.dll</HintPath>
</Reference> </Reference>
<Reference Include="System.Collections.Immutable, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL"> <Reference Include="System.Collections.Immutable, Version=9.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
<HintPath>..\packages\System.Collections.Immutable.8.0.0\lib\net462\System.Collections.Immutable.dll</HintPath> <HintPath>..\packages\System.Collections.Immutable.9.0.0\lib\net462\System.Collections.Immutable.dll</HintPath>
</Reference> </Reference>
<Reference Include="System.Configuration" /> <Reference Include="System.Configuration" />
<Reference Include="System.Data" /> <Reference Include="System.Data" />

View File

@ -31,5 +31,5 @@ Imports System.Runtime.InteropServices
' übernehmen, indem Sie "*" eingeben: ' übernehmen, indem Sie "*" eingeben:
' <Assembly: AssemblyVersion("1.0.*")> ' <Assembly: AssemblyVersion("1.0.*")>
<Assembly: AssemblyVersion("2.1.0.0")> <Assembly: AssemblyVersion("2.3.0.0")>
<Assembly: AssemblyFileVersion("2.1.0.0")> <Assembly: AssemblyFileVersion("2.3.0.0")>

View File

@ -20,7 +20,7 @@
<package id="RtfPipe" version="2.0.7677.4303" targetFramework="net462" /> <package id="RtfPipe" version="2.0.7677.4303" targetFramework="net462" />
<package id="System.Buffers" version="4.6.0" targetFramework="net462" /> <package id="System.Buffers" version="4.6.0" targetFramework="net462" />
<package id="System.CodeDom" version="8.0.0" targetFramework="net462" /> <package id="System.CodeDom" version="8.0.0" targetFramework="net462" />
<package id="System.Collections.Immutable" version="8.0.0" targetFramework="net462" /> <package id="System.Collections.Immutable" version="9.0.0" targetFramework="net462" />
<package id="System.IO.Packaging" version="8.0.1" targetFramework="net462" /> <package id="System.IO.Packaging" version="8.0.1" targetFramework="net462" />
<package id="System.Management" version="8.0.0" targetFramework="net462" /> <package id="System.Management" version="8.0.0" targetFramework="net462" />
<package id="System.Memory" version="4.6.0" targetFramework="net462" /> <package id="System.Memory" version="4.6.0" targetFramework="net462" />

View File

@ -12,6 +12,7 @@ Public Class frmDocView
If OpenFileDialog1.ShowDialog() = DialogResult.OK Then If OpenFileDialog1.ShowDialog() = DialogResult.OK Then
txtfilepath.Text = OpenFileDialog1.FileName txtfilepath.Text = OpenFileDialog1.FileName
MyDocumentViewer.LoadFile(txtfilepath.Text) MyDocumentViewer.LoadFile(txtfilepath.Text)
txtfilepath.Text = ""
End If End If
Else Else
MyDocumentViewer.LoadFile(txtfilepath.Text) MyDocumentViewer.LoadFile(txtfilepath.Text)