我想创建一个有效的PDF / A2-b文件。在此之后,想要使用PDFLib库放入ZUGFeRD发票。
每次使用Online Validator检查PDF时,都会收到以下错误:
rechnung.pdf does not conform to PDF/A.
Validating file "rechnung.pdf" for conformance level pdfa-2b
dc:language :: Wrong value type. Expected type 'bag'.
The document does not conform to the requested standard.
The document's meta data is either missing or inconsistent or corrupt.
Done.
这是带有我的FOP元信息的部分。
<fo:declarations>
<x:xmpmeta xmlns:x="adobe:ns:meta/">
<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#">
<rdf:Description rdf:about="" xmlns:dc="http://purl.org/dc/elements/1.1/">
<dc:title>
<rdf:Alt>
<rdf:li xml:lang="x-default">Titel</rdf:li>
</rdf:Alt>
</dc:title>
<dc:creator>
<rdf:Seq>
<rdf:li>Creator</rdf:li>
</rdf:Seq>
</dc:creator>
<dc:description>
<rdf:Alt>
<rdf:li xml:lang="x-default">PDF/A Rechnung</rdf:li>
</rdf:Alt>
</dc:description>
<dc:date>
<rdf:Seq>
<rdf:li>2016-10-20</rdf:li>
</rdf:Seq>
</dc:date>
</rdf:Description>
<rdf:Description rdf:about=""
xmlns:xmp="http://ns.adobe.com/xap/1.0/">
<!-- XMP properties go here -->
<xmp:CreatorTool>Creator Tool</xmp:CreatorTool>
</rdf:Description>
</rdf:RDF>
</x:xmpmeta>
</fo:declarations>
FOP从fo:root元素中获取元数据的语言部分。
<fo:root xml:lang="de"
xmlns:fo="http://www.w3.org/1999/XSL/Format"
font-family="PT-Sans" font-weight="normal" font-style="normal"
xmlns:pdf="http://xmlgraphics.apache.org/fop/extensions/pdf">
但是当我用记事本++打开PDF文件时,dc:语言没有类型规范。这就是我想的问题。
如何在文件中获取这些规范?
我试图像其他声明那样添加它:
<dc:language>
<rdf:Bag>
<rdf:li>de-DE</rdf:li>
</rdf:Bag>
</dc:language>
然后我从Validator那里得到了同样的失败消息。为什么?因为PDF文件中的语言具有以下内容:
<dc:language>x-unknown</dc:language>
我认为值“x-unknown”直接来自FOP。
在一个论坛中,我已经读过构造函数中有一个方法来自java / org / apache / fop / pdf / PDFRoot.java文件,名为“setLanguage(”x-unknown“);”因为FOP 1.1。
我已经看过实际的FOP而且她还在里面。
的java /组织/阿帕奇/ FOP / PDF / PDFRoot.java [80:9]
public PDFRoot(PDFDocument document, PDFPages pages) {
this.document = document;
setObjectNumber(document);
put("Type", new PDFName("Catalog"));
setRootPages(pages);
setLanguage("x-unknown");
}
答案 0 :(得分:0)
我在Apache FOP 2.2
和2.4
上遇到了同样的问题,我认为这是Apache FOP
本身的错误。 Apache FOP
应该在< dc:language >
下创建一个数组/包,并将值放在其中,但相反,它将值直接放在< dc:language >
下。
对我来说,解决方案是我在第二步中将XMP Metadata
添加到了Apache PDFBox
。