This commit is contained in:
2020-01-08 15:01:48 +01:00
parent c860c222c7
commit e879fb6881
89 changed files with 8692 additions and 3571 deletions

View File

@@ -81,14 +81,21 @@ Public Class frmSendungAnhangImport
PdfViewer.CloseDocument()
WebBrowser.Navigate("")
If typ = "PDF" Then
WebBrowser.Visible = False
PdfViewer.Visible = (loc <> "")
PdfViewer.LoadFromFile(loc)
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
End Sub
Function getAcitvePnl() As FlowLayoutPanel
@@ -141,10 +148,10 @@ Public Class frmSendungAnhangImport
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 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)
'-------------
@@ -156,7 +163,8 @@ Public Class frmSendungAnhangImport
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_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)
@@ -213,7 +221,7 @@ Public Class frmSendungAnhangImport
End If
Next
Catch ex As Exception
MsgBox(ex.Message)
MsgBox(ex.Message & ex.StackTrace)
End Try
Return False
End Function
@@ -232,7 +240,7 @@ Public Class frmSendungAnhangImport
End If
Next
Catch ex As Exception
MsgBox(ex.Message)
MsgBox(ex.Message & ex.StackTrace)
End Try
Return False
End Function
@@ -556,6 +564,34 @@ Public Class frmSendungAnhangImport
Return True
End Function
Public Function ExtractPdfPages_NEW(ByVal SourceFile As String, ByVal TargetFile As String, pagesToExtract As List(Of Integer)) As Boolean
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!") : Return False
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
MsgBox(ex.Message & ex.StackTrace)
End Try
Return False
End Function
'Public Function ExtractPdfPages(ByVal SourceFile As String, ByVal TargetFile As String, ByVal IntStr As Integer, ByVal IntEnd As Integer)
' Try
' Dim impPage As iTextSharp.text.pdf.PdfImportedPage = Nothing
@@ -582,6 +618,58 @@ Public Class frmSendungAnhangImport
'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
MsgBox(ex.Message & ex.StackTrace)
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
@@ -710,9 +798,16 @@ Public Class frmSendungAnhangImport
cboArt.Items.Add(New VERAG_PROG_ALLGEMEIN.MyListItem("Rechnung", "Rechnung"))
cboArt.Items.Add(New VERAG_PROG_ALLGEMEIN.MyListItem("CMR", "CMR"))
cboArt.Items.Add(New VERAG_PROG_ALLGEMEIN.MyListItem("Ausfuhr", "Ausfuhr"))
cboArt.Items.Add(New VERAG_PROG_ALLGEMEIN.MyListItem("Vorpapier", "Vorpapier"))
cboArt.Items.Add(New VERAG_PROG_ALLGEMEIN.MyListItem("Packliste", "Packliste"))
cboArt.Items.Add(New VERAG_PROG_ALLGEMEIN.MyListItem("Auftrag", "Auftrag"))
cboArt.Items.Add(New VERAG_PROG_ALLGEMEIN.MyListItem("Vorpapier", "Vorpapier"))
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("Sonstiges", "Sonstiges"))
initSendungen()
@@ -746,6 +841,10 @@ Public Class frmSendungAnhangImport
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()
@@ -769,9 +868,20 @@ Public Class frmSendungAnhangImport
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).ToString("N1") & " kg"
lblWarenbeichnung.Text = If(SND.tblSnd_Warenbezeichnung, "")
lblAbsender.Text = If(SND.tblSnd_Absender, "")
lblEmpfaenger.Text = If(SND.tblSnd_Empfaenger, "")
End If
For Each a In ANH_LIST
If If(a.anh_SendungsId, 0) > 0 Then
If cboSendungen._value <> "" AndAlso cboSendungen._value = a.anh_SendungsId Then
If pnl Is Nothing OrElse pnl Is flpnlSendungen Then
@@ -899,7 +1009,7 @@ Public Class frmSendungAnhangImport
cntxt.Show(Cursor.Position)
End Sub
Private Sub Button4_Click(sender As Object, e As EventArgs) Handles Button4.Click
Private Sub Button4_Click(sender As Object, e As EventArgs) Handles btnSndDel.Click
deleteActiveElement(flpnlSendungen)
End Sub
@@ -1034,6 +1144,14 @@ Public Class frmSendungAnhangImport
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
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()
@@ -1045,6 +1163,10 @@ Public Class frmSendungAnhangImport
btnAddSnd.PerformClick()
e.IsInputKey = True ' Damit Event abgefangen ist, sonst steht "+" im Feld
End If
If e.KeyCode = Keys.Return Then
btnSndEdit.PerformClick()
e.IsInputKey = True ' Damit Event abgefangen ist, sonst steht "+" im Feld
End If
Else
If e.KeyCode = Keys.PageDown Then
PdfViewer.GoToPage(PdfViewer.CurrentPageNumber + 1)
@@ -1056,7 +1178,7 @@ Public Class frmSendungAnhangImport
Catch ex As ArgumentOutOfRangeException
'out of range
Catch ex As Exception
MsgBox(ex.Message)
MsgBox(ex.Message & ex.StackTrace)
End Try
End Sub
@@ -1068,6 +1190,9 @@ Public Class frmSendungAnhangImport
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()
@@ -1102,7 +1227,8 @@ Public Class frmSendungAnhangImport
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_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)
@@ -1166,6 +1292,47 @@ Public Class frmSendungAnhangImport
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(System.Windows.Forms.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
'Private Sub txtBezeichnung_GotFocus(sender As Object, e As EventArgs) Handles txtBezeichnung.GotFocus
' txtBezeichnung.SelectAll()