From a8207eeb0940cecff572d115784ca410f49062ce Mon Sep 17 00:00:00 2001 From: "d.breimaier" Date: Thu, 27 Mar 2025 10:31:19 +0100 Subject: [PATCH] ustva --- SDL/USTV/frmMDM_USTVAntrag.vb | 90 ++++++++++++++++++++++++++++------- 1 file changed, 72 insertions(+), 18 deletions(-) diff --git a/SDL/USTV/frmMDM_USTVAntrag.vb b/SDL/USTV/frmMDM_USTVAntrag.vb index 3b5c2917..13536885 100644 --- a/SDL/USTV/frmMDM_USTVAntrag.vb +++ b/SDL/USTV/frmMDM_USTVAntrag.vb @@ -3,6 +3,7 @@ Imports System.IO Imports System.Reflection Imports System.Windows.Documents Imports com.sun.tools.corba.se.idl.constExpr +Imports IKVM.internal Imports itextsharp.text.pdf Imports itextsharp.text.pdf.parser Imports Microsoft.Office.Interop @@ -1667,7 +1668,7 @@ Public Class frmMDM_USTVAntrag If e.RowIndex >= 0 AndAlso e.ColumnIndex >= 0 Then Dim pdf As String = "" - pdf = getPDF(dgvUSTVPositionen.Rows(e.RowIndex).Cells("UStVPo_SchnittstellenNr").Value, dgvUSTVPositionen.Rows(e.RowIndex).Cells("UStVPo_ReNr").Value, dgvUSTVPositionen.Rows(e.RowIndex).Cells("UStVPo_ReDat").Value, dgvUSTVPositionen.Rows(e.RowIndex).Cells("UStVPo_daId").Value, False) + pdf = getPDF(dgvUSTVPositionen.Rows(e.RowIndex).Cells("UStVPo_SchnittstellenNr").Value, dgvUSTVPositionen.Rows(e.RowIndex).Cells("UStVPo_ReNr").Value, dgvUSTVPositionen.Rows(e.RowIndex).Cells("UStVPo_ReDat").Value, dgvUSTVPositionen.Rows(e.RowIndex).Cells("UStVPo_daId").Value, False, False) If IO.File.Exists(pdf) Then Process.Start(pdf) @@ -1723,7 +1724,7 @@ Public Class frmMDM_USTVAntrag For Each row As DataGridViewRow In dgvUSTVPositionen.SelectedRows.Cast(Of DataGridViewRow)().OrderBy(Function(dgvr) dgvr.Index) Dim pdf As String = "" - pdf = getPDF(row.Cells("UStVPo_SchnittstellenNr").Value, row.Cells("UStVPo_ReNr").Value, row.Cells("UStVPo_ReDat").Value, row.Cells("UStVPo_daId").Value, IIf(nummerierung, row.Cells("UStVPo_ID").Value, -1)) + pdf = getPDF(row.Cells("UStVPo_SchnittstellenNr").Value, row.Cells("UStVPo_ReNr").Value, row.Cells("UStVPo_ReDat").Value, row.Cells("UStVPo_daId").Value, IIf(nummerierung, row.Cells("UStVPo_ID").Value, -1), IIf(row.Cells("UStVPo_Leistender").Value.ToString.ToLower.Contains("wag"), True, False)) If pdf <> "" Then list.Add(pdf) @@ -1772,7 +1773,7 @@ Public Class frmMDM_USTVAntrag End Sub - Private Function getPDF(schnittstellenNr, ReNr, ReDat, daId, nummierung) As String + Private Function getPDF(schnittstellenNr, ReNr, ReDat, daId, nummierung, PDFisProtected) As String Dim schnnittstellenNr = schnittstellenNr @@ -1805,6 +1806,7 @@ Public Class frmMDM_USTVAntrag If nummierung > 0 Then Dim pdfReader As itextsharp.text.pdf.PdfReader = New itextsharp.text.pdf.PdfReader(path) + PdfReader.unethicalreading = True Dim fm As New VERAG_PROG_ALLGEMEIN.cFormularManager Dim listTowrite As New List(Of VERAG_PROG_ALLGEMEIN.cPDFWriteValues) @@ -1874,17 +1876,37 @@ Public Class frmMDM_USTVAntrag End If - If nummierung > 0 Then - Dim listTowrite As New List(Of VERAG_PROG_ALLGEMEIN.cPDFWriteValues) - listTowrite.Add(New VERAG_PROG_ALLGEMEIN.cPDFWriteValues(nummierung, x, y, width, height, mFont, mSize, , itextsharp.text.Element.ALIGN_LEFT, page)) - End If + + Next srcDoc.Close() pdfReader.Close() - Return TMP_Path_New + If nummierung > 0 Then + + Dim pdfReadernNew As itextsharp.text.pdf.PdfReader = New itextsharp.text.pdf.PdfReader(TMP_Path_New) + pdfReadernNew.unethicalreading = True + + Dim fm As New VERAG_PROG_ALLGEMEIN.cFormularManager + Dim listTowrite As New List(Of VERAG_PROG_ALLGEMEIN.cPDFWriteValues) + + For page As Integer = 1 To pdfReadernNew.NumberOfPages + listTowrite.Add(New VERAG_PROG_ALLGEMEIN.cPDFWriteValues(nummierung, x, y - 6, width, height, mFont, mSize, , itextsharp.text.Element.ALIGN_LEFT, page)) + Next + + pdfReader.Close() + + Dim PdfTmp = fm.fillPDFVorhandenesLokalesPDF_Path(TMP_Path_New, listTowrite, , , , ,) + Return PdfTmp + Else + + + Return TMP_Path_New + + End If + @@ -1897,23 +1919,55 @@ Public Class frmMDM_USTVAntrag Dim DS As New VERAG_PROG_ALLGEMEIN.cDATENSERVER(dsID) If nummierung > 0 Then - Dim pdfReader As itextsharp.text.pdf.PdfReader = New itextsharp.text.pdf.PdfReader(DS.GET_TOP1_PATH) + 'wenn PDF nicht beschreibbar, dann mittels Stamp! + If PDFisProtected Then - Dim fm As New VERAG_PROG_ALLGEMEIN.cFormularManager - Dim listTowrite As New List(Of VERAG_PROG_ALLGEMEIN.cPDFWriteValues) + Dim tempPathNew = VERAG_PROG_ALLGEMEIN.DATENVERVER_OPTIONS.getTMPPath(DS.da_name & "_modified", ".pdf", True, False, "USTVA") - For page As Integer = 1 To pdfReader.NumberOfPages - listTowrite.Add(New VERAG_PROG_ALLGEMEIN.cPDFWriteValues(nummierung, x, y, width, height, mFont, mSize, , itextsharp.text.Element.ALIGN_LEFT, page)) - Next + Dim pdfReader As itextsharp.text.pdf.PdfReader = New itextsharp.text.pdf.PdfReader(DS.GET_TOP1_PATH) + PdfReader.unethicalreading = True - pdfReader.Close() + Dim fs = New FileStream(tempPathNew, FileMode.Create, FileAccess.Write, FileShare.None) + Dim stamper = New PdfStamper(pdfReader, fs) + + For page As Integer = 1 To pdfReader.NumberOfPages + Dim canvas As PdfContentByte = stamper.GetOverContent(page) + Dim bf As BaseFont = BaseFont.CreateFont(BaseFont.HELVETICA, BaseFont.WINANSI, BaseFont.EMBEDDED) + canvas.SetFontAndSize(bf, 12) + canvas.BeginText() + 'The origin (0,0) is at the bottom-left corner of the page and represent coordinates in points!!!!!!! + canvas.ShowTextAligned(PdfContentByte.ALIGN_CENTER, nummierung, 350, 550, 0) + canvas.EndText() + 'listTowrite.Add(New VERAG_PROG_ALLGEMEIN.cPDFWriteValues(nummierung, x, y, width, height, mFont, mSize, , itextsharp.text.Element.ALIGN_LEFT, page)) + Next + stamper.Close() + pdfReader.Close() + + Return tempPathNew + + Else + + + Dim pdfReader As itextsharp.text.pdf.PdfReader = New itextsharp.text.pdf.PdfReader(DS.GET_TOP1_PATH) + + Dim fm As New VERAG_PROG_ALLGEMEIN.cFormularManager + Dim listTowrite As New List(Of VERAG_PROG_ALLGEMEIN.cPDFWriteValues) + + For page As Integer = 1 To pdfReader.NumberOfPages + listTowrite.Add(New VERAG_PROG_ALLGEMEIN.cPDFWriteValues(nummierung, x, y, width, height, mFont, mSize, , itextsharp.text.Element.ALIGN_LEFT, page)) + Next + + pdfReader.Close() + + Dim PdfTmp = fm.fillPDFVorhandenesLokalesPDF_Path(DS.GET_TOP1_PATH, listTowrite, , , , ,) + Return PdfTmp + + End If - Dim PdfTmp = fm.fillPDFVorhandenesLokalesPDF_Path(DS.GET_TOP1_PATH, listTowrite, , , , ,) - Return PdfTmp Else - Return DS.GET_TOP1_PATH + Return DS.GET_TOP1_PATH End If