Files
AVISO/Aviso/Anhänge/frmSendungAnhangImport.vb

2021 lines
84 KiB
VB.net

'Imports iTextSharp.text.pdf
'Imports iTextSharp.text
Imports System.IO
Imports Spire.Pdf
Imports VERAG_PROG_ALLGEMEIN
'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()
Dim list As New cAvisoAnhangsarten_LIST(True, VERAG_PROG_ALLGEMEIN.cAllgemein.FIRMA, VERAG_PROG_ALLGEMEIN.cAllgemein.STAMMFILIALE)
cboArt.Items.Add(New VERAG_PROG_ALLGEMEIN.MyListItem("", ""))
For Each r In list.LIST
cboArt.Items.Add(New VERAG_PROG_ALLGEMEIN.MyListItem(r.aa_name, r.aa_bezeichnung))
Next
'cboArt.Items.Clear()
'cboArt.Items.Add(New VERAG_PROG_ALLGEMEIN.MyListItem("", ""))
'cboArt.Items.Add(New VERAG_PROG_ALLGEMEIN.MyListItem("ATR", "ATR-EUR1"))
'cboArt.Items.Add(New VERAG_PROG_ALLGEMEIN.MyListItem("EUR1", "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("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
'cboArt.Items.Add(New VERAG_PROG_ALLGEMEIN.MyListItem("GGED-D", "GGED_D"))
'cboArt.Items.Add(New VERAG_PROG_ALLGEMEIN.MyListItem("GGED-PP", "GGED_PP"))
'cboArt.Items.Add(New VERAG_PROG_ALLGEMEIN.MyListItem("GGED-P", "GGED_P"))
'cboArt.Items.Add(New VERAG_PROG_ALLGEMEIN.MyListItem("GGED-A", "GED_A"))
'cboArt.Items.Add(New VERAG_PROG_ALLGEMEIN.MyListItem("Phytosanitary Certificate", "PHYTO"))
'cboArt.Items.Add(New VERAG_PROG_ALLGEMEIN.MyListItem("Konformitätserklärung", "CONFORM"))
'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 fi As New FileInfo(sourcePath)
Dim ANH As New VERAG_PROG_ALLGEMEIN.cAvisoAnhaenge(AvisoId, fileName, DS.da_id, Art, Typ, SendungsId,, fi.Length)
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 & VERAG_PROG_ALLGEMEIN.cDATENSERVER.replaceInvalidCahr(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