我使用iTextSharp 5.5.3,Ii需要生成一个ConformanceLevel = ZUGFeRD的PDF/A。我在设置正确的XMP模式标志时遇到了问题。
代码正在工作,但我总是得到异常。
ZUGFeRD XMP模式应包含附件名称。
当我结束写作的时候。PDF是以前生成的,但似乎与ZUGFeRD不兼容。
我不知道如何修正这个警告。我真的希望有人能帮我。我已经为这个问题做了两天了,却找不到解决的方法。
Dim document As New Document(PageSize.A4, 0, 0, 0, 0)
Dim writer As PdfAWriter = PdfAWriter.GetInstance(document, New FileStream(tmpPDFDatei, FileMode.Create), PdfAConformanceLevel.ZUGFeRD)
writer.SetPdfVersion(PdfWriter.PDF_VERSION_1_7)
writer.CreateXmpMetadata()
Dim PDFbaseFont As BaseFont = BaseFont.CreateFont(Application.StartupPath & "\Courier Prime.ttf", BaseFont.CP1252, BaseFont.EMBEDDED)
document.Open()
Dim icc As ICC_Profile = ICC_Profile.GetInstance(Application.StartupPath & "\sRGB_IEC61966-2-1_black_scaled.icc")
writer.SetOutputIntents("Custom", "", "http://www.color.org", "sRGB IEC61966-2.1", icc)
Dim cb As PdfContentByte = writer.DirectContent
cb.BeginText()
cb.SetFontAndSize(PDFbaseFont, 10)
cb.ShowTextAligned(PdfContentByte.ALIGN_LEFT, "TEST TEXT", 0, 0, 0)
cb.SetHorizontalScaling(100)
cb.EndText()
Dim Params As PdfDictionary = New PdfDictionary
Params.Put(PdfName.MODDATE, New PdfDate)
Dim fileSpec As PdfFileSpecification = PdfFileSpecification.FileEmbedded(writer, tmpXMLDatei, "ZUGFeRD-invoice.xml", Nothing, False, "text/xml", Params)
fileSpec.Put(New PdfName("AFRelationship"), New PdfName("Alternative"))
writer.AddFileAttachment("ZUGFeRD Invoice", fileSpec)
Dim aRR As PdfArray = New PdfArray
aRR.Add(fileSpec.Reference)
writer.ExtraCatalog.Put(New PdfName("AF"), aRR)
writer.XmpWriter.SetProperty(PdfAXmpWriter.zugferdSchemaNS, PdfAXmpWriter.zugferdDocumentFileName, "ZUGFeRD-invoice.xml")
writer.XmpWriter.SetProperty(PdfAXmpWriter.zugferdSchemaNS, PdfAXmpWriter.zugferdDocumentType, "INVOICE")
document.Close()
writer.Close()发布于 2014-09-25 12:56:15
您可以通过删除以下行来解决问题:
writer.Close()当您关闭Document时,写入器将自动关闭。您面临的问题是,当作者第一次关闭时,XMP被写入文档。XmpWriter中的数据被检查、批准和使用。
当您第二次关闭writer时,您添加的XMP数据就消失了。因此,例外情况是:缺少一些与ZUGFeRD相关的信息。
ZUGFeRD的问题是我们还没有找到德文标准的最终版本。我不明白你在评论中提出的额外问题是什么意思。
我用屏幕截图了ZUGFeRD PDF的内部结构:

据我所见,文件名存储在EmbeddedFiles条目的名称树中。你是说你不是这样的吗?
https://stackoverflow.com/questions/26036852
复制相似问题