2148 lines
89 KiB
VB.net
2148 lines
89 KiB
VB.net
|
|
Imports itextsharp.text
|
|
Imports System.IO
|
|
Imports Spire.Pdf
|
|
Imports Spire.Pdf.Conversion.Compression
|
|
Imports Spire.Pdf.Exporting
|
|
Imports VERAG_PROG_ALLGEMEIN
|
|
|
|
Public Class frmSendungAnhangImport
|
|
|
|
Public AvisoId As Integer
|
|
Public SendungsId As Integer
|
|
Public LKWOnly As Boolean = False
|
|
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, Optional LKWOnly = False)
|
|
|
|
' Dieser Aufruf ist für den Designer erforderlich.
|
|
InitializeComponent()
|
|
Me.AvisoId = AvisoId
|
|
Me.SendungsId = SendungsId
|
|
Me.LKWOnly = LKWOnly
|
|
' 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.ME_COMPRESS, Sub(docId, anhId)
|
|
compressElement(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 <> "")
|
|
If loc <> "" Then
|
|
Dim data = File.ReadAllBytes(loc)
|
|
Dim pdfStream = New MemoryStream(data)
|
|
PdfViewer.LoadFromStream(pdfStream)
|
|
pdfStream.Close()
|
|
End If
|
|
|
|
|
|
'NOT WORKING
|
|
'PdfViewer.LoadFromFile(loc) NOT WORKING
|
|
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 = If(LKWOnly, -1, 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()
|
|
|
|
If LKWOnly Then
|
|
initFlpANH_LIST()
|
|
Else
|
|
initFlpANH_LIST(flpnlSendungen, False)
|
|
End If
|
|
|
|
|
|
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 = If(LKWOnly, -1, 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 Spire.Pdf.PdfDocument()
|
|
pdf.LoadFromFile(sourceFile)
|
|
' Dim r As PdfReader = New PdfReader(sourceFile)
|
|
Dim pagesToKeep As New List(Of Integer)
|
|
For p = 0 To pdf.Pages.Count - 1 ' r.NumberOfPages
|
|
Dim del = False
|
|
For Each i In pagesToDelete
|
|
If p = (i - 1) Then
|
|
del = True : Exit For
|
|
End If
|
|
Next
|
|
If Not del Then
|
|
pagesToKeep.Add(p)
|
|
End If
|
|
Next
|
|
|
|
|
|
Dim pdf1 As New Spire.Pdf.PdfDocument()
|
|
Dim page As 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 Spire.Pdf.PdfDocument()
|
|
pdf.LoadFromFile(sourceFile)
|
|
|
|
Dim pdf1 As New Spire.Pdf.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
|
|
If SourceFile.Contains(" ") Then SourceFile = SourceFile
|
|
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 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
|
|
|
|
Shared Function compressElement(FILE_DOCID, FILE_ANHID, Optional showMessage = True) As Boolean
|
|
|
|
If Not showMessage OrElse vbYes = MsgBox("Möchten Sie das Element komprimieren? Durch Minderung der Datenqualität gehen Informationen eventuell verloren.", vbYesNoCancel) Then
|
|
Try
|
|
|
|
Dim DS As New VERAG_PROG_ALLGEMEIN.cDATENSERVER(FILE_DOCID)
|
|
|
|
'Load a PDF document while initializing the PdfCompressor object
|
|
Dim compressor As Spire.Pdf.Conversion.Compression.PdfCompressor = New Spire.Pdf.Conversion.Compression.PdfCompressor(DS.GET_TOP1_PATH)
|
|
'Get text compression options
|
|
Dim textCompression As TextCompressionOptions = compressor.Options.TextCompressionOptions
|
|
'Compress fonts
|
|
textCompression.CompressFonts = True
|
|
'Unembed fonts
|
|
textCompression.UnembedFonts = True
|
|
'Get image compression options
|
|
Dim imageCompression As ImageCompressionOptions = compressor.Options.ImageCompressionOptions
|
|
'Set the compressed image quality
|
|
imageCompression.ImageQuality = ImageQuality.High
|
|
|
|
'Resize images
|
|
imageCompression.ResizeImages = True
|
|
'Compress images
|
|
imageCompression.CompressImage = True
|
|
'Save the compressed document to file
|
|
compressor.CompressToFile(DS.GET_TOP1_PATH)
|
|
|
|
'Load the pdf document
|
|
Dim doc As New Spire.Pdf.PdfDocument()
|
|
|
|
doc.LoadFromFile(DS.GET_TOP1_PATH)
|
|
'Compress the content in document
|
|
CompressContent(doc)
|
|
|
|
'Compress the images in document
|
|
CompressImage(doc)
|
|
|
|
'Save the document
|
|
doc.SaveToFile(DS.GET_TOP1_PATH)
|
|
|
|
'View the pdf document
|
|
PDFDocumentViewer(DS.GET_TOP1_PATH)
|
|
|
|
'Dim Convert = New PdfGrayConverter("C:\Users\DEVELOPER1\Desktop\CompressDocument_result2.pdf")
|
|
'Convert.ToGrayPdf("C:\Users\DEVELOPER1\Desktop\CompressDocument_result3.pdf")
|
|
|
|
Catch ex As Exception
|
|
VERAG_PROG_ALLGEMEIN.cErrorHandler.ERR(ex.Message, ex.StackTrace, System.Reflection.MethodInfo.GetCurrentMethod.Name,, "Fehler QuickScan")
|
|
End Try
|
|
End If
|
|
Return False
|
|
End Function
|
|
Private Shared Sub CompressContent(ByVal doc As Spire.Pdf.PdfDocument)
|
|
'Disable the incremental update
|
|
doc.FileInfo.IncrementalUpdate = False
|
|
|
|
'Set the compression level to best
|
|
doc.CompressionLevel = PdfCompressionLevel.Best
|
|
End Sub
|
|
|
|
Private Shared Sub CompressImage(ByVal doc As Spire.Pdf.PdfDocument)
|
|
Try
|
|
'Disable the incremental update
|
|
doc.FileInfo.IncrementalUpdate = False
|
|
|
|
'Traverse all pages
|
|
For Each page As PdfPageBase In doc.Pages
|
|
If page IsNot Nothing Then
|
|
|
|
|
|
|
|
|
|
|
|
If page.ImagesInfo IsNot Nothing Then
|
|
For Each info As PdfImageInfo In page.ImagesInfo
|
|
page.TryCompressImage(info.Index)
|
|
Next info
|
|
End If
|
|
End If
|
|
Next page
|
|
|
|
Catch ex As Exception
|
|
VERAG_PROG_ALLGEMEIN.cErrorHandler.ERR(ex.Message, ex.StackTrace, System.Reflection.MethodInfo.GetCurrentMethod.Name,, "Fehler QuickScan")
|
|
End Try
|
|
End Sub
|
|
Private Shared Sub PDFDocumentViewer(ByVal fileName As String)
|
|
Try
|
|
Process.Start(fileName)
|
|
Catch
|
|
End Try
|
|
End Sub
|
|
|
|
|
|
|
|
Private Sub frmSendungAnhangImport_Load(sender As Object, e As EventArgs) Handles Me.Load
|
|
|
|
Me.Height = Screen.PrimaryScreen.WorkingArea.Height
|
|
Me.Top = 0
|
|
|
|
'If Not VERAG_PROG_ALLGEMEIN.cProgramFunctions.spireLoadLicense() Then MsgBox("Fehler beim Laden der SPIRE-Lizenz")
|
|
|
|
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"))
|
|
|
|
If LKWOnly Then
|
|
pnlSendung.Enabled = False
|
|
End If
|
|
|
|
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_SIZE = a.anh_size.ToString("N0") & " KB"
|
|
|
|
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 = "", Optional Size = "")
|
|
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
|
|
USRCNTL.FILE_SIZE = Size
|
|
|
|
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, Optional crmId = 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, crmId)
|
|
If Not ANH.SAVE Then MsgBox("Fehler beim Anhang speichern!") : Return False
|
|
anhId = ANH.anh_id
|
|
Return True
|
|
End Function
|
|
|
|
Private Shared Function scantoAvisoDS(AvisoId, SendungsId, Art) As Boolean
|
|
Try
|
|
'If KdNr < 0 Then Exit Sub
|
|
Dim frmScan As New VERAG_PROG_ALLGEMEIN.frmScan(Art)
|
|
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
|
|
|
|
Public Shared Function quickScanWithMenue(AvisoId, Optional SendungsId = Nothing) As Boolean
|
|
Return scantoAvisoDS(AvisoId, SendungsId, "")
|
|
End Function
|
|
|
|
Public Shared Function quickScan(AvisoId, Optional SendungsId = Nothing) As Boolean
|
|
Return scantoAvisoDS(AvisoId, SendungsId, "QuickScan")
|
|
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 System.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 Spire.Pdf.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 System.IO.Stream = CType(e.Data.GetData("FileGroupDescriptor"), System.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 = System.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 System.IO.MemoryStream = CType(e.Data.GetData("FileContents", True), System.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 System.IO.FileStream = New System.IO.FileStream(myTempFile, System.IO.FileMode.OpenOrCreate, System.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 System.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 |