我目前正在使用新的德語ZUGFeRD文件。這些是PDF A/3文件,其中包含嵌入的XML文件,其中包含數據。在C#中使用abcpdf從PDF A/3中提取嵌入式XML文件 - ZUGFeRD
我想從PDF A/3使用abcpdf 8.1與C#中提取此XML文件。
任何想法如何做到這一點?
非常感謝和問候,
我目前正在使用新的德語ZUGFeRD文件。這些是PDF A/3文件,其中包含嵌入的XML文件,其中包含數據。在C#中使用abcpdf從PDF A/3中提取嵌入式XML文件 - ZUGFeRD
我想從PDF A/3使用abcpdf 8.1與C#中提取此XML文件。
任何想法如何做到這一點?
非常感謝和問候,
我不知道abcpdf但我猜測,pdf庫提供的PDF文件內容類似的訪問。
首先看看Das-ZUGFeRD-Format_1p0.pdf。特別是第112頁。圖像顯示了爲了找到xml流而必須遍歷的對象樹。
用這棵樹你有名字,類型和方向。現在您可以遍歷PDF對象樹來獲取您正在查找的XML內容。
基於圖表的步驟。
AF
陣列AF
陣列獲取第一個元素(應該是file spec
)file spec
得到字典命名爲EF
EF
這是您需要執行以獲取內容的步驟。
要顯示PDF格式的結構和瀏覽樹我會建議使用像iText RUPS
非常感謝,這是非常順利的路! 我做了什麼與abcpdf: - 獲得從文檔的Objectsoup陣列(差不多在文檔中的所有對象的數組) -as ZUGFeRD只允許一個PDF內嵌入的文件,我只是搜查這objectsoup-數組,其中包含/ EmbeddedFile - 解壓縮該對象的流,獲取流的byte []並將其寫入xml文件中 – user3296596
@ user3296596 * ZUGFeRD只允許PDF中的一個嵌入文件* - 這是錯誤的:*只有一張發票,但任何數量的其他附件,*「nur die Einbindung eines einzigen Rechnungsdatendokuments ... Einbettung weiterer Dokumente und Dateien,die keine Rechnungsdaten enthalhal,ist davon nicht betroffen」。此外,這可能會發生變化,「在künftigenVersionen des ZUGFeRD Standards kann dieseBeschränkungaufgehoben werden」,參見。信息包中的PDF-Implementierungsguide-ZUGFeRD.pdf。 – mkl
@Vadimo我認爲完全刪除對http://www.ferd-net.de的引用並不是一個好主意,只能鏈接到ZUGFeRD實現網站上的規範副本,http:// konik.io;誠然,維基百科確實也參考了這些副本。 – mkl
的工具我做了什麼與abcpdf:
獲取從文件的Objectsoup陣列(幾乎所有的對象在Doc文件中)
由於ZUGFeRD只允許在PDF中嵌入一個文件,我剛剛搜索了這個objectsoup數組中的一個StreamObject類型,其中包含/ EmbeddedFile
解壓縮對象的流,得到的byte []流的,並將其寫入到一個XML文件
* ZUGFeRD只允許在PDF內嵌入一個文件* - 這是錯誤的:**只有一個發票,但任何數量的其他附件**,「nur die Einbindung eines einzigen Rechnungsdatendokuments ... Einbettung weiterer Dokumente und Dateien,die keine Rechnungsdaten enthalten ,ist davon nicht betroffen「。此外,這可能會發生變化,「在künftigenVersionen des ZUGFeRD Standards kann dieseBeschränkungaufgehoben werden」,參見。信息包中的PDF-Implementierungsguide-ZUGFeRD.pdf。 – mkl
我會得到與PDF文件涉及庫,然後加載XML連接與XDocument。 – Mathew
我的圖書館處理PDF文件是版本8.1中的abcpdf。我的問題是如何提取/閱讀在這個庫(abcpdf)PDF內的XML。無論如何,謝謝!:) – user3296596