'Imports iTextSharp.text.pdf 'Imports iTextSharp.text Imports System.IO Imports Spire.Pdf 'Imports GrapeCity.Documents.Pdf 'Imports Spire.Pdf Public Class frmSendungAnhangImport Public AvisoId As Integer Public SendungsId As Integer Dim SENDUNG_LIST As New List(Of VERAG_PROG_ALLGEMEIN.cSendungen) Dim CURRENT_INDEX As Integer Dim SQL As New VERAG_PROG_ALLGEMEIN.SQL 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 New(AvisoId, SendungsId) ' Dieser Aufruf ist für den Designer erforderlich. InitializeComponent() Me.AvisoId = AvisoId Me.SendungsId = SendungsId ' Fügen Sie Initialisierungen nach dem InitializeComponent()-Aufruf hinzu. 'Dim f As New GroupDocs.Viewer End Sub Function checkIf1isSelected() As Boolean Dim cnt = 0 For Each u As usrCntlSendungAnhangElement In flpnlAviso.Controls If u.ACTIVE Then cnt += 1 Next For Each u As usrCntlSendungAnhangElement In flpnlSendungen.Controls If u.ACTIVE Then cnt += 1 Next Return cnt = 1 End Function Function checkIfSamePanel(USRCNTL As usrCntlSendungAnhangElement) As Boolean If USRCNTL.Parent Is flpnlAviso Then For Each u As usrCntlSendungAnhangElement In flpnlSendungen.Controls If u.ACTIVE Then Return False Next End If If USRCNTL.Parent Is flpnlSendungen Then For Each u As usrCntlSendungAnhangElement In flpnlAviso.Controls If u.ACTIVE Then Return False Next End If Return True End Function Sub initElement(USRCNTL As usrCntlSendungAnhangElement) AddHandler USRCNTL.ME_CLICK, Sub(STRG_PRESSED) ' If BrowserLoaded Then If Not STRG_PRESSED Then 'prüfen, ob genau 1 Elemnt markeirt ist, dann kein neues Laden nötig If USRCNTL.ACTIVE Then If checkIf1isSelected() Then Exit Sub 'Bereits aktiv, aber nur wenn 1 markiert End If 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, USRCNTL.FILE_TYPE) Else initLocationViewer("", "PDF") End If ' PdfViewer.DocumentLoaded += New EventHandler(AddressOf radPdfViewer1_DocumentLoaded) txtDateiname.Text = USRCNTL.FILE_NAME txtSeiten.Focus() Else If checkIfSamePanel(USRCNTL) Then USRCNTL.ACTIVE = Not USRCNTL.ACTIVE End If End If End Sub AddHandler USRCNTL.ME_DELETE, Sub(docId, anhId) deleteElement(docId, anhId) initFlpANH_LIST() 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, typ) Try 'If PdfViewer IsNot Nothing AndAlso PdfViewer.IsDocumentLoaded Then ' PdfViewer.CloseDocument() 'End If PdfViewer.Visible = False WebBrowser.Visible = False WebBrowser.Navigate("") If typ = "PDF" Then If cbxAlternativePDFAnsicht.Checked Then PdfViewer.Visible = False WebBrowser.Visible = (loc <> "") WebBrowser.Navigate(loc) Else WebBrowser.Visible = False PdfViewer.Visible = (loc <> "") PdfViewer.LoadFromFile(loc) End If ElseIf typ = "BILD" Then PdfViewer.Visible = False WebBrowser.Visible = (loc <> "") WebBrowser.Navigate(loc) End If Button5.Visible = PdfViewer.Visible Catch ex As Exception VERAG_PROG_ALLGEMEIN.cErrorHandler.ERR(ex.Message, ex.StackTrace, System.Reflection.MethodInfo.GetCurrentMethod.Name) End Try 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 Function getAcitveCntl() As usrCntlSendungAnhangElement For Each u As usrCntlSendungAnhangElement In flpnlAviso.Controls If u.ACTIVE Then Return u Next For Each u As usrCntlSendungAnhangElement In flpnlSendungen.Controls If u.ACTIVE Then Return u Next Return Nothing End Function Function getPDFSplitName(FILE_NAME) getPDFSplitName = FILE_NAME If txtBezeichnung.Text <> "" Then txtBezeichnung.Text = txtBezeichnung.Text.Replace("/", "-").Replace("\", "-").Replace(":", "-").Replace("*", "-").Replace("?", "-").Replace("|", "-").Replace("<", "-").Replace(">", "-") getPDFSplitName = txtBezeichnung.Text End If If Not getPDFSplitName.ToString.EndsWith(".pdf") Then getPDFSplitName = getPDFSplitName & ".pdf" End If End Function Dim tmpPageMove = 0 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 Dim CurrentPageNumber = PdfViewer.CurrentPageNumber Dim pages = getPagesFromText() Dim cntl = getAcitveCntl() Dim cntlID = If(cntl IsNot Nothing, getAcitveCntl().FILE_ANHID, -1) For Each u As usrCntlSendungAnhangElement In flpnlAviso.Controls If u.ACTIVE Then If u.FILE_TYPE <> "PDF" Then Exit Sub 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 If Not ExtractPdfPages_NEW(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, getPDFSplitName(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 removePagesFromPdf_NEW(u.FILE_PATH, TMP_Path_New, getPagesFromText(), PagesLeft, False) Then If PagesLeft = 0 Then 'delFromDS(u.FILE_DOCID) deleteElement(u.FILE_DOCID, u.FILE_ANHID, False) 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("", "PDF") End If '------------- End If Next ' initSendungen() initFlpANH_LIST(flpnlSendungen, False) If flpnlAviso.Controls.Count > 0 Then If Not setAvtiveById(flpnlAviso, CurrentPageNumber, pages, cntlID) Then DirectCast(flpnlAviso.Controls(0), usrCntlSendungAnhangElement).CLICK_Me() End If Else initLocationViewer("", "PDF") End If clearPnlAnfuegen() End Sub Function setAvtiveById(pnl As FlowLayoutPanel, CurrentPageNumber As Integer, listDelPages As List(Of Integer), anhId As Integer) As Boolean Try For Each p As usrCntlSendungAnhangElement In flpnlAviso.Controls If p.FILE_ANHID = anhId Then If p.FILE_TYPE = "PDF" Then If p.ACTIVE Then initLocationViewer(p.FILE_PATH, p.FILE_TYPE) Else p.CLICK_Me() End If Dim newCurrentPageNumber = CurrentPageNumber For Each s In getPagesFromText() ' vorheirge Seiten, die gelöscht wurden werden abgezogen If s < CurrentPageNumber Then CurrentPageNumber -= 1 Next If PdfViewer.IsDocumentLoaded Then If newCurrentPageNumber > 0 Then PdfViewer.GoToPage(newCurrentPageNumber) End If End If Return True End If Next Catch ex As Exception VERAG_PROG_ALLGEMEIN.cErrorHandler.ERR(ex.Message, ex.StackTrace, System.Reflection.MethodInfo.GetCurrentMethod.Name) End Try Return False End Function Function setAvtive(pnl As FlowLayoutPanel, CurrentPageNumber As Integer, listDelPages As List(Of Integer), u As usrCntlSendungAnhangElement) As Boolean Try For Each p As usrCntlSendungAnhangElement In flpnlAviso.Controls If p Is u Then p.ACTIVE = True Dim newCurrentPageNumber = CurrentPageNumber For Each s In getPagesFromText() ' vorheirge Seiten, die gelöscht wurden werden abgezogen If s < CurrentPageNumber Then CurrentPageNumber -= 1 Next If newCurrentPageNumber > 0 Then PdfViewer.GoToPage(newCurrentPageNumber) Return True End If Next Catch ex As Exception VERAG_PROG_ALLGEMEIN.cErrorHandler.ERR(ex.Message, ex.StackTrace, System.Reflection.MethodInfo.GetCurrentMethod.Name) End Try Return False End Function 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) If cbxDelPDF.Checked Then Dim ANH = New VERAG_PROG_ALLGEMEIN.cAvisoAnhaenge(u.FILE_ANHID) ANH.anh_SendungsId = SendngsId ANH.anh_Name = getPDFSplitName(ANH.anh_Name) If cboArt._value <> "" Then ANH.anh_Art = cboArt._value ANH.SAVE() 'Eintrag wird überschreiben flpnlAviso.Controls.Remove(u) ' If cbxDelPDF.Checked Then tryDelete(u.FILE_PATH) initLocationViewer("", "PDF") If flpnlAviso.Controls.Count > 0 Then DirectCast(flpnlAviso.Controls(0), usrCntlSendungAnhangElement).CLICK_Me() End If Else saveToDS(AvisoId, getPDFSplitName(u.FILE_NAME), TMP_Path_New, cboArt._value, u.FILE_TYPE,,,, SendngsId) 'Dim ANH = New VERAG_PROG_ALLGEMEIN.cAvisoAnhaenge(u.FILE_ANHID) 'ANH.anh_id = -1 'neuer Eintrag 'ANH.anh_SendungsId = SendngsId 'ANH.anh_Name = getPDFSplitName(ANH.anh_Name) 'If cboArt._value <> "" Then ANH.anh_Art = cboArt._value 'ANH.anh_SendungsId = SendngsId 'ANH.SAVE() 'DOCID!!!!! End If End If Next clearPnlAnfuegen() ' initSendungen() initFlpANH_LIST() End Sub Sub clearPnlAnfuegen() txtDateiname.Text = "" txtSeiten.Text = "" cboArt.Text = "" txtBezeichnung.Text = "" Dim u As usrCntlSendungAnhangElement = getAcitveCntl() If u IsNot Nothing Then txtDateiname.Text = u.FILE_NAME Else txtDateiname.Text = "" End If MyTextBox2.Text = cboSendungen.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 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 PdfDocument() Dim page As PdfPageBase For Each p In pagesToKeep ' Dim pageInt = p - 1 ' Nciht SeitenNr. sonder Aufzählung Dim pageInt = p If pageInt >= 0 And pageInt < pdf.Pages.Count Then Dim pageOLD As PdfPageBase = pdf.Pages(pageInt) If pageOLD.Rotation = PdfPageRotateAngle.RotateAngle90 Then page = pdf1.Pages.Add(New SizeF(pageOLD.Size.Height, pageOLD.Size.Width), New Graphics.PdfMargins(0)) ElseIf pageOLD.Rotation = PdfPageRotateAngle.RotateAngle270 Then page = pdf1.Pages.Add(New SizeF(pageOLD.Size.Height, pageOLD.Size.Width), New Graphics.PdfMargins(0)) Else page = pdf1.Pages.Add(pageOLD.Size, New Graphics.PdfMargins(0)) End If pdf.Pages(pageInt).CreateTemplate().Draw(page, New System.Drawing.PointF(0, 0)) 'alter Kot: 'page = pdf1.Pages.Add(pdf.Pages(p).Size, New 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) 'GC.Collect() Catch ex As Exception VERAG_PROG_ALLGEMEIN.cErrorHandler.ERR(ex.Message, ex.StackTrace, System.Reflection.MethodInfo.GetCurrentMethod.Name) 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 ''Load the original PDF 'Dim pdf As New PdfDocument() 'pdf.LoadFromFile("20191017092932604.pdf") ''Get the first page 'Dim page As PdfPageBase = pdf.Pages(0) ''Create a new PDF file 'Dim pdf1 As New PdfDocument() 'Dim newPage As PdfPageBase ''Judge if the page is rotated and rotate it back 'If page.Rotation = PdfPageRotateAngle.RotateAngle90 Then ' newPage = pdf1.Pages.Add(New SizeF(page.Size.Height, page.Size.Width), New PdfMargins(0)) 'End If 'If page.Rotation = PdfPageRotateAngle.RotateAngle270 Then ' newPage = pdf1.Pages.Add(New SizeF(page.Size.Height, page.Size.Width), New PdfMargins(0)) 'Else ' newPage = pdf1.Pages.Add(page.Size, New PdfMargins(0)) 'End If ''Draw template on new page 'page.CreateTemplate().Draw(newPage, New PointF(0, 0)) ''Save the file 'pdf1.SaveToFile("result.pdf", Spire.Pdf.FileFormat.PDF) Dim pdf As New PdfDocument() pdf.LoadFromFile(sourceFile) Dim pdf1 As New PdfDocument() Dim page As PdfPageBase For Each p In pagesToExtract Dim pageInt = p - 1 ' Nciht SeitenNr. sonder Aufzählung If pageInt >= 0 And pageInt < pdf.Pages.Count Then Dim pageOLD As PdfPageBase = pdf.Pages(pageInt) If pageOLD.Rotation = PdfPageRotateAngle.RotateAngle90 Then page = pdf1.Pages.Add(New SizeF(pageOLD.Size.Height, pageOLD.Size.Width), New Graphics.PdfMargins(0)) ElseIf pageOLD.Rotation = PdfPageRotateAngle.RotateAngle270 Then page = pdf1.Pages.Add(New SizeF(pageOLD.Size.Height, pageOLD.Size.Width), New Graphics.PdfMargins(0)) Else page = pdf1.Pages.Add(pageOLD.Size, New Graphics.PdfMargins(0)) End If pdf.Pages(pageInt).CreateTemplate().Draw(page, New System.Drawing.PointF(0, 0)) 'alter Kot: ' page = pdf1.Pages.Add(pdf.Pages(pageInt).Size, New 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 PdfDocument() ''Dim page As New PdfPageBase ''For i As Integer = 0 To 4 'For Each p In pagesToKeep ' pdf1.Pages.Add(pdf.Pages(p).Size, New 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() 'GC.Collect() Catch ex As Exception VERAG_PROG_ALLGEMEIN.cErrorHandler.ERR(ex.Message, ex.StackTrace, System.Reflection.MethodInfo.GetCurrentMethod.Name) Return False End Try Return True End Function Public Function ExtractPdfPages_NEW(ByVal SourceFile As String, ByVal TargetFile As String, pagesToExtract As List(Of Integer)) As Boolean 'ITEXTSHARP Try Dim impPage As iTextSharp.text.pdf.PdfImportedPage = Nothing Dim Reader As New iTextSharp.text.pdf.PdfReader(SourceFile) If Not TargetFile.ToLower.EndsWith(".pdf") Then TargetFile = TargetFile & ".pdf" Dim srcDoc As New iTextSharp.text.Document() 'Reader.GetPageSizeWithRotation(0)) Dim PdfCopyProvider As New iTextSharp.text.pdf.PdfCopy(srcDoc, New System.IO.FileStream(TargetFile, System.IO.FileMode.Create)) PdfCopyProvider.SetFullCompression() srcDoc.Open() For Each p In pagesToExtract If p > Reader.NumberOfPages Then MsgBox("Seitenanzahl überschritten!") srcDoc.Close() : Reader.Close() Return False End If impPage = PdfCopyProvider.GetImportedPage(Reader, p) ' ----- Ermitteln der Seitenauflösung und setzen für die neue Seite PdfCopyProvider.SetPageSize(New iTextSharp.text.Rectangle(0.0F, 0.0F, impPage.Width, impPage.Height, Reader.GetPageRotation(p))) ' ----- PDF Seite in das neue Dokument einfügen PdfCopyProvider.AddPage(impPage) Next ' ----- neues PDF Dokument und den Reader schließen srcDoc.Close() Reader.Close() Return True Catch ex As Exception VERAG_PROG_ALLGEMEIN.cErrorHandler.ERR(ex.Message, ex.StackTrace, System.Reflection.MethodInfo.GetCurrentMethod.Name) End Try Return False End Function 'ITEXT 7 ::::: 'Public Function ExtractPdfPages_NEW(ByVal SourceFile As String, ByVal TargetFile As String, pagesToExtract As List(Of Integer)) As Boolean ' Try ' If Not TargetFile.ToLower.EndsWith(".pdf") Then TargetFile = TargetFile & ".pdf" ' Dim Reader = New iText.Kernel.Pdf.PdfReader(SourceFile) ' Dim srcDoc As New iText.Kernel.Pdf.PdfDocument(Reader) ' Dim srcDocsp As New iText.Kernel.Utils.PdfSplitter(srcDoc) ' ' Dim splitRanges As IList(Of iText.Kernel.Utils.PageRange) = New List(Of iText.Kernel.Utils.PageRange)() ' Dim splitRange As New iText.Kernel.Utils.PageRange ' For Each p In pagesToExtract ' ' pageRanges.Add(p) ' splitRange.AddSinglePage(p) ' Next ' ' splitRange.Add(nextRange) ' Dim PDFTarget As iText.Kernel.Pdf.PdfDocument = srcDocsp.ExtractPageRange(splitRange) ' Dim PdfWriter = New iText.Kernel.Pdf.PdfWriter(TargetFile) ' Dim PdfWriter2 As iText.Kernel.Pdf.PdfWriter = PDFTarget.GetWriter() ' 'Dim PdfCopyProvider As New iTextSharp.text.pdf.PdfCopy(srcDoc, New System.IO.FileStream(TargetFile, System.IO.FileMode.Create)) ' PdfWriter.Close() ' srcDoc.Close() ' Reader.Close() ' PDFTarget.Close() ' ''PdfDocument pdf = New iText.Kernel.Pdf.PdfDocument(writer) ' ''Dim impPage As iTextSharp.text.pdf.PdfImportedPage = Nothing ' ''Dim Reader As New iTextSharp.text.pdf.PdfReader(SourceFile) ' 'Dim impPage As iText.Kernel.Pdf.PdfPage = Nothing ' 'Dim Reader = New iText.Kernel.Pdf.PdfReader(SourceFile) ' 'If Not TargetFile.ToLower.EndsWith(".pdf") Then TargetFile = TargetFile & ".pdf" ' ''Dim srcDoc As New iTextSharp.text.Document() ' 'Dim srcDoc As New iText.Kernel.Pdf.PdfDocument(Reader) ' 'Dim srcDocsp As New iText.Kernel.Utils.PdfSplitter(Reader) ' 'srcDocsp.ExtractPageRanges() ' 'Dim PdfCopyProvider As New iTextSharp.text.pdf.PdfCopy(srcDoc, New System.IO.FileStream(TargetFile, System.IO.FileMode.Create)) ' 'PdfCopyProvider.SetFullCompression() ' 'srcDoc.Open() ' 'For Each p In pagesToExtract ' ' If p > Reader.NumberOfPages Then ' ' MsgBox("Seitenanzahl überschritten!") ' ' srcDoc.Close() : Reader.Close() ' ' Return False ' ' End If ' ' impPage = PdfCopyProvider.GetImportedPage(Reader, p) ' ' ' ----- Ermitteln der Seitenauflösung und setzen für die neue Seite ' ' PdfCopyProvider.SetPageSize(New iText.Kernel.Geom.Rectangle(0.0F, 0.0F, impPage.Width, impPage.Height, Reader.GetPageRotation(p))) ' ' ' ----- PDF Seite in das neue Dokument einfügen ' ' PdfCopyProvider.AddPage(impPage) ' 'Next ' '' ----- neues PDF Dokument und den Reader schließen ' 'srcDoc.Close() ' 'Reader.Close() ' Return True ' Catch ex As Exception ' VERAG_PROG_ALLGEMEIN.cErrorHandler.ERR(ex.Message, ex.StackTrace, System.Reflection.MethodInfo.GetCurrentMethod.Name ) ' End Try ' Return False 'End Function 'Public Sub ExtractPages(ByVal sourcePdfPath As String, ByVal outputPdfPath As String, ByVal startPage As Integer, ByVal endPage As Integer) 'ITEXT OLD ' Dim reader As iText.Kernel.Pdf.PdfReader = Nothing ' Dim sourceDocument As iText.Kernel.Pdf.PdfDocument = Nothing ' Dim pdfCopyProvider As iText.Kernel.Pdf.PdfCopy = Nothing ' Dim importedPage As iText.Kernel.Pdf.PdfImportedPage = Nothing ' Try ' reader = New iText.Kernel.Pdf.PdfReader(sourcePdfPath) ' sourceDocument = New iText.Kernel.Pdf.PdfDocument(reader.GetPageSizeWithRotation(startPage)) ' pdfCopyProvider = New iText.Kernel.Pdf.PdfCopy(sourceDocument, New System.IO.FileStream(outputPdfPath, System.IO.FileMode.Create)) ' sourceDocument.Open() ' For i As Integer = startPage To endPage ' importedPage = pdfCopyProvider.GetImportedPage(reader, i) ' pdfCopyProvider.AddPage(importedPage) ' Next ' sourceDocument.Close() ' reader.Close() ' Catch ex As Exception ' Throw ex ' End Try 'End Sub 'Public Function ExtractPdfPages(ByVal SourceFile As String, ByVal TargetFile As String, ByVal IntStr As Integer, ByVal IntEnd As Integer) ' Try ' Dim impPage As iTextSharp.text.pdf.PdfImportedPage = Nothing ' Dim Reader As New iTextSharp.text.pdf.PdfReader(SourceFile) ' Dim srcDoc As New iTextSharp.text.Document(Reader.GetPageSizeWithRotation(IntStr)) ' Dim PdfCopyProvider As New iTextSharp.text.pdf.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 iTextSharp.text.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 'ITEXT 7:: 'Public Function removePagesFromPdf_NEW(ByVal sourceFile As String, ByVal destinationFile As String, pagesToDelete As List(Of Integer), ByRef PagesLeft As Integer, delSource As Boolean) As Boolean ' Try ' ' Dim pdfReader As iText.Kernel.Pdf.PdfReader = New iText.Kernel.Pdf.PdfReader(sourceFile) ' ' Dim pdfwriter As iText.Kernel.Pdf.PdfWriter = New iText.Kernel.Pdf.PdfWriter(destinationFile) ' 'Dim docOringal = New iText.Kernel.Pdf.PdfDocument(pdfReader, pdfwriter) ' Dim NewPagesReader = New iText.Kernel.Pdf.PdfReader(destinationFile) ' Dim docNewPages = New iText.Kernel.Pdf.PdfDocument(NewPagesReader) ' Dim OriginalDocReader = New iText.Kernel.Pdf.PdfReader(sourceFile) ' 'Dim NewPDFWriter As New iText.Kernel.Pdf.PdfWriter(sourceFile) ' Dim docOringal = New iText.Kernel.Pdf.PdfDocument(OriginalDocReader) ', NewPDFWriter) ' 'docOringal.GetNumberOfPages ' PagesLeft = 0 ' ' Dim r As iTextSharp.text.pdf.PdfReader = New iTextSharp.text.pdf.PdfReader(sourceFile) ' Dim pagesToKeep As New List(Of Integer) ' For p = 1 To docOringal.GetNumberOfPages ' 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 ' For Each p In pagesToKeep ' docNewPages.CopyPagesTo(p, p, docOringal) ' Next ' docOringal.Close() ' 'If pagesToKeep.Count > 0 Then ' ' PagesLeft = r.NumberOfPages - pagesToKeep.Count ' ' If ExtractPdfPages_NEW(sourceFile, destinationFile, pagesToKeep) Then ' ' If delSource Then tryDelete(sourceFile) ' ' End If ' ' If delSource Then tryDelete(sourceFile) ' 'End If ' 'If Not TargetFile.ToLower.EndsWith(".pdf") Then TargetFile = TargetFile & ".pdf" ' 'Dim Reader = New iText.Kernel.Pdf.PdfReader(sourceFile) ' 'Dim srcDoc As New iText.Kernel.Pdf.PdfDocument(Reader) ' 'Dim srcDocsp As New iText.Kernel.Utils.PdfSplitter(srcDoc) ' 'Dim splitRanges As IList(Of iText.Kernel.Utils.PageRange) = New List(Of iText.Kernel.Utils.PageRange)() ' 'For Each p In pagesToExtract ' ' ' pageRanges.Add(p) ' ' Dim nextRange As New iText.Kernel.Utils.PageRange '= GetNextRange(currentPage, numOfPages, Size) ' ' nextRange.AddSinglePage(p) ' ' splitRanges.Add(nextRange) ' 'Next ' 'Dim PDFTarget As iText.Kernel.Pdf.PdfDocument = srcDocsp.ExtractPageRange(splitRanges) ' 'Dim PdfWriter = New iText.Kernel.Pdf.PdfWriter(TargetFile) ' 'Dim PdfWriter2 As iText.Kernel.Pdf.PdfWriter = PDFTarget.GetWriter() ' ''Dim PdfCopyProvider As New iTextSharp.text.pdf.PdfCopy(srcDoc, New System.IO.FileStream(TargetFile, System.IO.FileMode.Create)) ' 'PdfWriter.Close() ' 'srcDoc.Close() ' 'Reader.Close() ' 'PDFTarget.Close() ' Return True ' Catch ex As Exception ' VERAG_PROG_ALLGEMEIN.cErrorHandler.ERR(ex.Message, ex.StackTrace, System.Reflection.MethodInfo.GetCurrentMethod.Name ) ' End Try ' Return False 'End Function Public Function removePagesFromPdf_NEW(ByVal sourceFile As String, ByVal destinationFile As String, pagesToDelete As List(Of Integer), ByRef PagesLeft As Integer, delSource As Boolean) As Boolean Try PagesLeft = 0 Dim r As iTextSharp.text.pdf.PdfReader = New iTextSharp.text.pdf.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 If pagesToKeep.Count > 0 Then PagesLeft = r.NumberOfPages - pagesToKeep.Count If ExtractPdfPages_NEW(sourceFile, destinationFile, pagesToKeep) Then If delSource Then tryDelete(sourceFile) End If If False Then Using fs As FileStream = New FileStream(destinationFile, FileMode.Create, FileAccess.Write, FileShare.None) Using doc As iTextSharp.text.Document = New iTextSharp.text.Document() Dim w As iTextSharp.text.pdf.PdfWriter = iTextSharp.text.pdf.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 End If If delSource Then tryDelete(sourceFile) End If Return True Catch ex As Exception VERAG_PROG_ALLGEMEIN.cErrorHandler.ERR(ex.Message, ex.StackTrace, System.Reflection.MethodInfo.GetCurrentMethod.Name) End Try Return False 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 iTextSharp.text.pdf.PdfReader = New iTextSharp.text.pdf.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 iTextSharp.text.Document = New iTextSharp.text.Document() ' Using w As iTextSharp.text.pdf.PdfWriter = iTextSharp.text.pdf.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 btnDel.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 deleteElement(u.FILE_DOCID, u.FILE_ANHID) Then flpnl.Controls.Remove(u) initLocationViewer("", "PDF") If flpnl.Controls.Count > 0 Then DirectCast(flpnl.Controls(0), usrCntlSendungAnhangElement).CLICK_Me() End If End If End If Next End Sub Shared Function deleteElement(FILE_DOCID, FILE_ANHID, Optional showMessage = True) As Boolean If Not showMessage OrElse vbYes = MsgBox("Möchten Sie das Element löschen?", vbYesNoCancel) Then Dim DS As New VERAG_PROG_ALLGEMEIN.cDATENSERVER(FILE_DOCID) If DS.DELETE_COMPLETE AndAlso VERAG_PROG_ALLGEMEIN.cAvisoAnhaenge.DELETE(FILE_ANHID) Then Return True End If End If Return False End Function Private Sub frmSendungAnhangImport_Load(sender As Object, e As EventArgs) Handles Me.Load Me.Height = Screen.PrimaryScreen.WorkingArea.Height Me.Top = 0 VERAG_PROG_ALLGEMEIN.cProgramFunctions.spireLoadLicense() Try DirectCast(PdfViewer.Controls(0).Controls(0).Controls(0), ToolStrip).Items(0).Visible = False DirectCast(PdfViewer.Controls(0).Controls(0).Controls(0), ToolStrip).Items(1).Visible = False Catch ex As Exception End Try PdfViewer.CanSave = False 'WebBrowser1.Navigate("") flpnlAviso.Controls.Clear() flpnlSendungen.Controls.Clear() cboArt.Items.Clear() cboArt.Items.Add(New VERAG_PROG_ALLGEMEIN.MyListItem("", "")) cboArt.Items.Add(New VERAG_PROG_ALLGEMEIN.MyListItem("ATR-EUR1", "ATR-EUR1")) cboArt.Items.Add(New VERAG_PROG_ALLGEMEIN.MyListItem("Rechnung", "Rechnung")) cboArt.Items.Add(New VERAG_PROG_ALLGEMEIN.MyListItem("eFatura", "eFatura")) cboArt.Items.Add(New VERAG_PROG_ALLGEMEIN.MyListItem("CMR", "CMR")) cboArt.Items.Add(New VERAG_PROG_ALLGEMEIN.MyListItem("Ausfuhr", "Ausfuhr")) cboArt.Items.Add(New VERAG_PROG_ALLGEMEIN.MyListItem("Vorpapier", "Vorpapier")) cboArt.Items.Add(New VERAG_PROG_ALLGEMEIN.MyListItem("Packliste", "Packliste")) cboArt.Items.Add(New VERAG_PROG_ALLGEMEIN.MyListItem("Auftrag", "Auftrag")) cboArt.Items.Add(New VERAG_PROG_ALLGEMEIN.MyListItem("Dispoliste", "Dispoliste")) cboArt.Items.Add(New VERAG_PROG_ALLGEMEIN.MyListItem("Vorkasse", "Vorkasse")) cboArt.Items.Add(New VERAG_PROG_ALLGEMEIN.MyListItem("Überweisungsbeleg", "Überweisungsbeleg")) cboArt.Items.Add(New VERAG_PROG_ALLGEMEIN.MyListItem("Vollmacht", "Vollmacht")) cboArt.Items.Add(New VERAG_PROG_ALLGEMEIN.MyListItem("ATB-Nr", "ATB")) cboArt.Items.Add(New VERAG_PROG_ALLGEMEIN.MyListItem("ATA-Nr", "ATA")) cboArt.Items.Add(New VERAG_PROG_ALLGEMEIN.MyListItem("UID-Prüfung", "UID")) cboArt.Items.Add(New VERAG_PROG_ALLGEMEIN.MyListItem("EORI-Prüfung", "EORI")) cboArt.Items.Add(New VERAG_PROG_ALLGEMEIN.MyListItem("EORI-Antrag", "EORI_ANTRAG")) cboArt.Items.Add(New VERAG_PROG_ALLGEMEIN.MyListItem("Lieferschein", "Lieferschein")) cboArt.Items.Add(New VERAG_PROG_ALLGEMEIN.MyListItem("Ursprungszeugnis", "CoO")) If VERAG_PROG_ALLGEMEIN.cAllgemein.STAMMFILIALE = 7001 Then cboArt.Items.Add(New VERAG_PROG_ALLGEMEIN.MyListItem("GB - C88", "C88")) cboArt.Items.Add(New VERAG_PROG_ALLGEMEIN.MyListItem("GB - E2", "E2")) cboArt.Items.Add(New VERAG_PROG_ALLGEMEIN.MyListItem("GB - Atanak Rechnung", "Atanak_RG")) End If If VERAG_PROG_ALLGEMEIN.cAllgemein.FIRMA = "AMBAR" Then cboArt.Items.Add(New VERAG_PROG_ALLGEMEIN.MyListItem("EXPORT_DOCS", "EXPORT_DOCS")) End If cboArt.Items.Add(New VERAG_PROG_ALLGEMEIN.MyListItem("Sonstiges", "Sonstiges")) cboArt._TRANSLATE() initSendungen() ' cboSendungen.changeItem(-1) initFlpANH_LIST(flpnlAviso) End Sub Private Sub frmSendungAnhangImport_Shown(sender As Object, e As EventArgs) Handles Me.Shown txtSeiten.Focus() VERAG_PROG_ALLGEMEIN.cAllgemein._TRANSLATE(Me) End Sub Private Sub txtSeiten_KeyDown(sender As Object, e As KeyEventArgs) Handles txtSeiten.KeyDown, cboArt.KeyDown, txtBezeichnung.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 Dim abfertigungsArt = SQL.getValueTxtBySql("SELECT isnull([Abfertigungsbezeichnung],'') FROM [Abfertigungsarten] WHERE Abfertigungsart='" & s.tblSnd_Abfertigungsart_ID & "'", "FMZOLL") Dim empfTmp = "" If s.tblSnd_Empfaenger IsNot Nothing Then empfTmp = If(s.tblSnd_Empfaenger.Length > 15, s.tblSnd_Empfaenger.Substring(0, 15), s.tblSnd_Empfaenger) End If cboSendungen.Items.Add(New VERAG_PROG_ALLGEMEIN.MyListItem(cnt & ". " & empfTmp & " (" & abfertigungsArt & ")", s.tblSnd_SendungID)) cnt += 1 Next If SendungsId > 0 Then cboSendungen.changeItem(SendungsId) End Sub Private Sub cboSendungen_SelectedIndexChanged(sender As Object, e As EventArgs) Handles cboSendungen.SelectedIndexChanged btnSndDel.Enabled = (cboSendungen._value <> "") btnSndEdit.Enabled = (cboSendungen._value <> "") MyTextBox2.Text = cboSendungen.Text flpnlSendungen.Controls.Clear() initFlpANH_LIST(flpnlSendungen) End Sub Sub initFlpANH_LIST(Optional pnl As FlowLayoutPanel = Nothing, Optional keepActive As Boolean = True) Dim aktiveId = -1 For Each i As usrCntlSendungAnhangElement In flpnlAviso.Controls If i.ACTIVE Then aktiveId = i.FILE_ANHID End If Next 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 If pnl Is Nothing OrElse pnl Is flpnlSendungen Then flpnlSendungen.Controls.Clear() If pnl Is Nothing OrElse pnl Is flpnlAviso Then flpnlAviso.Controls.Clear() lblWarenbeichnung.Text = "" lblSendungsdetails.Text = "" lblAbsender.Text = "" lblEmpfaenger.Text = "" If cboSendungen._value <> "" Then Dim SND As New VERAG_PROG_ALLGEMEIN.cSendungen(cboSendungen._value) If If(SND.tblSnd_Colli, "") <> "" Then lblSendungsdetails.Text = SND.tblSnd_Colli & " Pk" If If(SND.tblSnd_Gewicht, "") <> "" Then lblSendungsdetails.Text &= If(lblSendungsdetails.Text <> "", "; ", "") & CDbl(SND.tblSnd_Gewicht.Replace(" ", "").Replace(Chr(160), "")).ToString("N1") & " kg" If If(SND.tblSnd_Gewicht, "") <> "" Then lblRgPreis.Text = (CDbl(SND.tblSnd_Warenwert).ToString("N2") & " " & If(SND.tblSnd_WarenwertWaehrung, "")).trim Else lblRgPreis.Text = "" End If lblWarenbeichnung.Text = If(SND.tblSnd_Warenbezeichnung, "") lblAbsender.Text = If(SND.tblSnd_Absender, "") lblEmpfaenger.Text = If(SND.tblSnd_Empfaenger, "") End If Dim SndNr = cboSendungen._value Dim ListToAdd_flpnlSendungen As New List(Of usrCntlSendungAnhangElement) Dim ListToAdd_flpnlAviso As New List(Of usrCntlSendungAnhangElement) For Each a In ANH_LIST If If(a.anh_SendungsId, 0) > 0 Then If SndNr <> "" AndAlso SndNr = a.anh_SendungsId Then If pnl Is Nothing OrElse pnl Is flpnlSendungen Then ListToAdd_flpnlSendungen.Add(addtoPnl(a, flpnlSendungen, keepActive, aktiveId, True)) End If End If Else If pnl Is Nothing OrElse pnl Is flpnlAviso Then ListToAdd_flpnlAviso.Add(addtoPnl(a, flpnlAviso, keepActive, aktiveId, True)) End If End If Next If pnl Is Nothing OrElse pnl Is flpnlSendungen Then flpnlSendungen.Controls.AddRange(ListToAdd_flpnlSendungen.ToArray) If pnl Is Nothing OrElse pnl Is flpnlAviso Then flpnlAviso.Controls.AddRange(ListToAdd_flpnlAviso.ToArray) 'If act Is Nothing Then initLocationViewer("", "PDF") End Sub Function addtoPnl(a As VERAG_PROG_ALLGEMEIN.cAvisoAnhaenge, pnl As FlowLayoutPanel, keepActive As Boolean, aktiveId As Integer, Optional ByVal returnElement As Boolean = False) As usrCntlSendungAnhangElement Dim USRCNTL As New usrCntlSendungAnhangElement USRCNTL.FILE_PATH = VERAG_PROG_ALLGEMEIN.cDATENSERVER.GET_PDFPath_BY_DocID_onlyPATH(a.anh_docId) 'USRCNTL.FILE_PATH = SQL.getValueTxtBySql("SELECT TOP (1) [coll_pfad] FROM [tblDatenarchiv_Collection] where coll_daId=" & a.anh_docId & " ORDER BY coll_date DESC", "FMZOLL") USRCNTL.FILE_NAME = a.anh_Name USRCNTL.FILE_TYPE = a.anh_Typ USRCNTL.FILE_ANHID = a.anh_id USRCNTL.FILE_DOCID = a.anh_docId If keepActive Then If a.anh_id = aktiveId Then USRCNTL.ACTIVE = True End If End If initElement(USRCNTL) If Not returnElement Then pnl.Controls.Add(USRCNTL) End If Return USRCNTL End Function 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 flpnlSendungen.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,,, False) 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 VERAG_PROG_ALLGEMEIN.cErrorHandler.ERR(ex.Message, ex.StackTrace, System.Reflection.MethodInfo.GetCurrentMethod.Name,, "Fehler Scan") 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 btnAdd.Click cntxt.Show(Cursor.Position) End Sub Private Sub Button4_Click(sender As Object, e As EventArgs) Handles btnSndDel.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 If filename = "" Then MsgBox("Dateiname konnte nicht ermittelt werden." & vbNewLine & F_listItem) Else ' 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, filename, F_listItem, "", Typ, da_id, anhId, destPath) Then addUsrcnlToPnl(destPath, da_id, anhId, filename, Typ) End If End If End If Next If flpnlAviso.Controls.Count > 0 Then DirectCast(flpnlAviso.Controls(0), usrCntlSendungAnhangElement).CLICK_Me() End If End Sub Public Shared Function addData_SendungAnhangFD(AvisoId) As Boolean 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 If filename = "" Then MsgBox("Dateiname konnte nicht ermittelt werden." & vbNewLine & F_listItem) Else ' 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 saveToDS(AvisoId, filename, F_listItem, "", Typ, da_id, anhId, destPath) End If End If Next Return True End If Return False End Function Public Function addData_SendungAnhang(Path, Optional addFlpnl = True) As Integer 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 If addFlpnl Then addUsrcnlToPnl(destPath, da_id, anhId, filename, Typ) End If End If Return anhId End Function Public Shared Function getFileTypeValid(extension, ByRef Typ) As Boolean Select Case extension.ToString.Replace(".", "").ToUpper Case "PDF" : Typ = "PDF" Case "XLS", "XLM", "XLSM", "XLSX", "CSV" : 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, ByRef fileName, sourcePath, Art, Typ, Optional ByRef da_id = -1, Optional ByRef 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.ffff"), "", 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 fileName = VERAG_PROG_ALLGEMEIN.cDATENSERVER.replaceInvalidCahr(fileName) 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 Public Shared Function quickScan(AvisoId, Optional SendungsId = Nothing) As Boolean Try 'If KdNr < 0 Then Exit Sub Dim frmScan As New VERAG_PROG_ALLGEMEIN.frmScan("QuickScan") frmScan.DefaultFileName = "Scan" ' Me._TEXT_PDF If frmScan.ShowDialog() = 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 frmSendungAnhangImport.saveToDS(AvisoId, Filename, TMP_Path, "", "PDF", da_id, anhId, destPath, SendungsId) Then Return True End If 'addUsrcnlToPnl(TMP_Path) End If End If Catch ex As Exception VERAG_PROG_ALLGEMEIN.cErrorHandler.ERR(ex.Message, ex.StackTrace, System.Reflection.MethodInfo.GetCurrentMethod.Name,, "Fehler QuickScan") End Try Return False End Function Private Sub WebBrowser1_DocumentCompleted(sender As Object, e As WebBrowserDocumentCompletedEventArgs) BrowserLoaded = True End Sub Private Sub Button1_Click_1(sender As Object, e As EventArgs) Handles btnAddSnd.Click Dim f As New frmAddSendnung(AvisoId) If f.ShowDialog(Me) = DialogResult.OK Then initSendungen() cboSendungen.changeItem(f.SendungsId) initFlpANH_LIST(flpnlSendungen) End If txtSeiten.Focus() End Sub Private Sub AusZwischenablageeinfügenToolStripMenuItem_Click(sender As Object, e As EventArgs) Handles AusZwischenablageeinfügenToolStripMenuItem.Click Dim data As IDataObject = Clipboard.GetDataObject If True Then 'data.GetDataPresent(DataFormats.FileDrop) Then For Each s As String In My.Computer.Clipboard.GetFileDropList() 'GetData(DataFormats.) 'data.GetData(DataFormats.FileDrop) 'DataFormats.FileDrop) ' Dim F_listItem As String = Path.Combine("c:\mynewpath", Path.GetFileName(s)) ' File.Copy(s, newFile) ' MsgBox(s) If IO.File.Exists(s) Then Dim fi As New FileInfo(s) Dim filename = fi.Name If filename = "" Then MsgBox("Dateiname konnte nicht ermittelt werden." & vbNewLine & s) Else Dim da_id = -1 Dim anhId = -1 Dim destPath = "" Dim Typ = "" If getFileTypeValid(fi.Extension.Replace(".", ""), Typ) Then If saveToDS(AvisoId, filename, s, "", Typ, da_id, anhId, destPath) Then addUsrcnlToPnl(destPath, da_id, anhId, filename, Typ) End If End If End If End If Next If flpnlAviso.Controls.Count > 0 Then DirectCast(flpnlAviso.Controls(0), usrCntlSendungAnhangElement).CLICK_Me() End If End Sub Private Sub txtSeiten_PreviewKeyDown(sender As Object, e As PreviewKeyDownEventArgs) Handles txtSeiten.PreviewKeyDown, cboArt.PreviewKeyDown, txtBezeichnung.PreviewKeyDown Try If e.Modifiers = Keys.Alt Then ' Sendungen durchlaufen If e.KeyCode = Keys.PageDown Then cboSendungen.SelectedIndex = cboSendungen.SelectedIndex + 1 End If If e.KeyCode = Keys.PageUp Then cboSendungen.SelectedIndex = cboSendungen.SelectedIndex - 1 End If If e.KeyCode = Keys.Add Then btnAddSnd.PerformClick() e.IsInputKey = True ' Damit Event abgefangen ist, sonst steht "+" im Feld 'e.Handled = True End If If e.KeyCode = Keys.Return Then btnSndEdit.PerformClick() e.IsInputKey = True ' Damit Event abgefangen ist, sonst steht "+" im Feld End If ElseIf e.Modifiers = Keys.Control Then ' PDFs durchlaufen If e.KeyCode = Keys.PageDown Then nextPDF() End If If e.KeyCode = Keys.PageUp Then prevPDF() End If If e.KeyCode = Keys.Add Then btnAddSnd.PerformClick() e.IsInputKey = True ' Damit Event abgefangen ist, sonst steht "+" im Feld ' e.Handled = True End If If e.KeyCode = Keys.Return Then btnSndEdit.PerformClick() e.IsInputKey = True ' Damit Event abgefangen ist, sonst steht "+" im Feld End If ElseIf e.Modifiers = Keys.Shift Then ' PDFs durchlaufen If e.KeyCode = Keys.PageDown Then nextART() End If If e.KeyCode = Keys.PageUp Then prevART() End If Else If e.KeyCode = Keys.PageDown Then PdfViewer.GoToPage(PdfViewer.CurrentPageNumber + 1) End If If e.KeyCode = Keys.PageUp Then PdfViewer.GoToPage(PdfViewer.CurrentPageNumber - 1) End If End If Catch ex As ArgumentOutOfRangeException 'out of range Catch ex As Exception VERAG_PROG_ALLGEMEIN.cErrorHandler.ERR(ex.Message, ex.StackTrace, System.Reflection.MethodInfo.GetCurrentMethod.Name) End Try End Sub Sub nextPDF() Dim bool_next = False For Each c As usrCntlSendungAnhangElement In flpnlAviso.Controls If bool_next Then c.CLICK_Me() : Exit Sub If c.ACTIVE Then bool_next = True End If Next If bool_next = False And flpnlAviso.Controls.Count > 0 Then DirectCast(flpnlAviso.Controls(0), usrCntlSendungAnhangElement).CLICK_Me() End If End Sub Sub prevPDF() Dim ctmp As usrCntlSendungAnhangElement = Nothing For Each c As usrCntlSendungAnhangElement In flpnlAviso.Controls If c.ACTIVE Then If ctmp IsNot Nothing Then ctmp.CLICK_Me() Exit Sub End If ctmp = c Next End Sub Sub nextART() If cboArt.Items Is Nothing Or cboArt.Items.Count = 0 Then Exit Sub Dim bool_next = False If cboArt.SelectedItem Is Nothing Then cboArt.SelectedItem = cboArt.Items(0) : Exit Sub If cboArt.Items.Count > cboArt.SelectedIndex + 1 Then cboArt.SelectedItem = cboArt.Items(cboArt.SelectedIndex + 1) End If End Sub Sub prevART() If cboArt.Items Is Nothing Or cboArt.Items.Count = 0 Then Exit Sub If cboArt.SelectedItem Is Nothing Then cboArt.SelectedItem = cboArt.Items(cboArt.Items.Count - 1) : Exit Sub If cboArt.SelectedIndex - 1 > 0 Then cboArt.SelectedItem = cboArt.Items(cboArt.SelectedIndex - 1) End If End Sub Private Sub Button6_Click(sender As Object, e As EventArgs) Handles btnSeitenLoeschen.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 Dim CurrentPageNumber = PdfViewer.CurrentPageNumber Dim pages = getPagesFromText() Dim cntl = getAcitveCntl() Dim cntlID = If(cntl IsNot Nothing, getAcitveCntl().FILE_ANHID, -1) For Each u As usrCntlSendungAnhangElement In flpnlAviso.Controls If u.ACTIVE Then If u.FILE_TYPE <> "PDF" Then Exit Sub Dim fi As New FileInfo(u.FILE_PATH) ' 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") Dim PagesLeft = 0 If vbYes = MsgBox("Möchten Sie die Seiten wirklich auf dem Dokument löschen?", vbYesNoCancel) Then 'If removePagesFromPdf_Spire(u.FILE_PATH, TMP_Path_New, getPagesFromText(), PagesLeft, False) Then If removePagesFromPdf_NEW(u.FILE_PATH, TMP_Path_New, getPagesFromText(), PagesLeft, False) Then If PagesLeft = 0 Then 'delFromDS(u.FILE_DOCID) deleteElement(u.FILE_DOCID, u.FILE_ANHID, False) 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 '------------- End If Next clearPnlAnfuegen() ' initSendungen() initFlpANH_LIST(, False) If flpnlAviso.Controls.Count > 0 Then If Not setAvtiveById(flpnlAviso, CurrentPageNumber, pages, cntlID) Then DirectCast(flpnlAviso.Controls(0), usrCntlSendungAnhangElement).CLICK_Me() End If End If End Sub Private Sub Button5_Click(sender As Object, e As EventArgs) Handles Button5.Click PdfViewer.Rotate(Spire.PdfViewer.Forms.RotateAngle.RotateAngle90) End Sub Private Sub cboArt_SelectedIndexChanged(sender As Object, e As EventArgs) Handles cboArt.SelectedIndexChanged If cboArt.Text.Replace("Sonstige", "") <> "" Then txtBezeichnung.Text = cboArt.Text.Replace("Rechnung", "Handelsrechnung") & ".pdf" End If End Sub Private Sub txtBezeichnung_TextChanged(sender As Object, e As EventArgs) End Sub Private Sub Button1_Click_2(sender As Object, e As EventArgs) Handles Button1.Click For Each u As usrCntlSendungAnhangElement In flpnlAviso.Controls If u.ACTIVE Then If u.FILE_TYPE <> "PDF" Then Exit Sub ' Dim fi As New FileInfo(u.FILE_PATH) Dim pdf As New PdfDocument() pdf.LoadFromFile(u.FILE_PATH) For Each p In pdf.Pages txtSeiten.Text = "1" btnAnfuegen.PerformClick() Next End If Next End Sub Private Sub Button7_Click(sender As Object, e As EventArgs) Handles btnSndEdit.Click If cboSendungen._value <> "" Then Dim SND As New VERAG_PROG_ALLGEMEIN.cSendungen(cboSendungen._value) If SND IsNot Nothing Then Dim f As New frmAddSendnung(AvisoId, SND) If f.ShowDialog(Me) = DialogResult.OK Then initSendungen() cboSendungen.changeItem(f.SendungsId) initFlpANH_LIST(flpnlSendungen) End If End If End If txtSeiten.Focus() End Sub Private Sub Button17_Click(sender As Object, e As EventArgs) Handles Button17.Click Dim frmGrayOut = VERAG_PROG_ALLGEMEIN.cMeineFunktionenAVISO.grayoutForm() Dim sv As New frmAddSendungsvermerkShort(AvisoId, SENDUNG_LIST(CURRENT_INDEX).tblSnd_SendungID) ', dgvSendungen.SelectedRows(0).Cells("tblSnd_SendungID").Value) sv.Location = Me.PointToClient(Cursor.Position) sv.ShowDialog(frmGrayOut) frmGrayOut.Close() sv.Close() ' initVermerke() End Sub Private Sub cbxAlternativePDFAnsicht_CheckedChanged(sender As Object, e As EventArgs) Handles cbxAlternativePDFAnsicht.CheckedChanged For Each p As usrCntlSendungAnhangElement In flpnlAviso.Controls If p.ACTIVE Then initLocationViewer(p.FILE_PATH, p.FILE_TYPE) : Exit Sub End If Next For Each p As usrCntlSendungAnhangElement In flpnlSendungen.Controls If p.ACTIVE Then initLocationViewer(p.FILE_PATH, p.FILE_TYPE) End If Next End Sub Public Sub AnhangVerschieben_Markierte(USRCNTL As usrCntlSendungAnhangElement) Dim f As New frmSendungAnhang_SendenAnSnd(SENDUNG_LIST) If f.ShowDialog(Me) = DialogResult.OK Then If USRCNTL.Parent Is flpnlAviso Then 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 = f.SendungsId ANH.SAVE() End If Next ElseIf USRCNTL.Parent Is flpnlSendungen Then For Each u As usrCntlSendungAnhangElement In flpnlSendungen.Controls If u.ACTIVE Then Dim ANH = New VERAG_PROG_ALLGEMEIN.cAvisoAnhaenge(u.FILE_ANHID) ANH.anh_SendungsId = f.SendungsId ANH.SAVE() End If Next End If clearPnlAnfuegen() ' initSendungen() initFlpANH_LIST() End If End Sub Public Sub PDFszusammenfuehren_Markierte(USRCNTL As usrCntlSendungAnhangElement) Try Dim ANH_LIST As New List(Of VERAG_PROG_ALLGEMEIN.cAvisoAnhaenge) Dim ANH_NEW As New VERAG_PROG_ALLGEMEIN.cAvisoAnhaenge If USRCNTL.Parent Is flpnlAviso Then For Each u As usrCntlSendungAnhangElement In flpnlAviso.Controls If u.ACTIVE Then Dim ANH = New VERAG_PROG_ALLGEMEIN.cAvisoAnhaenge(u.FILE_ANHID) If ANH.anh_Typ <> "PDF" Then MsgBox("Nur mit PDFs möglich!") : Exit Sub ANH_LIST.Add(ANH) ANH_NEW.anh_AvisoId = ANH.anh_AvisoId End If Next ElseIf USRCNTL.Parent Is flpnlSendungen Then For Each u As usrCntlSendungAnhangElement In flpnlSendungen.Controls If u.ACTIVE Then Dim ANH = New VERAG_PROG_ALLGEMEIN.cAvisoAnhaenge(u.FILE_ANHID) If ANH.anh_Typ <> "PDF" Then MsgBox("Nur mit PDFs möglich!") : Exit Sub ANH_LIST.Add(ANH) ANH_NEW.anh_AvisoId = ANH.anh_AvisoId ANH_NEW.anh_SendungsId = ANH.anh_SendungsId End If Next End If If ANH_LIST.Count > 0 Then Dim f As New frmSendungAnhangUmbenennenUmkateg(ANH_LIST(0).anh_Name, ANH_LIST(0).anh_Art) If f.ShowDialog = DialogResult.OK Then ANH_NEW.anh_Name = f.txtBezeichnung.Text ANH_NEW.anh_Art = f.cboArt._value ' FILE_NAME = f.txtBezeichnung.Text Else Exit Sub End If Dim files As New List(Of String) ' String() = New String() {"Sample1.pdf", "Sample2.pdf", "Sample3.pdf"} Dim outputFile As String = VERAG_PROG_ALLGEMEIN.DATENVERVER_OPTIONS.getTMPPath("Merge.pdf", ".pdf", True,, "Merge") ' "result.pdf" For Each r In ANH_LIST files.Add(VERAG_PROG_ALLGEMEIN.cDATENSERVER.GET_PDFPath_BY_DocID(r.anh_docId)) Next Dim doc As Spire.Pdf.PdfDocumentBase = Spire.Pdf.PdfDocument.MergeFiles(files.ToArray) doc.Save(outputFile, Spire.Pdf.FileFormat.PDF) If saveToDS(ANH_NEW.anh_AvisoId, ANH_NEW.anh_Name, outputFile, ANH_NEW.anh_Art, "PDF",, , , ANH_NEW.anh_SendungsId) Then 'addUsrcnlToPnl(destPath, da_id, anhId, filename, Typ) For Each anh In ANH_LIST anh.DELETE() Next End If 'ANH_NEW.SAVE() End If clearPnlAnfuegen() ' initSendungen() initFlpANH_LIST() Catch ex As Exception VERAG_PROG_ALLGEMEIN.cErrorHandler.ERR(ex.Message, ex.StackTrace, System.Reflection.MethodInfo.GetCurrentMethod.Name) End Try End Sub Private Sub flpnlAviso_DragDrop(sender As Object, e As DragEventArgs) Handles flpnlAviso.DragDrop If e.Data.GetDataPresent(DataFormats.FileDrop) Then Dim files() As String = e.Data.GetData(DataFormats.FileDrop) For Each path In files addData_SendungAnhang(path) Next ElseIf e.Data.GetDataPresent("FileGroupDescriptor") Then Dim FilePath = EmAilAttach(e) If FilePath <> "" Then addData_SendungAnhang(FilePath) End If End If End Sub Private Sub flpnlSendungen_DragDrop(sender As Object, e As DragEventArgs) Handles flpnlSendungen.DragDrop If cboSendungen._value = "" Then Exit Sub If cboSendungen._value = "-1" Then Exit Sub Try Dim added = False If e.Data.GetDataPresent(DataFormats.FileDrop) Then Dim files() As String = e.Data.GetData(DataFormats.FileDrop) For Each path In files Dim anhID = addData_SendungAnhang(path, False) If anhID > 0 Then added = True Dim ANH = New VERAG_PROG_ALLGEMEIN.cAvisoAnhaenge(anhID) Dim f As New frmSendungAnhangUmbenennenUmkateg(ANH.anh_Name, ANH.anh_Art) If f.ShowDialog = DialogResult.OK Then ANH.anh_SendungsId = cboSendungen._value ANH.anh_Name = f.txtBezeichnung.Text ANH.anh_Art = f.cboArt._value ANH.SAVE() 'Eintrag wird überschreiben End If End If Next ElseIf e.Data.GetDataPresent("FileGroupDescriptor") Then Dim FilePath = EmAilAttach(e) If FilePath <> "" Then Dim anhID = addData_SendungAnhang(FilePath, False) If anhID > 0 Then added = True Dim ANH = New VERAG_PROG_ALLGEMEIN.cAvisoAnhaenge(anhID) Dim f As New frmSendungAnhangUmbenennenUmkateg(ANH.anh_Name, ANH.anh_Art) If f.ShowDialog = DialogResult.OK Then ANH.anh_SendungsId = cboSendungen._value ANH.anh_Name = f.txtBezeichnung.Text ANH.anh_Art = f.cboArt._value ANH.SAVE() 'Eintrag wird überschreiben End If End If End If End If If added Then initFlpANH_LIST() ' initLocationViewer(ANH.FILE_PATH, ) 'If flpnlAviso.Controls.Count > 0 Then ' DirectCast(flpnlAviso.Controls(0), usrCntlSendungAnhangElement).CLICK_Me() 'End If End If Catch ex As Exception VERAG_PROG_ALLGEMEIN.cErrorHandler.ERR(ex.Message, ex.StackTrace, System.Reflection.MethodInfo.GetCurrentMethod.Name) End Try End Sub Function EmAilAttach(e As DragEventArgs) As String Try ' We have a embedded file. First lets try to get the file name out of memory Dim theStream As IO.Stream = CType(e.Data.GetData("FileGroupDescriptor"), IO.Stream) Dim fileGroupDescriptor(512) As Byte theStream.Read(fileGroupDescriptor, 0, 512) Dim fileName As System.Text.StringBuilder = New System.Text.StringBuilder("") Dim i As Integer = 76 While Not (fileGroupDescriptor(i) = 0) fileName.Append(Convert.ToChar(fileGroupDescriptor(i))) System.Math.Min(System.Threading.Interlocked.Increment(i), i - 1) End While theStream.Close() ' We should have the file name or if its an email, the subject line. Create our temp file based on the temp path and this info Dim myTempFile As String = IO.Path.GetTempPath & fileName.ToString ' Look to see if this is a email message. If so save that temporarily and get the temp file. If InStr(myTempFile, ".msg") > 0 Then Dim objOL As New Microsoft.Office.Interop.Outlook.Application Dim objMI As Microsoft.Office.Interop.Outlook.MailItem If objOL.ActiveExplorer.Selection.Count > 1 Then MsgBox("Es kann nur ein Element übertagen werden.", MsgBoxStyle.OkOnly Or MsgBoxStyle.Information, "Ein Element pro Vorgang") End If For Each objMI In objOL.ActiveExplorer.Selection() objMI.SaveAs(myTempFile) Exit For Next objOL = Nothing objMI = Nothing Else ' If its a attachment we need to pull the file itself out of memory Dim ms As IO.MemoryStream = CType(e.Data.GetData("FileContents", True), IO.MemoryStream) Dim FileBytes(CInt(ms.Length)) As Byte ' read the raw data into our variable ms.Position = 0 ms.Read(FileBytes, 0, CInt(ms.Length)) ms.Close() ' save the raw data into our temp file Dim fs As IO.FileStream = New IO.FileStream(myTempFile, IO.FileMode.OpenOrCreate, IO.FileAccess.Write) fs.Write(FileBytes, 0, FileBytes.Length) fs.Close() End If ' Make sure we have a actual file and also if we do make sure we erase it when done If IO.File.Exists(myTempFile) Then ' Assign the file name to the add dialog EmAilAttach = myTempFile Else EmAilAttach = String.Empty End If Catch ex As Exception VERAG_PROG_ALLGEMEIN.cErrorHandler.ERR(ex.Message, ex.StackTrace, System.Reflection.MethodInfo.GetCurrentMethod.Name) EmAilAttach = String.Empty End Try End Function Private Sub flpnlAviso_DragEnter(sender As Object, e As DragEventArgs) Handles flpnlAviso.DragEnter e.Effect = DragDropEffects.All End Sub Private Sub flpnlSnd_DragEnter(sender As Object, e As DragEventArgs) Handles flpnlSendungen.DragEnter e.Effect = DragDropEffects.All End Sub 'Private Sub flpnlSendungen_Paint(sender As Object, e As PaintEventArgs) Handles flpnlSendungen.Paint ' Dim files() As String = e.Data.GetData(DataFormats.FileDrop) ' For Each path In files ' addData_SendungAnhang(path) ' Next 'End Sub 'Private Sub txtBezeichnung_GotFocus(sender As Object, e As EventArgs) Handles txtBezeichnung.GotFocus ' txtBezeichnung.SelectAll() 'End Sub 'Dim angle = 0 'Private Sub Button5_Click(sender As Object, e As EventArgs) Handles Button5.Click ' angle += 90 ' If angle > 270 Then ' angle = 0 ' End If ' PdfViewer.Rotate(angle) 'End Sub End Class