2016-07-07 42 views
0

我有一個字符串「點擊這裏」的文本PDF。 如何使用PDFBox替換「點擊此處」的URL? 即使在更新(或新的)PDF中的替換之後,「Click Here」也會變成藍色並且可點擊。如何用PDFBOX中的URL替換字符串?

+0

我可能會先做一些研究,嘗試基於上述研究的代碼,然後在出現實際問題時發佈問題。 – rmlan

+1

PDF文件實際上並不意味着有這樣的真實功能 - 即時通訊猜測你可以用Javascript做一些黑客攻擊,但那樣...醜陋和有點濫用文檔結構,如果它是可能的 - 這是值得懷疑的。如果你對目前的任務/目標使用錯誤的媒介,也許你應該考慮創建一個簡單的網站。 PDF文件是**文檔**,除了填寫表單數據或簽名外,您實際上不會「填寫」其中的內容,除了填寫表單數據或簽名外,其他方面都差不多。 – specializt

回答

1

這是從AddAnnotations.java example從源代碼下載:

 PDBorderStyleDictionary borderULine = new PDBorderStyleDictionary(); 
     borderULine.setStyle(PDBorderStyleDictionary.STYLE_UNDERLINE); 
     borderULine.setWidth(1); 

     PDAnnotationLink txtLink = new PDAnnotationLink(); 
     txtLink.setBorderStyle(borderULine); 

     // Set the rectangle containing the link 
     textWidth = font.getStringWidth("Click here")/1000 * xscale; 
     position = new PDRectangle(); 
     position.setLowerLeftX(...); 
     position.setLowerLeftY(...); 
     position.setUpperRightX(...); 
     position.setUpperRightY(...); 
     txtLink.setRectangle(position); 

     // add an action 
     PDActionURI action = new PDActionURI(); 
     action.setURI("http://pdfbox.apache.org"); 
     txtLink.setAction(action); 

     annotations.add(txtLink); 

你需要知道你的「點擊這裏」的座標,而x縮放因子和字體,效果顯着。在PDF中,(0,0)是左下角。 1單位= 1/72英寸。如果你自己生成文件是最簡單的。如果它是一個現有的文件,您將不得不使用PDFDebugger分析文件或做一些試驗和錯誤。

+0

謝謝,我現在明白它是如何工作的。我很天真,我以爲會有一個PDF/PdfBox函數來給出找到的文本的位置... – kaw

+0

不,沒有(你沒有問)。你甚至不能確定字符串「Click Here」會在內容流中找到,它可能也是這樣的:'[(Cl)-29(i)-1(ck)30(here)] TJ ' –