zugpferd prüfungstool
This commit is contained in:
@@ -5,7 +5,7 @@ Imports VERAG_PROG_ALLGEMEIN
|
||||
|
||||
Public Class cAutomailversand
|
||||
|
||||
Sub sendMailSammelrechnung(_Rechnungsdatum As Date, SammelrechungArt As Integer, FirmaID As Integer, Optional KundenNr As Integer = -1, Optional mailoeffnen As Boolean = False)
|
||||
Sub sendMailSammelrechnung(_Rechnungsdatum As Date, SammelrechungArt As Integer, FirmaID As Integer, Optional KundenNr As Integer = -1, Optional mailoeffnen As Boolean = False, Optional faktGruppe As String = "")
|
||||
Try
|
||||
Dim sql As New VERAG_PROG_ALLGEMEIN.SQL
|
||||
|
||||
@@ -29,7 +29,7 @@ Public Class cAutomailversand
|
||||
LEFT JOIN tblKundenErweitert on tblKundenErweitert.kde_KundenNr = Rechnungsausgang.RechnungsKundenNr
|
||||
INNER JOIN Währungstabelle on LandKz = Rechnungsausgang.RechnungsLandKz
|
||||
WHERE Rechnungsausgang.Status IN (2) and Rechnungsausgang.Automailversand_sent is null And Rechnungsausgang.Firma_ID = '" & FirmaID & "' And Rechnungsausgang.Sammelrechnung = '" & SammelrechungArt & "' And CONVERT(DATE,Rechnungsausgang.Rechnungsdatum,104) = '" & _Rechnungsdatum.ToShortDateString & "'
|
||||
and isnull(Rechnungsausgang.Automailversand,0) = 1 and RechnungsNr > 0 " & IIf(KundenNr > 0, " AND RechnungsKundenNr = " & KundenNr, "") & "
|
||||
and isnull(Rechnungsausgang.Automailversand,0) = 1 and Rechnungsausgang.Automailversand_sent = NULL and RechnungsNr > 0 " & IIf(KundenNr > 0, " AND RechnungsKundenNr = " & KundenNr, "") & "
|
||||
GROUP BY RechnungsNr, RechnungsKundenNr,isnull(tblKundenErweitert.kde_keineMWSt,0),RechnungsLandKz, MitgliedslandEU
|
||||
ORDER BY RechnungsLandKz, RechnungsKundenNr"
|
||||
|
||||
@@ -39,7 +39,7 @@ Public Class cAutomailversand
|
||||
LEFT JOIN tblKundenErweitert on tblKundenErweitert.kde_KundenNr = Rechnungsausgang.RechnungsKundenNr
|
||||
INNER JOIN Währungstabelle on LandKz = Rechnungsausgang.RechnungsLandKz
|
||||
WHERE Rechnungsausgang.Status IN (2) and Rechnungsausgang.Automailversand_sent is null And Rechnungsausgang.Firma_ID = '" & FirmaID & "' And Rechnungsausgang.Sammelrechnung = '" & SammelrechungArt & "' And CONVERT(DATE,Rechnungsausgang.Rechnungsdatum,104) = '" & _Rechnungsdatum.ToShortDateString & "'
|
||||
and isnull(Rechnungsausgang.Automailversand,0) = 1 and RechnungsNr > 0 " & IIf(KundenNr > 0, " AND RechnungsKundenNr = " & KundenNr, "") & "
|
||||
and isnull(Rechnungsausgang.Automailversand,0) = 1 and Rechnungsausgang.Automailversand_sent = NULL and RechnungsNr > 0 and FakturierungsGruppe = '" & faktGruppe & "'" & IIf(KundenNr > 0, " AND RechnungsKundenNr = " & KundenNr, "") & "
|
||||
GROUP BY RechnungsNr, RechnungsKundenNr,tblKundenErweitert.kde_SR_IM_EX
|
||||
ORDER BY RechnungsLandKz, RechnungsKundenNr"
|
||||
|
||||
@@ -155,26 +155,31 @@ Public Class cAutomailversand
|
||||
|
||||
Dim listPDFs As New List(Of String)
|
||||
Dim showError As Boolean = False
|
||||
|
||||
showError = mailoeffnen 'bei MailÖffnen fehler anzeigen!
|
||||
|
||||
setEmailText(row, FirmaID, RechnungsNr, Mailsubject, HTMLMail, SammelrechungArt, dt, BelegartenNr)
|
||||
If do_SR(row.Item("RechnungsKundenNr"), FirmaID, SammelrechungArt, Rechnungsdatum, RechnungsNr, DruckDatumZeit, MDMKopiedrucken, listPDFs,,,, showError, AbfertigungsNr) Then
|
||||
loadAndSetAnhaenge(SR_DT, ATTACHMENTS, listPDFs)
|
||||
If do_SR(row.Item("RechnungsKundenNr"), FirmaID, SammelrechungArt, Rechnungsdatum, RechnungsNr, DruckDatumZeit, MDMKopiedrucken, listPDFs,,,, showError, AbfertigungsNr, faktGruppe) Then
|
||||
loadAndSetAnhaenge(SR_DT, ATTACHMENTS, listPDFs)
|
||||
|
||||
If VERAG_PROG_ALLGEMEIN.cAllgemein.TESTSYSTEM Then Mailsubject &= " TEST"
|
||||
If VERAG_PROG_ALLGEMEIN.cAllgemein.TESTSYSTEM Then Mailsubject &= " TEST"
|
||||
|
||||
If mailoeffnen Then
|
||||
Dim Mail = createMail(Mailsubject, HTMLMail, ATTACHMENTS, MailTo, MailtoCC, MailtoBCC, FirmaID)
|
||||
If setLog(SR_DT, row, FirmaID, SammelrechungArt, Rechnungsdatum,,,,,,, Mail) Then
|
||||
Mail.Display()
|
||||
End If
|
||||
If mailoeffnen Then
|
||||
Dim Mail = createMail(Mailsubject, HTMLMail, ATTACHMENTS, MailTo, MailtoCC, MailtoBCC, FirmaID)
|
||||
If setLog(SR_DT, row, FirmaID, SammelrechungArt, Rechnungsdatum,,,,,,, Mail) Then
|
||||
Mail.Display()
|
||||
End If
|
||||
|
||||
Else
|
||||
Else
|
||||
|
||||
Dim TextHTML = ""
|
||||
TextHTML &= HTMLMail
|
||||
TextHTML &= cFakturierung.getSignature("DE", FirmaID, True, True,,,,, True)
|
||||
HTMLMail = "<div style=""font-family:Calibri, Arial"">" & TextHTML & "</div>"
|
||||
Dim TextHTML = ""
|
||||
TextHTML &= HTMLMail
|
||||
TextHTML &= cFakturierung.getSignature("DE", FirmaID, True, True,,,,, True)
|
||||
HTMLMail = "<div style=""font-family:Calibri, Arial"">" & TextHTML & "</div>"
|
||||
|
||||
If setLog(SR_DT, row, FirmaID, SammelrechungArt, Rechnungsdatum, ATTACHMENTS, Mailsubject, HTMLMail, MailTo, MailtoCC, MailtoBCC,,, FISKAL) Then
|
||||
If setLog(SR_DT, row, FirmaID, SammelrechungArt, Rechnungsdatum, ATTACHMENTS, Mailsubject, HTMLMail, MailTo, MailtoCC, MailtoBCC,,, FISKAL) Then
|
||||
|
||||
End If
|
||||
|
||||
End If
|
||||
|
||||
@@ -182,8 +187,6 @@ Public Class cAutomailversand
|
||||
|
||||
End If
|
||||
|
||||
End If
|
||||
|
||||
Next
|
||||
|
||||
Next
|
||||
@@ -267,7 +270,10 @@ Public Class cAutomailversand
|
||||
Dim HTMLMail As String = ""
|
||||
|
||||
Dim listPDFs As New List(Of String)
|
||||
Dim showError As Boolean = False
|
||||
|
||||
'Dim showError As Boolean = False
|
||||
'showError = mailoeffnen 'bei MailÖffnen fehler anzeigen!
|
||||
|
||||
setEmailText(r, FirmaID, RECHNUNG.RechnungsNr, Mailsubject, HTMLMail, RECHNUNG.Sammelrechnung, dt, RECHNUNG.BelegartenNr, SPEDBUCH, RECHNUNG)
|
||||
|
||||
loadAndSetAnhaenge(dt, ATTACHMENTS, listPDFs, RECHNUNG, SPEDBUCH)
|
||||
@@ -470,10 +476,10 @@ Public Class cAutomailversand
|
||||
End Sub
|
||||
|
||||
|
||||
Private Function do_SR(kdNr As Integer, FirmaID As Integer, Sammelrechnungsart As Integer, Rechnungsdatum As Date, lastAktuelle_RgNr As Integer, DruckDatumZeit As Date, Kopie As Boolean, listPDFs As List(Of String), Optional EinzelAnlagen As Boolean = False, Optional Sammelbericht As Boolean = True, Optional saveInThereFore As Boolean = False, Optional showError As Boolean = True, Optional AbfertigungsArt As String = "")
|
||||
Private Function do_SR(kdNr As Integer, FirmaID As Integer, Sammelrechnungsart As Integer, Rechnungsdatum As Date, lastAktuelle_RgNr As Integer, DruckDatumZeit As Date, Kopie As Boolean, listPDFs As List(Of String), Optional EinzelAnlagen As Boolean = False, Optional Sammelbericht As Boolean = True, Optional saveInThereFore As Boolean = False, Optional showError As Boolean = True, Optional AbfertigungsArt As String = "", Optional faktGruppe As String = "")
|
||||
|
||||
Dim RechnungsNrisSet As Boolean = False
|
||||
RechnungsNrisSet = cFakturierung.doSAMMELRechnungsDruck(FirmaID, Sammelrechnungsart, Rechnungsdatum, Rechnungsdatum, "", EinzelAnlagen, Sammelbericht, kdNr, 4, listPDFs, "", lastAktuelle_RgNr, DruckDatumZeit, , , ,, ,, AbfertigungsArt, True, Kopie, True, saveInThereFore, showError)
|
||||
RechnungsNrisSet = cFakturierung.doSAMMELRechnungsDruck(FirmaID, Sammelrechnungsart, Rechnungsdatum, Rechnungsdatum, "", EinzelAnlagen, Sammelbericht, kdNr, 4, listPDFs, "", lastAktuelle_RgNr, DruckDatumZeit,,,,,, faktGruppe, AbfertigungsArt, True, Kopie, True, saveInThereFore, showError)
|
||||
|
||||
Return RechnungsNrisSet
|
||||
End Function
|
||||
|
||||
@@ -1860,34 +1860,20 @@ Public Class cFakturierung
|
||||
Dim p As New GrapeCity.ActiveReports.Export.Pdf.Section.PdfExport
|
||||
rpt.Run(False)
|
||||
p.NeverEmbedFonts = ""
|
||||
'p.Version = Section.PdfVersion.PDFA3b - NICHT AUSREICHEND FÜR ZUGFERD! AUSSERDEM WIR PROF-VERSION BENÖTIGT!
|
||||
'p.Version = GrapeCity.ActiveReports.Export.Pdf.Section.PdfVersion.PDFA3b '- NICHT AUSREICHEND FÜR ZUGFERD! AUSSERDEM WIR PROF-VERSION BENÖTIGT!
|
||||
p.Version = GrapeCity.ActiveReports.Export.Pdf.Section.PdfVersion.Pdf17
|
||||
p.Export(rpt.Document, tmpPath)
|
||||
|
||||
'------------------- WEGEN PDF/A3
|
||||
|
||||
'Dim srcPdf = tmpPath
|
||||
'Dim dstPdf = "pdfa3.pdf"
|
||||
'Dim iccPath = "sRGB.icc"
|
||||
|
||||
'Dim reader As New iText.Kernel.Pdf.PdfReader(srcPdf)
|
||||
'Dim writer As New PdfWriter(dstPdf)
|
||||
|
||||
'Dim iccStream = New FileStream(iccPath, FileMode.Open, FileAccess.Read)
|
||||
'Dim icc = ICC_Profile.GetInstance(iccStream)
|
||||
|
||||
'Dim outputIntent As New PdfOutputIntent("Custom", "", "http://www.color.org", "sRGB IEC61966-2.1", iccStream)
|
||||
|
||||
'Dim pdf As New iText.Pdfa.PdfADocument(writer, iText.Kernel.Pdf.PdfAConformanceLevel.PDF_A_3B, outputIntent)
|
||||
|
||||
'pdf.Close()
|
||||
|
||||
'------------------- WEGEN PDF/A3
|
||||
|
||||
|
||||
Dim Paramslist As New cParameterList(VERAG_PROG_ALLGEMEIN.cAllgemein.PROGID)
|
||||
Dim enableZugpferd = Paramslist.GET_PARAMETER_VALUE_BOOL("ZUGFeRD")
|
||||
If enableZugpferd Then
|
||||
tmpPath = VERAG_PROG_ALLGEMEIN.DATENVERVER_OPTIONS.addAttachementToPDF(tmpPath, createZUGFeRD(True, Rechnung,), "ZUGFeRD-invoice.xml")
|
||||
'tmpPath = VERAG_PROG_ALLGEMEIN.DATENVERVER_OPTIONS.addAttachementToPDF(tmpPath, createZUGFeRD(True, Rechnung,), "ZUGFeRD-invoice.xml")
|
||||
Dim pdfA = VERAG_PROG_ALLGEMEIN.DATENVERVER_OPTIONS.ConvertToPdfA3(tmpPath)
|
||||
tmpPath = VERAG_PROG_ALLGEMEIN.DATENVERVER_OPTIONS.addZugferdXML(pdfA, createZUGFeRD(True, Rechnung,))
|
||||
|
||||
|
||||
|
||||
Else
|
||||
|
||||
Dim Zugferdpath = createZUGFeRD(True, Rechnung)
|
||||
@@ -2872,7 +2858,9 @@ Public Class cFakturierung
|
||||
Dim Paramslist As New cParameterList(VERAG_PROG_ALLGEMEIN.cAllgemein.PROGID)
|
||||
Dim enableZugpferd = Paramslist.GET_PARAMETER_VALUE_BOOL("ZUGFeRD")
|
||||
If enableZugpferd Then
|
||||
tmpPath = VERAG_PROG_ALLGEMEIN.DATENVERVER_OPTIONS.addAttachementToPDF(tmpPath, createZUGFeRD(True, RECHNUNG,), "ZUGFeRD-invoice.xml")
|
||||
'tmpPath = VERAG_PROG_ALLGEMEIN.DATENVERVER_OPTIONS.addAttachementToPDF(tmpPath, createZUGFeRD(True, RECHNUNG,), "ZUGFeRD-invoice.xml")
|
||||
Dim pdfA = VERAG_PROG_ALLGEMEIN.DATENVERVER_OPTIONS.ConvertToPdfA3(tmpPath)
|
||||
tmpPath = VERAG_PROG_ALLGEMEIN.DATENVERVER_OPTIONS.AddZugferdXml(tmpPath, createZUGFeRD(True, RECHNUNG,))
|
||||
Else
|
||||
|
||||
Dim Zugferdpath = createZUGFeRD(True, RECHNUNG)
|
||||
@@ -5365,7 +5353,8 @@ Public Class cFakturierung
|
||||
Dim Paramslist As New cParameterList(VERAG_PROG_ALLGEMEIN.cAllgemein.PROGID)
|
||||
Dim enableZugpferd = Paramslist.GET_PARAMETER_VALUE_BOOL("ZUGFeRD")
|
||||
If enableZugpferd Then
|
||||
tmpPath = VERAG_PROG_ALLGEMEIN.DATENVERVER_OPTIONS.addAttachementToPDF(tmpPath, createZUGFeRD(False, Nothing, SammelrechnungsDT, , rpt), "ZUGFeRD-invoice.xml")
|
||||
'tmpPath = VERAG_PROG_ALLGEMEIN.DATENVERVER_OPTIONS.addAttachementToPDF(tmpPath, createZUGFeRD(False, Nothing, SammelrechnungsDT, , rpt), "ZUGFeRD-invoice.xml")
|
||||
tmpPath = VERAG_PROG_ALLGEMEIN.DATENVERVER_OPTIONS.AddZugferdXml(tmpPath, createZUGFeRD(False, Nothing, SammelrechnungsDT, , rpt))
|
||||
Else
|
||||
Dim Zugferdpath = createZUGFeRD(False, Nothing, SammelrechnungsDT,, rpt)
|
||||
If Zugferdpath IsNot Nothing AndAlso Zugferdpath <> "" Then
|
||||
@@ -6060,7 +6049,8 @@ Public Class cFakturierung
|
||||
Dim Paramslist As New cParameterList(VERAG_PROG_ALLGEMEIN.cAllgemein.PROGID)
|
||||
Dim enableZugpferd = Paramslist.GET_PARAMETER_VALUE_BOOL("ZUGFeRD")
|
||||
If enableZugpferd Then
|
||||
tmpPath = VERAG_PROG_ALLGEMEIN.DATENVERVER_OPTIONS.addAttachementToPDF(tmpPath, createZUGFeRD(False, Nothing, dt, rpt), "ZUGFeRD-invoice.xml")
|
||||
'tmpPath = VERAG_PROG_ALLGEMEIN.DATENVERVER_OPTIONS.addAttachementToPDF(tmpPath, createZUGFeRD(False, Nothing, dt, rpt), "ZUGFeRD-invoice.xml")
|
||||
tmpPath = VERAG_PROG_ALLGEMEIN.DATENVERVER_OPTIONS.AddZugferdXml(tmpPath, createZUGFeRD(False, Nothing, dt, rpt))
|
||||
Else
|
||||
Dim Zugferdpath = createZUGFeRD(False, Nothing, dt, rpt)
|
||||
If Zugferdpath IsNot Nothing AndAlso Zugferdpath <> "" Then
|
||||
|
||||
2
SDL/frmdynMailvorlage.Designer.vb
generated
2
SDL/frmdynMailvorlage.Designer.vb
generated
@@ -361,6 +361,8 @@ Partial Class frmdynMailvorlagen
|
||||
Me.rtb_Emailtext.Size = New System.Drawing.Size(868, 307)
|
||||
Me.rtb_Emailtext.TabIndex = 22
|
||||
Me.rtb_Emailtext.Text = ""
|
||||
Me.rtb_Emailtext.WordWrap = False
|
||||
Me.rtb_Emailtext.ScrollBars = RichTextBoxScrollBars.Both
|
||||
'
|
||||
'cbxFirmaChange
|
||||
'
|
||||
|
||||
@@ -291,7 +291,7 @@ Public Class frmdynMailvorlagen
|
||||
|
||||
txtkonserve = New cTextkonserve(dgvMailvorlagen.SelectedRows(0).Cells("txt_id").Value)
|
||||
|
||||
rtb_Emailtext.Text = txtkonserve.txt_text
|
||||
'rtb_Emailtext.Text = txtkonserve.txt_text
|
||||
txtBezeichnung.Text = txtkonserve.txt_bezeichnung
|
||||
txtBetreff.Text = txtkonserve.txt_betreff
|
||||
cbxAktiv.Checked = txtkonserve.txt_dynMailvorlage
|
||||
@@ -474,12 +474,11 @@ Public Class frmdynMailvorlagen
|
||||
|
||||
End Sub
|
||||
|
||||
Private Function insertlinebreaks(text As String) As String
|
||||
|
||||
Return text.ToString.Replace(vbLf, "<br>" & vbLf)
|
||||
|
||||
Private Function InsertLineBreaks(text As String) As String
|
||||
Return text.Replace(vbCrLf, "<br>" & vbCrLf) _
|
||||
.Replace(vbLf, "<br>" & vbLf) _
|
||||
.Replace(vbCr, "<br>" & vbCr)
|
||||
End Function
|
||||
|
||||
Private Sub cbSendungsvermerk_CheckedChanged(sender As Object, e As EventArgs) Handles cbSendungsvermerk.CheckedChanged
|
||||
|
||||
txtSendungsvermerk.Visible = cbSendungsvermerk.Checked
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
|
||||
Imports System.Reflection
|
||||
Imports System.Globalization
|
||||
Imports System.IO
|
||||
Imports VERAG_PROG_ALLGEMEIN
|
||||
|
||||
Public Class frmKundenUebersichtZollRgDetails
|
||||
Dim RK_ID As Integer = -1
|
||||
@@ -140,7 +141,11 @@ Public Class frmKundenUebersichtZollRgDetails
|
||||
Console.WriteLine(output)
|
||||
Console.WriteLine(err)
|
||||
|
||||
If err <> "" Then MsgBox(err)
|
||||
If err <> "" Then
|
||||
Dim tmpPath_Report = VERAG_PROG_ALLGEMEIN.DATENVERVER_OPTIONS.getTMPPath("MUSTANG-REPORT", ".pdf", , False)
|
||||
CreateValidationPdf(err, Path_temp, RK_ID, tmpPath_Report)
|
||||
If tmpPath_Report <> "" Then Process.Start(tmpPath_Report)
|
||||
End If
|
||||
|
||||
End Using
|
||||
|
||||
@@ -151,4 +156,57 @@ Public Class frmKundenUebersichtZollRgDetails
|
||||
End If
|
||||
|
||||
End Sub
|
||||
|
||||
Private Function ExtractMustangResult(log As String, Invoice_file As String, RK_ID As Integer) As String
|
||||
|
||||
Dim pdfStatus = If(log.Contains("Parsed PDF:invalid"), "INVALID", "VALID")
|
||||
Dim xmlStatus = If(log.Contains("XML:valid"), "VALID", "INVALID")
|
||||
Dim FileInfo As New FileInfo(Invoice_file)
|
||||
Dim Invoice As New cRechnungsausgang(RK_ID)
|
||||
|
||||
Dim profile As String = "EN16931"
|
||||
If log.Contains("EN16931") Then profile = "EN16931"
|
||||
|
||||
Dim took As String = ""
|
||||
Dim m = System.Text.RegularExpressions.Regex.Match(log, "Took:(\d+)ms")
|
||||
If m.Success Then took = m.Groups(1).Value & " ms"
|
||||
|
||||
Return $"ZUGFeRD VALIDATION RESULT" & vbCrLf &
|
||||
$"--------------------------------" & vbCrLf &
|
||||
$"PDF File : {FileInfo.Name}" & vbCrLf &
|
||||
$"Invoice No : {Invoice.RechnungsNr}" & vbCrLf &
|
||||
$"PDF Status : {pdfStatus}" & vbCrLf &
|
||||
$"XML Status : {xmlStatus}" & vbCrLf &
|
||||
$"Profile : {profile}" & vbCrLf &
|
||||
$"Duration : {took}"
|
||||
|
||||
End Function
|
||||
|
||||
Public Sub CreateValidationPdf(log As String, Invoice_file As String, RK_ID As Integer, outputPath As String)
|
||||
|
||||
Dim resultText = ExtractMustangResult(log, Invoice_file, RK_ID)
|
||||
|
||||
Using fs As New FileStream(outputPath, FileMode.Create)
|
||||
Using doc As New itextsharp.text.Document()
|
||||
Dim writer = itextsharp.text.pdf.PdfWriter.GetInstance(doc, fs)
|
||||
|
||||
doc.Open()
|
||||
|
||||
Dim titleFont = itextsharp.text.FontFactory.GetFont("Arial", 14, itextsharp.text.Font.BOLD)
|
||||
Dim bodyFont = itextsharp.text.FontFactory.GetFont("Arial", 10)
|
||||
|
||||
doc.Add(New itextsharp.text.Paragraph("ZUGFeRD VALIDATION REPORT", titleFont))
|
||||
doc.Add(New itextsharp.text.Paragraph(" "))
|
||||
|
||||
Dim lines = resultText.Split(vbCrLf)
|
||||
|
||||
For Each line In lines
|
||||
doc.Add(New itextsharp.text.Paragraph(line, bodyFont))
|
||||
Next
|
||||
doc.Close()
|
||||
End Using
|
||||
End Using
|
||||
|
||||
End Sub
|
||||
|
||||
End Class
|
||||
@@ -3,9 +3,12 @@ Imports System.Drawing
|
||||
Imports System.Drawing.Printing
|
||||
Imports System.IO
|
||||
Imports System.Net
|
||||
Imports System.Text
|
||||
Imports System.Text.RegularExpressions
|
||||
Imports System.Windows.Forms
|
||||
Imports DocumentFormat.OpenXml
|
||||
Imports iTextSharp.text.pdf
|
||||
Imports Org.apache.pdfbox.pdmodel.graphics.color
|
||||
Imports Spire.Pdf
|
||||
Imports Spire.Pdf.Attachments
|
||||
Imports Spire.Pdf.Print
|
||||
@@ -1393,10 +1396,10 @@ Public Class cFormularManager
|
||||
|
||||
For Each pdfPath As String In PDFFile
|
||||
|
||||
Using doc As New Spire.Pdf.PdfDocument(pdfPath)
|
||||
Using doc As New Spire.Pdf.PdfDocument(pdfPath)
|
||||
|
||||
If doc.Pages.Count = 0 Then Continue For
|
||||
Dim size = doc.Pages(0).Size
|
||||
If doc.Pages.Count = 0 Then Continue For
|
||||
Dim size = doc.Pages(0).Size
|
||||
If size.Width <= 10 OrElse size.Height <= 10 Then Continue For 'zu kleine Seiten überspringen
|
||||
' --- Druckeinstellungen ---
|
||||
doc.PrintSettings.PrinterName = printerName
|
||||
@@ -1405,9 +1408,9 @@ Public Class cFormularManager
|
||||
doc.PrintSettings.SelectSinglePageLayout(PdfSinglePageScalingMode.FitSize, True)
|
||||
doc.Print()
|
||||
|
||||
End Using
|
||||
End Using
|
||||
|
||||
Next
|
||||
Next
|
||||
|
||||
Catch ex As Exception
|
||||
VERAG_PROG_ALLGEMEIN.cErrorHandler.ERR(ex.Message, ex.StackTrace, System.Reflection.MethodInfo.GetCurrentMethod.Name)
|
||||
@@ -2437,6 +2440,112 @@ Public Class DATENVERVER_OPTIONS
|
||||
End Function
|
||||
|
||||
|
||||
Public Shared Function addZugferdXML(File As String, attPath As String) As String
|
||||
Dim tempFile As String = File & ".tmp"
|
||||
|
||||
Using reader As New PdfReader(File)
|
||||
Using fs As New FileStream(tempFile, FileMode.Create)
|
||||
Using stamper As New PdfStamper(reader, fs)
|
||||
|
||||
Dim xmlBytes = System.IO.File.ReadAllBytes(attPath)
|
||||
|
||||
Dim fileName As String = "factur-x.xml"
|
||||
|
||||
Dim fspec = PdfFileSpecification.FileEmbedded(
|
||||
stamper.Writer,
|
||||
fileName,
|
||||
fileName,
|
||||
xmlBytes,
|
||||
"application/xml",
|
||||
Nothing,
|
||||
0
|
||||
)
|
||||
|
||||
fspec.Put(PdfName.AFRELATIONSHIP, New PdfName("Alternative"))
|
||||
|
||||
stamper.Writer.AddFileAttachment("ZUGFeRD", fspec)
|
||||
|
||||
Dim af As New PdfArray()
|
||||
af.Add(fspec.Reference)
|
||||
stamper.Writer.ExtraCatalog.Put(PdfName.AFRELATIONSHIP, af)
|
||||
|
||||
|
||||
SetZugferdXmp(stamper, fileName)
|
||||
|
||||
End Using
|
||||
End Using
|
||||
End Using
|
||||
|
||||
System.IO.File.Delete(File)
|
||||
System.IO.File.Move(tempFile, File)
|
||||
|
||||
Return File
|
||||
End Function
|
||||
|
||||
|
||||
Public Shared Function ConvertToPdfA3(inputPdf As String) As String
|
||||
|
||||
Dim tempFile As String = inputPdf & ".tmp"
|
||||
|
||||
Dim reader As New PdfReader(inputPdf)
|
||||
|
||||
Using fs As New FileStream(tempFile, FileMode.Create, FileAccess.Write)
|
||||
Using stamper As New PdfStamper(reader, fs)
|
||||
|
||||
' ✔ DAS ist in iTextSharp 5 der einzig relevante PDF/A-Baustein
|
||||
Dim iccPath As String =
|
||||
"C:\Windows\System32\spool\drivers\color\sRGB Color Space Profile.icm"
|
||||
|
||||
Dim icc = ICC_Profile.GetInstance(File.ReadAllBytes(iccPath))
|
||||
|
||||
stamper.Writer.SetOutputIntents(
|
||||
"Custom",
|
||||
"",
|
||||
"http://www.color.org",
|
||||
"sRGB IEC61966-2.1",
|
||||
icc
|
||||
)
|
||||
|
||||
stamper.Writer.PDFXConformance = PdfWriter.PDFX32002
|
||||
|
||||
End Using
|
||||
End Using
|
||||
|
||||
reader.Close()
|
||||
|
||||
If File.Exists(inputPdf) Then File.Delete(inputPdf)
|
||||
File.Move(tempFile, inputPdf)
|
||||
|
||||
Return inputPdf
|
||||
|
||||
End Function
|
||||
|
||||
|
||||
Private Shared Sub SetZugferdXmp(stamper As PdfStamper, xmlFileName As String)
|
||||
|
||||
Dim xmp As String =
|
||||
"<?xpacket begin="""" id=""W5M0MpCehiHzreSzNTczkc9d""?>" &
|
||||
"<x:xmpmeta xmlns:x=""adobe:ns:meta/"">" &
|
||||
"<rdf:RDF xmlns:rdf=""http://www.w3.org/1999/02/22-rdf-syntax-ns#"" " &
|
||||
"xmlns:pdfaid=""http://www.aiim.org/pdfa/ns/id/"" " &
|
||||
"xmlns:zf=""urn:factur-x:pdfa:CrossIndustryDocument:invoice:2#"" >" &
|
||||
"<rdf:Description rdf:about="""">" &
|
||||
"<pdfaid:part>3</pdfaid:part>" &
|
||||
"<pdfaid:conformance>B</pdfaid:conformance>" &
|
||||
"<zf:DocumentType>INVOICE</zf:DocumentType>" &
|
||||
"<zf:DocumentFileName>" & xmlFileName & "</zf:DocumentFileName>" &
|
||||
"<zf:Version>2.1</zf:Version>" &
|
||||
"<zf:ConformanceLevel>EN 16931</zf:ConformanceLevel>" &
|
||||
"</rdf:Description>" &
|
||||
"</rdf:RDF>" &
|
||||
"</x:xmpmeta>" &
|
||||
"<?xpacket end=""w""?>"
|
||||
|
||||
stamper.XmpMetadata = Encoding.UTF8.GetBytes(xmp)
|
||||
|
||||
|
||||
End Sub
|
||||
|
||||
Public Shared Function addAttachementToPDF(File As String, attPath As String, Optional renameFile As String = "") As String
|
||||
Try
|
||||
|
||||
@@ -2496,9 +2605,9 @@ Public Class barcodeToPdf
|
||||
Public width As Integer
|
||||
Public height As Integer
|
||||
Public onpage = 1
|
||||
Public rotate As Drawing.RotateFlipType = RotateFlipType.RotateNoneFlipNone
|
||||
Public rotate As System.Drawing.RotateFlipType = RotateFlipType.RotateNoneFlipNone
|
||||
|
||||
Sub New(image As Image, x As Integer, y As Integer, width As Integer, height As Integer, onpage As Integer, rotate As Drawing.RotateFlipType)
|
||||
Sub New(image As Image, x As Integer, y As Integer, width As Integer, height As Integer, onpage As Integer, rotate As System.Drawing.RotateFlipType)
|
||||
Me.image = image
|
||||
Me.x = x
|
||||
Me.y = y
|
||||
|
||||
Reference in New Issue
Block a user