2016-06-22 73 views
2

我有我認爲是由apache fop生成的PDF/A-1a文件,並在pdfbox中使用OverlayPDF進行覆蓋信頭。印前檢查將文件識別爲OK(但顯然只是PDF/A-1b),Acroreader在文檔屬性中表示它爲「PDF/A」模式和「標記:是」。我想看看這是怎麼回事,以便我可以調整fop進行一些小的改進。使用pdfbox在PDF/A-1a中查找標記的內容

我的問題是,我在哪裏可以看到帶標籤的內容(即,PDF中的內容是字符輸出的字符串的文本表示),最好不用自己編碼,例如,使用pdfbox中的調試器/ PDFReader?我有點迷路了 - 是否有另一種方式獲得文檔結構的文本輸出,例如到一個XML文件中使用編輯器來搜索它? - TIA!

編輯

的信頭(一個或多個)本身是原本PostScript和使用ghostscript的,然後用

java -jar pdfbox-app-2.0.0-RC3.jar OverlayPDF letter_plain.pdf \ 
    followingpages_letterhead.pdf -first firstpage_letterhead.pdf \ 
    letter_with_head.pdf 

重疊的letter_plain.pdf使用具有FOP生成轉換爲PDF/A-1b的

fop -pdfprofile 'PDF/A-1a' -v -d -c my_fop_config.cfg -xml letter.xml \ 
    -xsl letter_to_fo.xsl -pdf letter_plain.pdf 

使用的版本是pdfbox 2.0和fop 1.1。

如果letter_with_head.pdf不再是PDF/A-1a,那麼問題將應用於letter_plain.pdf,它應該是1a的fop調用,必須選擇不同的解決方案(如svg)然後拿到信頭。

編輯2

例PDF可以在這裏找到:https://www.magentacloud.de/share/j9qk7jfzyv - 沒有需要單獨followingpages_letterhead.pdf作爲樣品只有一個頁面。

編輯3

我有懷疑,文字埋藏着低於Root/StructTreeRoot/ParentTree/Nums/[1]/[3]/P/P/P/P/P/P(假設P公司在某種程度上映射fo:block的),但不能得逞顯示從PDF文本。

+0

是否可以共享有問題的文檔? –

+0

樣本pdfs在這裏https://www.magentacloud.de/share/j9qk7jfzyv –

+0

首先,Adobe Acrobat Preflight聲稱在letter_plain.pdf中已經有許多PDF/A-1a有效性問題。 – mkl

回答

2

手頭PDF中的結構樹條目映射到頁面內容流中標記的內容。作爲一個例子,

Root/StructTreeRoot/K/[0]/K/[0]/K/[1]/K/[0]/K/[0]/K/[0]/K/[0] 

地圖入門到頁面的這部分內容流

/Span << /MCID 0 >> BDC 
    BT 
    /F15 11 Tf 
    1 0 0 -1 0 9.163 Tm 
    [ (Bes) 15 (tell-Nr) 48 (. 1) 34 (23) 6 (456) 29 (7) 40 (8) ] TJ 
    ET 
EMC 

可以看出,沒有額外的定義,所以沒有容易比解析TJ其他顯示文本這個例子序列中的操作符。所以標籤用於定義指向不同構件的文檔結構。

此外還有一些關於輔助功能支持的信息。但是這僅限於在結構樹中指定Lang屬性。

+0

非常感謝@Maruan,這解釋了很多。如果那裏有其他可訪問性的文本,它會被放置在那裏嗎?就像那個系列的「Bestell-Nr。12345678」一樣?我應該諮詢fop'pers關於爲什麼沒有alt文本,但它應該(A-1a)並且可以(fop獲得原始文本)在那裏? –

+0

Mhmm - 據我所知,獲得'普通'文本更容易,但它不是PDF/A-1a提供該信息AFAIK的必要條件。 –