2009-08-10 53 views
2

我嘗試閱讀相關問題,但未找到任何新工具。 這是我的問題:我從我的應用程序中的數據生成一些保險PDF文件。東西,合同,證書,賬單等保險人給我的模板文件作爲.docs與他們的領域,我必須填寫與我的數據字段和生成PDF。很簡單的問題。將文檔模板轉換爲java中的PDF文件(查找工具/庫)

我沒有詞,我在java swing中。

我不想在報告系統(如BIRT或iReport)中重新創建word doc,因爲它很長,很痛苦,而且他們甚至不能像word那樣做相同的佈局。

我嘗試轉換.odt(OpenOffice)中的.doc,更改表單字段中的字段,生成PDF作爲PDF表單(未裝飾的禁用字段,看起來像普通文本),並用iText,但我得到便宜的結果(我不能在字段中選擇字體,寬度是固定的,我無法在字段和周圍文本中正確排列基線等)

您有想法/我可以使用工具填充這些字段,而無需在模板編輯器中重新創建doc文件?

這個問題是相當開放的,我正在尋找比你做我的功課更多的想法。

回答

1

爲了解決這種情況,我創建了一個完整的應用程序(實際上它已經移植了3次),其中一個版本使用OpenOffice,它具有.Doc模板(帶有書籤),然後應用程序就像「服務器「,它具有自己的內置文件夾監視器,它將通過XML處理需求並使用.doc/.dot模板渲染PDF文檔。

可悲的是這是在服務器環境中運行(而引起的問題,我從來沒有設法得到無頭模式下工作)

但至少在理論上它的工作原理。

從查看Open Office API開始,您應該能夠更改字體/樣式/大小等,以及爲什麼當您可以使用書籤而不是使用字段?這允許你跳到一個預定義的光標(命名),然後插入任何東西(例如表格,圖片,文本等)

優秀的部分是,在樣式和修改模板方面,所有你需要它的單詞/開發辦公室。

不知道是否有幫助

Darknight

+0

我不知道書籤是如何工作的,我會調查一下,謝謝。 當我在書籤中插入文本時,文本是否重新排版(包裝,連字符,頁面跳轉)?現在我正在調查API /實時與OOo解決方案進行交談,但我並不確定我可以用它來做一些有用的事情。 – nraynaud 2009-08-10 22:54:41

1

如果你可以提取數據(可能POI?),你可以再使用iText的創建PDF文件。

+0

Thaks。我想知道我需要在文檔格式和iText之間縫製的「接縫」的寬度,我在google上找不到任何示例。但總的想法很酷:在java內部使用佈局引擎是我認爲的一件好事。 – nraynaud 2009-08-11 11:28:35

3

有免費的應用程序來創建PDF表單,是否有可能教保險人士使用它,並提供一個PDF表單模板到您的應用程序,而不是一個單詞模板?我已經參與了一個成功使用這種方法的應用程序。爲用戶的工作流程變成了:

  1. 創建使用任何應用程序(文字,軟件,其他...)
  2. 導出或打印成PDF
  3. 使用PDF格式編輯器添加在正確的位置領域的文件。爲內容使用佔位符。
  4. 上傳到服務器

佔位符(如$ {} context.person.firstname)的再換成服務器上的PDF「扁平化」(轉換表單字段爲文本)和填寫PDF返回。我們使用了一組定義的佔位符,用戶可以從中選擇並在需要時添加更多的佔位符。這是想用自己的choise佈局的應用程序的用戶之間的良好權衡,我們希望避免的格式(和Office)

衆多如果我沒有記錯,我們使用Scribus爲PDF格式編輯器

+0

這就是我所做的。但是,「扁平化」的想法對我來說是新的,我會調查它,謝謝。 – nraynaud 2009-08-11 11:23:14

+0

是啊,看起來不是一個複雜的代碼:http://1t3xt.info/api/com/lowagie/text/pdf/PdfStamper.html#setFormFlattening(boolean) – nraynaud 2009-08-11 12:21:47

1

你可以將doc文件轉換爲rtf文件:例如,這些文件使用明確的「標記」來定義樣式(如HTML):「{\ b bold test} {\ i italic test}」。

因此,該文件是相當「可以理解」的人類。

在此文件中,您可以放置​​「標籤」,以您選擇的字符分隔:「%% first_name %%」爲例。

在java中,您可以根據您的信息動態替換這些標籤。完成後,您只需將此rtf文件轉換爲pdf文件(API,虛擬打印機...)。

用這種方法,你可以用任何「標記」格式來替換rtf格式,這種格式很容易理解。

+0

我在開始時試過這種方式,因爲我更喜歡處理由於明顯的原因,文本格式是二進制的,但是我的文檔佈局對於RTF來說太複雜。謝謝。 – nraynaud 2009-08-11 11:25:16

2

有點晚,但如果別人正在尋找 - 嘗試Docmosis。它使用文檔作爲模板(doc或odt),並可以從Java中填充和控制文檔。它可以吐出pdf,doc,odf等。它是Darknights解決方案的產品化版本(上圖) - 它是免費的!