zugpferd prüfungstool

This commit is contained in:
2026-04-24 17:27:30 +02:00
parent 63b96fb490
commit 664e43cafe
6 changed files with 226 additions and 62 deletions

View File

@@ -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

View File

@@ -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

View File

@@ -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
'

View File

@@ -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

View File

@@ -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

View File

@@ -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