Imports iTextSharp.text.pdf Imports iTextSharp.text Imports System.IO Imports GrapeCity.Documents.Pdf Public Class frmSendungAnhangImport Public AvisoId As Integer Dim SENDUNG_LIST As New List(Of VERAG_PROG_ALLGEMEIN.cSendungen) Dim CURRENT_INDEX As Integer Dim BrowserLoaded = True Sub New(AvisoId) ' Dieser Aufruf ist für den Designer erforderlich. InitializeComponent() Me.AvisoId = AvisoId ' Fügen Sie Initialisierungen nach dem InitializeComponent()-Aufruf hinzu. 'Dim f As New GroupDocs.Viewer End Sub Sub initElement(USRCNTL As usrCntlSendungAnhangElement) AddHandler USRCNTL.ME_CLICK, Sub() ' If BrowserLoaded Then If USRCNTL.ACTIVE Then Exit Sub 'Bereits aktiv For Each u As usrCntlSendungAnhangElement In flpnlAviso.Controls u.ACTIVE = False Next For Each u As usrCntlSendungAnhangElement In flpnlSendungen.Controls u.ACTIVE = False Next USRCNTL.ACTIVE = True 'WebBrowser1.Navigate(USRCNTL.FILE_PATH) If File.Exists(USRCNTL.FILE_PATH) Then initLocationViewer(USRCNTL.FILE_PATH) Else initLocationViewer("") End If ' PdfViewer.DocumentLoaded += New EventHandler(AddressOf radPdfViewer1_DocumentLoaded) txtDateiname.Text = USRCNTL.FILE_NAME ' End If End Sub AddHandler USRCNTL.KeyDown, Sub(ob As Object, ev As KeyEventArgs) If ev.KeyCode = Keys.Delete Then deleteActiveElement(getAcitvePnl()) End If End Sub End Sub Sub initLocationViewer(loc) If WebBrowser1.Url.AbsoluteUri <> loc Then WebBrowser1.Navigate(loc) BrowserLoaded = False End If If loc = "" Then BrowserLoaded = True End Sub Function getAcitvePnl() As FlowLayoutPanel For Each u As usrCntlSendungAnhangElement In flpnlAviso.Controls If u.ACTIVE Then Return flpnlAviso Next For Each u As usrCntlSendungAnhangElement In flpnlSendungen.Controls If u.ACTIVE Then Return flpnlSendungen Next Return Nothing End Function Public Function ExtractPdfPages(ByVal SourceFile As String, ByVal TargetFile As String, ByVal IntStr As Integer, ByVal IntEnd As Integer) Try Dim impPage As pdf.PdfImportedPage = Nothing Dim Reader As New PdfReader(SourceFile) Dim srcDoc As New Document(Reader.GetPageSizeWithRotation(IntStr)) Dim PdfCopyProvider As New PdfCopy(srcDoc, New System.IO.FileStream(TargetFile, System.IO.FileMode.Create)) PdfCopyProvider.SetFullCompression() srcDoc.Open() For X = IntStr To IntEnd impPage = PdfCopyProvider.GetImportedPage(Reader, X) ' ----- Ermitteln der Seitenauflösung und setzen für die neue Seite PdfCopyProvider.SetPageSize(New Rectangle(0.0F, 0.0F, impPage.Width, impPage.Height)) ' ----- PDF Seite in das neue Dokument einfügen PdfCopyProvider.AddPage(impPage) Next ' ----- neues PDF Dokument und den Reader schließen srcDoc.Close() Reader.Close() Catch ex As Exception Throw ex End Try End Function Private Sub Button1_Click(sender As Object, e As EventArgs) Handles btnAnfuegen.Click If txtSeiten.Text = "" Then Exit Sub ' If cboArt._value = "" Then Exit Sub If cboSendungen._value = "" Then Exit Sub If Not checkSeiten() Then Exit Sub For Each u As usrCntlSendungAnhangElement In flpnlAviso.Controls If u.ACTIVE Then Dim fi As New FileInfo(u.FILE_PATH) '------------- '------------- PDFs extrahieren und auf den Datenserver laden + Eintrag in tblAvisoAnhaenger '------------- Dim SendngsId As Integer = cboSendungen._value Dim TMP_Path_Old = u.FILE_PATH Dim TMP_Path_New = VERAG_PROG_ALLGEMEIN.DATENVERVER_OPTIONS.getTMPPath(u.FILE_NAME, fi.Extension,, True, "SendungsAnhaenge") If Not extractPagesFromPdf_Spire(u.FILE_PATH, TMP_Path_New, getPagesFromText()) Then Exit Sub 'Hochladen in den Datenserver und anfügen in die Tbl Anhänge mit der SendungsId saveToDS(AvisoId, u.FILE_NAME, TMP_Path_New, cboArt._value, u.FILE_TYPE,,,, SendngsId) '------------- '------------- PDFs aus der original Datei löschen '------------- ' tryDelete(TMP_Path_New) If cbxDelPDF.Checked Then If cbxDelPDF.Checked Then TMP_Path_New = VERAG_PROG_ALLGEMEIN.DATENVERVER_OPTIONS.getTMPPath(u.FILE_NAME, fi.Extension,, True, "SendungsAnhaenge") Dim PagesLeft = 0 If removePagesFromPdf_Spire(u.FILE_PATH, TMP_Path_New, getPagesFromText(), PagesLeft, False) Then If PagesLeft = 0 Then delFromDS(u.FILE_DOCID) flpnlAviso.Controls.Remove(u) Else Dim destPath = "" If saveChangeToDS_daId(u.FILE_DOCID, TMP_Path_New, destPath) Then tryDelete(TMP_Path_Old) u.FILE_PATH = destPath End If End If End If End If initLocationViewer("") If flpnlAviso.Controls.Count > 0 Then DirectCast(flpnlAviso.Controls(0), usrCntlSendungAnhangElement).CLICK_Me() End If End If '------------- End If Next clearPnlAnfuegen() ' initSendungen() initFlpANH_LIST() End Sub Private Sub Button1_ClickALL(sender As Object, e As EventArgs) Handles btnAnfuegenAll.Click If cboSendungen._value = "" Then Exit Sub For Each u As usrCntlSendungAnhangElement In flpnlAviso.Controls If u.ACTIVE Then Dim fi As New FileInfo(u.FILE_PATH) '------------- '------------- PDFs extrahieren und auf den Datenserver laden + Eintrag in tblAvisoAnhaenger '------------- Dim TMP_Path_New = u.FILE_PATH Dim SendngsId As Integer = cboSendungen._value 'Hochladen in den Datenserver und anfügen in die Tbl Anhänge mit der SendungsId ' saveToDS(u.FILE_NAME, TMP_Path_New, cboArt._value, u.FILE_TYPE,,, SendngsId) Dim ANH = New VERAG_PROG_ALLGEMEIN.cAvisoAnhaenge(u.FILE_ANHID) If cbxDelPDF.Checked Then ANH.anh_SendungsId = SendngsId ANH.SAVE() 'Eintrag wird überschreiben flpnlAviso.Controls.Remove(u) If cbxDelPDF.Checked Then tryDelete(u.FILE_PATH) initLocationViewer("") If flpnlAviso.Controls.Count > 0 Then DirectCast(flpnlAviso.Controls(0), usrCntlSendungAnhangElement).CLICK_Me() End If Else ANH.anh_SendungsId = SendngsId ANH.anh_id = -1 'neuer Eintrag ANH.SAVE() End If End If Next clearPnlAnfuegen() ' initSendungen() initFlpANH_LIST() End Sub Sub clearPnlAnfuegen() MyTextBox2.Text = "" txtDateiname.Text = "" txtSeiten.Text = "" cboArt.Text = "" txtSeiten.Focus() End Sub Sub tryDelete(TMP_Path_New) Try File.Delete(TMP_Path_New) Catch ex As Exception End Try End Sub Public Sub DeletePages(ByVal pageRange As String, ByVal SourcePdfPath As String, ByVal OutputPdfPath As String, ByVal Optional Password As String = "") Dim pagesToDelete As New List(Of Integer) If pageRange.IndexOf(",") <> -1 Then Dim tmpHold As String() = pageRange.Split(","c) For Each nonconseq As String In tmpHold If nonconseq.IndexOf("-") <> -1 Then Dim rangeHold As String() = nonconseq.Split("-"c) For i As Integer = Convert.ToInt32(rangeHold(0)) To Convert.ToInt32(rangeHold(1)) pagesToDelete.Add(i) Next Else pagesToDelete.Add(Convert.ToInt32(nonconseq)) End If Next Else If pageRange.IndexOf("-") <> -1 Then Dim rangeHold As String() = pageRange.Split("-"c) For i As Integer = Convert.ToInt32(rangeHold(0)) To Convert.ToInt32(rangeHold(1)) pagesToDelete.Add(i) Next Else pagesToDelete.Add(Convert.ToInt32(pageRange)) End If End If Dim doc As Document = New Document() Dim reader As PdfReader = New PdfReader(SourcePdfPath, New System.Text.ASCIIEncoding().GetBytes(Password)) Using memoryStream As MemoryStream = New MemoryStream() Dim writer As PdfWriter = PdfWriter.GetInstance(doc, memoryStream) doc.Open() doc.AddDocListener(writer) For p As Integer = 1 To reader.NumberOfPages If pagesToDelete.FindIndex(Function(s) s = p) <> -1 Then Continue For End If doc.SetPageSize(reader.GetPageSize(p)) doc.NewPage() Dim cb As PdfContentByte = writer.DirectContent Dim pageImport As pdf.PdfImportedPage = writer.GetImportedPage(reader, p) Dim rot As Integer = reader.GetPageRotation(p) If rot = 90 OrElse rot = 270 Then cb.AddTemplate(pageImport, 0, -1.0F, 1.0F, 0, 0, reader.GetPageSizeWithRotation(p).Height) Else cb.AddTemplate(pageImport, 1.0F, 0, 0, 1.0F, 0, 0) End If Next reader.Close() File.WriteAllBytes(OutputPdfPath, memoryStream.ToArray()) doc.Close() End Using End Sub Function getPagesFromText() As List(Of Integer) Dim List As New List(Of Integer) Dim split = txtSeiten.Text.Split(",") For Each s In split If s.Contains("-") Then Dim s_vb = s.Split("-") Dim von = CInt(s_vb(0)) Dim bis = CInt(s_vb(1)) For page = von To bis Dim anfuegen = True For Each l In List If l = page Then anfuegen = False End If Next If anfuegen Then List.Add(page) Next Else If IsNumeric(s) Then List.Add(s) End If Next Return List End Function Public Function removePagesFromPdf_Spire(ByVal sourceFile As String, ByVal destinationFile As String, pagesToDelete As List(Of Integer), ByRef PagesLeft As Integer, Optional delSource As Boolean = False) As Boolean Try PagesLeft = 0 Dim pdf As New Spire.Pdf.PdfDocument() pdf.LoadFromFile(sourceFile) ' Dim r As PdfReader = New PdfReader(sourceFile) Dim pagesToKeep As New List(Of Integer) For p = 0 To pdf.Pages.Count - 1 ' r.NumberOfPages Dim del = False For Each i In pagesToDelete If p = (i - 1) Then del = True : Exit For End If Next If Not del Then pagesToKeep.Add(p) End If Next Dim pdf1 As New Spire.Pdf.PdfDocument() Dim page As Spire.Pdf.PdfPageBase For Each p In pagesToKeep Dim pageInt = p - 1 ' Nciht SeitenNr. sonder Aufzählung If pageInt >= 0 And pageInt < pdf.Pages.Count Then page = pdf1.Pages.Add(pdf.Pages(p).Size, New Spire.Pdf.Graphics.PdfMargins(0)) pdf.Pages(p).CreateTemplate().Draw(page, New System.Drawing.PointF(0, 0)) PagesLeft += 1 End If Next pdf1.SaveToFile(destinationFile) pdf.Dispose() pdf1.Dispose() If delSource Then tryDelete(sourceFile) Catch ex As Exception MsgBox(ex.Message & ex.StackTrace) Return False End Try Return True End Function Public Function extractPagesFromPdf_Spire(ByVal sourceFile As String, ByVal destinationFile As String, pagesToExtract As List(Of Integer)) As Boolean Try Dim pdf As New Spire.Pdf.PdfDocument() pdf.LoadFromFile(sourceFile) Dim pdf1 As New Spire.Pdf.PdfDocument() Dim page As Spire.Pdf.PdfPageBase For Each p In pagesToExtract Dim pageInt = p - 1 ' Nciht SeitenNr. sonder Aufzählung If pageInt >= 0 And pageInt < pdf.Pages.Count Then page = pdf1.Pages.Add(pdf.Pages(pageInt).Size, New Spire.Pdf.Graphics.PdfMargins(0)) pdf.Pages(pageInt).CreateTemplate().Draw(page, New System.Drawing.PointF(0, 0)) End If Next pdf1.SaveToFile(destinationFile) 'MsgBox("P: " &pdf.Pages.Count) 'Dim pdf1 As New Spire.Pdf.PdfDocument() ''Dim page As New Spire.Pdf.PdfPageBase ''For i As Integer = 0 To 4 'For Each p In pagesToKeep ' pdf1.Pages.Add(pdf.Pages(p).Size, New Spire.Pdf.Graphics.PdfMargins(0)) ' 'Dim page = ' 'pdf.Pages(p).CreateTemplate().Draw(page, New System.Drawing.PointF(0, 0)) ' MsgBox(p) 'Next 'pdf1.SaveToFile(destinationFile) 'Using fs As FileStream = New FileStream(destinationFile, FileMode.Create, FileAccess.Write, FileShare.None) ' Using doc As Document = New Document() ' Using w As PdfWriter = PdfWriter.GetInstance(doc, fs) ' doc.Open() ' For Each page As Integer In pagesToKeep ' doc.NewPage() ' w.DirectContent.AddTemplate(w.GetImportedPage(r, page), 0, 0) ' PagesLeft += 1 ' Next ' doc.Close() ' End Using ' End Using 'End Using pdf.Dispose() pdf1.Dispose() Catch ex As Exception MsgBox(ex.Message & ex.StackTrace) Return False End Try Return True End Function Public Sub removePagesFromPdf(ByVal sourceFile As String, ByVal destinationFile As String, pagesToDelete As List(Of Integer), ByRef PagesLeft As Integer) Try PagesLeft = 0 Dim r As PdfReader = New PdfReader(sourceFile) Dim pagesToKeep As New List(Of Integer) For p = 1 To r.NumberOfPages Dim del = False For Each i In pagesToDelete If p = i Then del = True : Exit For End If Next If Not del Then pagesToKeep.Add(p) End If Next Using fs As FileStream = New FileStream(destinationFile, FileMode.Create, FileAccess.Write, FileShare.None) Using doc As Document = New Document() Using w As PdfWriter = PdfWriter.GetInstance(doc, fs) doc.Open() For Each page As Integer In pagesToKeep doc.NewPage() w.DirectContent.AddTemplate(w.GetImportedPage(r, page), 0, 0) PagesLeft += 1 Next doc.Close() End Using End Using End Using Catch ex As Exception End Try End Sub Private Sub txtSeiten_TextChanged(sender As Object, e As EventArgs) Handles txtSeiten.TextChanged txtSeiten.BackColor = Color.White If txtSeiten.Text = "" Then Exit Sub If checkSeiten() Then txtSeiten.BackColor = Color.White Else txtSeiten.BackColor = Color.MistyRose End If End Sub Function checkSeiten() txtSeiten.Text.Replace(";", ",") ' If txtSeiten.Text.Contains(",") Then Dim split = txtSeiten.Text.Split(",") For Each s In split If s.Contains("-") Then Dim s_vb = s.Split("-") Dim von = s_vb(0) Dim bis = s_vb(1) ' Dim bis = "" 'If s_vb.Count > 0 Then bis = s_vb(1) If Not IsNumeric(von) Then Return False If Not IsNumeric(bis) Then Return False Else If Not IsNumeric(s) Then Return False End If Next ' Else ' If Not IsNumeric(txtSeiten.Text) Then Return False ' End If Return True End Function Private Sub Button2_Click(sender As Object, e As EventArgs) Handles Button2.Click deleteActiveElement(flpnlAviso) End Sub Sub deleteActiveElement(flpnl As FlowLayoutPanel) If flpnl Is Nothing Then Exit Sub For Each u As usrCntlSendungAnhangElement In flpnl.Controls If u.ACTIVE Then If vbYes = MsgBox("Möchten Sie das Element löschen?", vbYesNoCancel) Then Dim DS As New VERAG_PROG_ALLGEMEIN.cDATENSERVER(u.FILE_DOCID) If DS.DELETE_COMPLETE Then flpnl.Controls.Remove(u) initLocationViewer("") If flpnl.Controls.Count > 0 Then DirectCast(flpnl.Controls(0), usrCntlSendungAnhangElement).CLICK_Me() End If End If End If End If Next End Sub Private Sub frmSendungAnhangImport_Load(sender As Object, e As EventArgs) Handles Me.Load WebBrowser1.Navigate("") flpnlAviso.Controls.Clear() flpnlSendungen.Controls.Clear() cboArt.Items.Clear() cboArt.Items.Add(New VERAG_PROG_ALLGEMEIN.MyListItem("ATR", "ATR")) cboArt.Items.Add(New VERAG_PROG_ALLGEMEIN.MyListItem("Rechnung", "Rechnung")) cboArt.Items.Add(New VERAG_PROG_ALLGEMEIN.MyListItem("CMR", "CMR")) cboArt.Items.Add(New VERAG_PROG_ALLGEMEIN.MyListItem("Auftrag", "Auftrag")) cboArt.Items.Add(New VERAG_PROG_ALLGEMEIN.MyListItem("Packliste", "Packliste")) cboArt.Items.Add(New VERAG_PROG_ALLGEMEIN.MyListItem("Sonstiges", "Sonstiges")) initSendungen() cboSendungen.changeItem(-1) End Sub Private Sub frmSendungAnhangImport_Shown(sender As Object, e As EventArgs) Handles Me.Shown txtSeiten.Focus() End Sub Private Sub txtSeiten_KeyDown(sender As Object, e As KeyEventArgs) Handles txtSeiten.KeyDown, cboArt.KeyDown If e.KeyCode = Keys.Return Then btnAnfuegen.PerformClick() End If End Sub Sub initSendungen() cboSendungen.Items.Clear() ' cboSendungen.Items.Add(New VERAG_PROG_ALLGEMEIN.MyListItem("Allgemein", -1)) VERAG_PROG_ALLGEMEIN.cSendungen.LOAD_LIST(SENDUNG_LIST, CURRENT_INDEX, AvisoId) 'LÄDT alle SENDUNGSDATEN Dim cnt = 1 For Each s In SENDUNG_LIST cboSendungen.Items.Add(New VERAG_PROG_ALLGEMEIN.MyListItem(cnt & ". " & s.tblSnd_Empfaenger & " (" & s.tblSnd_Abfertigungsart_ID & ")", s.tblSnd_SendungID)) Next End Sub Private Sub cboSendungen_SelectedIndexChanged(sender As Object, e As EventArgs) Handles cboSendungen.SelectedIndexChanged MyTextBox2.Text = cboSendungen.Text flpnlSendungen.Controls.Clear() initFlpANH_LIST() End Sub Sub initFlpANH_LIST() Dim ANH_LIST As New List(Of VERAG_PROG_ALLGEMEIN.cAvisoAnhaenge) 'If cboSendungen._value > 0 Then ' VERAG_PROG_ALLGEMEIN.cAvisoAnhaenge.LOAD_LIST_BySendung(ANH_LIST, cboSendungen._value) 'LÄDT alle Aviso-Anhänge 'Else ' VERAG_PROG_ALLGEMEIN.cAvisoAnhaenge.LOAD_LIST_ByAviso(ANH_LIST, AvisoId) 'LÄDT alle Sendungs-Anhänge 'End If VERAG_PROG_ALLGEMEIN.cAvisoAnhaenge.LOAD_LIST_ByAviso(ANH_LIST, AvisoId) 'LÄDT alle Aviso-Anhänge flpnlSendungen.Controls.Clear flpnlAviso.Controls.Clear() For Each a In ANH_LIST Dim USRCNTL As New usrCntlSendungAnhangElement USRCNTL.FILE_PATH = VERAG_PROG_ALLGEMEIN.cDATENSERVER.GET_PDFPath_BY_DocID(a.anh_docId) USRCNTL.FILE_NAME = a.anh_Name USRCNTL.FILE_TYPE = a.anh_Typ USRCNTL.FILE_ANHID = a.anh_id USRCNTL.FILE_DOCID = a.anh_docId initElement(USRCNTL) If If(a.anh_SendungsId, 0) > 0 Then If cboSendungen._value <> "" AndAlso cboSendungen._value = a.anh_SendungsId Then flpnlSendungen.Controls.Add(USRCNTL) End If Else flpnlAviso.Controls.Add(USRCNTL) End If Next End Sub Private Sub Button3_Click(sender As Object, e As EventArgs) Handles btnAnfuegenAll.Click clearPnlAnfuegen() End Sub Private Sub Button3_Click_1(sender As Object, e As EventArgs) Handles Button3.Click If cboSendungen._value = "" Then Exit Sub For Each u As usrCntlSendungAnhangElement In flpnlAviso.Controls If u.ACTIVE Then Dim ANH = New VERAG_PROG_ALLGEMEIN.cAvisoAnhaenge(u.FILE_ANHID) ANH.anh_SendungsId = Nothing ANH.SAVE() End If Next clearPnlAnfuegen() ' initSendungen() initFlpANH_LIST() End Sub Public Sub DateiHochladenToolStripMenuItem_Click(sender As Object, e As EventArgs) Handles DateiHochladenToolStripMenuItem.Click addData_SendungAnhangFD() End Sub Sub delFromDS(daId) Dim ds As New VERAG_PROG_ALLGEMEIN.cDATENSERVER(daId) ds.DELETE_COMPLETE() End Sub Function saveChangeToDS_daId(daId, sourcePath, ByRef destPath) As Boolean Dim DS As New VERAG_PROG_ALLGEMEIN.cDATENSERVER(daId) If Not DS.uploadDataToDATENSERVER(sourcePath) Then MsgBox("Fehler beim Speichern: Datenserver!") : Return False If DS.da_id <= 0 Then MsgBox("Keine DocId!") : Return False destPath = DS.GET_TOP1_PATH 'Dim ANH As New VERAG_PROG_ALLGEMEIN.cAvisoAnhaenge(AvisoId, DS.da_name, DS.da_id, cboArt._value, DS.da_name, Nothing) 'If Not ANH.SAVE Then MsgBox("Fehler beim Anhang speichern!") : Return False Return True End Function Private Sub DateiScannenToolStripMenuItem_Click(sender As Object, e As EventArgs) Handles DateiScannenToolStripMenuItem.Click Try 'If KdNr < 0 Then Exit Sub Dim frmScan As New VERAG_PROG_ALLGEMEIN.frmScan("DirectScan") frmScan.DefaultFileName = "Scan" ' Me._TEXT_PDF If frmScan.ShowDialog(Me) = DialogResult.OK Then If frmScan.ReturnValue IsNot Nothing Then Dim Filename = frmScan.fileName Dim TMP_Path = VERAG_PROG_ALLGEMEIN.DATENVERVER_OPTIONS.getTMPPath(Filename, ".pdf",, False, "SendungsAnhaenge") File.WriteAllBytes(TMP_Path, frmScan.ReturnValue) Dim da_id = -1 Dim anhId = -1 Dim destPath = "" If saveToDS(AvisoId, Filename, TMP_Path, "", "PDF", da_id, anhId, destPath) Then addUsrcnlToPnl(destPath, da_id, anhId, Filename, "PDF") End If 'addUsrcnlToPnl(TMP_Path) End If End If Catch ex As Exception MsgBox("FEHLER Scan: " & ex.Message & ex.StackTrace) End Try End Sub Sub addUsrcnlToPnl(TMP_Path, dicId, anhId, Optional filename = "", Optional Typ = "") Dim USRCNTL As New usrCntlSendungAnhangElement Dim fi As New FileInfo(TMP_Path) If filename = "" Then filename = fi.Name USRCNTL.FILE_PATH = TMP_Path USRCNTL.FILE_NAME = filename USRCNTL.FILE_DOCID = dicId USRCNTL.FILE_NAME = filename USRCNTL.FILE_ANHID = anhId USRCNTL.FILE_TYPE = Typ initElement(USRCNTL) flpnlAviso.Controls.Add(USRCNTL) End Sub Private Sub btn_Click(sender As Object, e As EventArgs) Handles btn.Click cntxt.Show(Cursor.Position) End Sub Private Sub Button4_Click(sender As Object, e As EventArgs) Handles Button4.Click deleteActiveElement(flpnlSendungen) End Sub Public Sub addData_SendungAnhangFD() Dim fd As New OpenFileDialog fd.Multiselect = True If fd.ShowDialog = vbOK Then For Each F_listItem In fd.FileNames Dim fi As New FileInfo(F_listItem) Dim filename = fi.Name ' Dim TMP_Path = VERAG_PROG_ALLGEMEIN.DATENVERVER_OPTIONS.getTMPPath(filename, fi.Extension,, False, "SendungsAnhaenge") ' MsgBox(TMP_Path) ' File.Copy(F_listItem, TMP_Path) Dim da_id = -1 Dim anhId = -1 Dim destPath = "" Dim Typ = "" If getFileTypeValid(fi.Extension.Replace(".", ""), Typ) Then If saveToDS(AvisoId, fi.Name, F_listItem, "", Typ, da_id, anhId, destPath) Then addUsrcnlToPnl(destPath, da_id, anhId, filename, Typ) End If End If Next If flpnlAviso.Controls.Count > 0 Then DirectCast(flpnlAviso.Controls(0), usrCntlSendungAnhangElement).CLICK_Me() End If End Sub Public Sub addData_SendungAnhang(Path) Dim fi As New FileInfo(Path) Dim filename = fi.Name Dim da_id = -1 Dim anhId = -1 Dim destPath = "" Dim Typ = "" If getFileTypeValid(fi.Extension.Replace(".", ""), Typ) Then If saveToDS(AvisoId, fi.Name, Path, "", Typ, da_id, anhId, destPath) Then addUsrcnlToPnl(destPath, da_id, anhId, filename, Typ) End If End If End Sub Public Shared Function getFileTypeValid(extension, ByRef Typ) As Boolean Select Case extension Case "PDF" : Typ = "PDF" Case "XLS", "XLXS" : Typ = "EXCEL" Case "DOC", "DOCX" : Typ = "WORD" Case "TXT" : Typ = "TEXT" Case "JPEG", "JPG", "GIF", "TFF" : Typ = "BILD" Case "EXE" : MsgBox("Aviso-Anhänge: Ungültiges Datei-Format!") : Return False Case Else : Typ = "SONSTIGES" End Select Return True End Function Public Shared Function saveToDS(AvisoId, fileName, sourcePath, Art, Typ, Optional ByRef da_id = -1, Optional anhId = -1, Optional ByRef destPath = "", Optional SendungsId = Nothing) As Boolean Dim DS As New VERAG_PROG_ALLGEMEIN.cDATENSERVER("DOKUMENTE", "AVISO_ANHAENGE", AvisoId, Now.ToString("ddMMyy_HHmmss.sss"), "", fileName, -1, False) If Not DS.uploadDataToDATENSERVER(sourcePath) Then MsgBox("Fehler beim Speichern: Datenserver!") : Return False If DS.da_id <= 0 Then MsgBox("Keine DocId!") : Return False da_id = DS.da_id destPath = DS.GET_TOP1_PATH Dim ANH As New VERAG_PROG_ALLGEMEIN.cAvisoAnhaenge(AvisoId, fileName, DS.da_id, Art, Typ, SendungsId) If Not ANH.SAVE Then MsgBox("Fehler beim Anhang speichern!") : Return False anhId = ANH.anh_id Return True End Function Private Sub WebBrowser1_DocumentCompleted(sender As Object, e As WebBrowserDocumentCompletedEventArgs) Handles WebBrowser1.DocumentCompleted BrowserLoaded = True End Sub End Class