8
0
2024-01-24 16:42:38 +01:00

87 lines
3.6 KiB
PowerShell

cls
# Stand: MK // 11.10.2021
Set-Variable -Scope Global -Name ScriptName -Value (($MyInvocation.MyCommand.Name) -split "\.")[0].ToString()
Set-Variable -Scope Global -Name ScriptPath -Value (Split-Path ($MyInvocation.MyCommand.Path))
#########################################################################
############################# KONFIGURATION #############################
$PDFSourceFile = "$ScriptPath\DigitalData-G-ARE-20224030-aveco.pdf"
$XMLSourceFile = "$ScriptPath\ZUGFeRD-invoice.xml"
$ZUGFeRDTargetFile = "auto"
#########################################################################
IF (Test-Path -PathType Leaf "$ScriptPath\GdPicture.NET.14.dll") {
Add-Type -Path "$ScriptPath\GdPicture.NET.14.dll" -ErrorAction Stop -Verbose
write-host "Die DLL wurde geladen: $ScriptPath\GdPicture.NET.14.dll"
}
ELSE {
write-host "Die DLL konnte nicht geladen werden: $ScriptPath\GdPicture.NET.14.dll"
}
$GdPictureImaging = [GdPicture14.GdPictureImaging]::new()
$gdPicturePDF = [GdPicture14.GdPicturePDF]::new()
$LicenseManager = [GdPicture14.LicenseManager]::new()
$LicenseManager.RegisterKEY("21182889975216572111813147150675976632")
IF ((Test-Path -PathType Leaf $PDFSourceFile) -and (Test-Path -PathType Leaf $XMLSourceFile)) {
IF (($ZUGFeRDTargetFile -eq $NULL) -or ($ZUGFeRDTargetFile -eq "") -or ($ZUGFeRDTargetFile -eq "auto")) {
$PDFSourceFilename = (Get-Item -Path $PDFSourceFile).name
$PDFSourceFilename = $PDFSourceFilename.Replace(((Get-Item -Path $PDFSourceFile).extension),"")
$ZUGFeRDTargetFile = "$ScriptPath\$($PDFSourceFilename)_pdfa3b$((Get-Item -Path $PDFSourceFile).extension)"
}
Write-Host "Quelldateien wurden gefunden, fahre fort ..."
$gdPicturePDF.LoadFromFile($PDFSourceFile, $false)
# Embedding xml part.
$gdPicturePDF.EmbedFile($XMLSourceFile, "Rechnungsdaten im ZUGFeRD-XML-Format")
# Saving as PDF/A-3b.
#$gdPicturePDF.ConvertToPDFA($ZUGFeRDTargetFile, "PdfConversionConformance.PDF_A_3b", $true, $true)
$gdPicturePDF.ConvertToPDFA($ZUGFeRDTargetFile, [GdPicture14.PdfConversionConformance]::PDF_A_3b, $true, $true)
$gdPicturePDF.CloseDocument()
$gdPicturePDF.LoadFromFile($ZUGFeRDTargetFile, $true)
# Modifying the metadata.
[string]$currentMetadata = $gdPicturePDF.GetMetadata()
# Add basic ZUGFeRD schema properties.
[string]$zugferdMetadata = '<rdf:Description xmlns:zf=\"urn:zugferd:pdfa:CrossIndustryDocument:invoice:2p0#\" rdf:about=\"\">\r\n'
$zugferdMetadata += "<zf:ConformanceLevel>BASIC</zf:ConformanceLevel>\r\n"
$zugferdMetadata += "<zf:DocumentFileName>zugferd-invoice.xml</zf:DocumentFileName>\r\n"
$zugferdMetadata += "<zf:DocumentType>INVOICE</zf:DocumentType>\r\n"
$zugferdMetadata += "<zf:Version>2p0</zf:Version>\r\n"
$zugferdMetadata += "</rdf:Description>\r\n"
# Add PDF/A extension schema description for the ZUGFeRD schema.
# Here you should add the proper metadata according to the ZUGFeRD specification.
# Example: https:#www.pdflib.com/fileadmin/pdf-knowledge-base/zugferd/ZUGFeRD2_extension_schema.xmp
$currentMetadata = $currentMetadata.Insert($currentMetadata.IndexOf("<rdf:Description "), $zugferdMetadata)
$gdPicturePDF.SetMetadata($currentMetadata)
$gdPicturePDF.SaveToFile($ZUGFeRDTargetFile)
write-host "test $($gdPicturePDF.GetStat())"
}
ELSE {
Write-Host "Quelldatei(en) nicht vollständig bzw. auffindbar!"
}
#Remove-Variable * -ErrorAction SilentlyContinue
$Error.Clear()
# Quellen:
# https://www.gdpicture.com/blog/generate-zugferd-facturx-electronic-invoices-with-gdpicture/
# https://www.gdpicture.com/forum/viewtopic.php?f=30&t=6436