- Modules.Jobs: Version 3.8.1.0
- WITH (NOLOCK) in allen Abfragen ergänzt - Deteinamen der PDF-Attachments enthalten nur noch ASCII-Zeichen
This commit is contained in:
@@ -1,6 +1,8 @@
|
||||
Imports System.Collections.Generic
|
||||
Imports System.Globalization
|
||||
Imports System.IO
|
||||
Imports System.Linq
|
||||
Imports System.Text
|
||||
Imports DigitalData.Modules.Base
|
||||
Imports DigitalData.Modules.Database
|
||||
Imports DigitalData.Modules.Interfaces
|
||||
@@ -91,7 +93,8 @@ Namespace ZUGFeRD
|
||||
' Write Embedded Files to disk
|
||||
For Each oResult In pEmbeddedAttachments
|
||||
Try
|
||||
Dim oFileName As String = $"{pMessageId}~{oResult.FileName}"
|
||||
Dim oCleanedFilename As String = BereinigeDateinamenAscii(oResult.FileName)
|
||||
Dim oFileName As String = $"{pMessageId}~{oCleanedFilename}"
|
||||
Dim oFilePath As String = Path.Combine(oAttachmentDirectory, oFileName)
|
||||
|
||||
If Not File.Exists(oAttachmentDirectory) Then
|
||||
@@ -208,6 +211,7 @@ Namespace ZUGFeRD
|
||||
Return False ' Andere Fehler
|
||||
End Try
|
||||
End Function
|
||||
|
||||
Public Function GetEmailPathWithSubjectAsName(RejectedEmailDirectory As String, UncleanedSubject As String) As String
|
||||
Dim oCleanSubject = String.Join("", UncleanedSubject.Split(Path.GetInvalidPathChars()))
|
||||
Dim oAttachmentDirectory = RejectedEmailDirectory
|
||||
@@ -218,6 +222,41 @@ Namespace ZUGFeRD
|
||||
|
||||
Return oAttachmentPath
|
||||
End Function
|
||||
|
||||
''' <summary>
|
||||
''' 20.8.2026 - In den Dateinamen der Anhänge in einem PDF können Unicode-Zeichen vorkommen
|
||||
''' die später nicht mehr verarbeitet werden können. sie werden hier rausgefiltert
|
||||
''' </summary>
|
||||
''' <param name="pFilename"></param>
|
||||
''' <returns></returns>
|
||||
Function BereinigeDateinamenAscii(pFilename As String) As String
|
||||
If pFilename.IsNullOrEmpty() Then
|
||||
Return String.Empty
|
||||
End If
|
||||
|
||||
' Restliche Diakritika entfernen (é, à, ñ, etc.)
|
||||
Dim normalisiert As String = pFilename.Normalize(NormalizationForm.FormD)
|
||||
Dim sb As New StringBuilder()
|
||||
|
||||
For Each c As Char In normalisiert
|
||||
If CharUnicodeInfo.GetUnicodeCategory(c) = UnicodeCategory.NonSpacingMark Then
|
||||
Continue For
|
||||
End If
|
||||
|
||||
Dim code As Integer = AscW(c)
|
||||
|
||||
If code >= 32 AndAlso code <= 126 Then
|
||||
If "\/:*?""<>|".Contains(c) Then
|
||||
sb.Append("_")
|
||||
Else
|
||||
sb.Append(c)
|
||||
End If
|
||||
End If
|
||||
' Alles andere (z.B. 你好) wird komplett verworfen
|
||||
Next
|
||||
|
||||
Return sb.ToString()
|
||||
End Function
|
||||
End Class
|
||||
|
||||
End Namespace
|
||||
|
||||
Reference in New Issue
Block a user