2011-03-21 87 views
0

我有這個PDF文件,它安排在5列。將PDF文件轉換爲漂亮的表格

我已經瀏覽了Stack Overflow(並瘋狂搜索Google)並嘗試了所有解決方案(包括試用Adobe Acrobat本身的最後手段)。

但是,出於某種原因,我無法獲得csv/xls格式的這5列 - 因爲我需要它們排列。通常,當我導出它們時,格式非常糟糕,所有條目都會逐行排列,並且會丟失一些數據。

http://www.2shared.com/document/PagE4A1T/ex1.html

這裏是上述文件的摘錄的鏈接,但我真的感到沮喪,並正在運行的選項。

+0

歡迎來到stackoverflow。你想用什麼語言來做到這一點? – 2011-03-21 12:25:19

+0

您是否找到了解決方案?是否有可能提供一個鏈接整個文件,因爲我寫了一個工具,應該能夠處理它,並且有興趣將它用作我的軟件的測試。我很高興向您發送生成的CSV文件。 – 2011-03-23 05:14:44

回答

1

iText的(或者iTextSharp的)能做到這一點,如果你可以給它的5列的邊界,並願意處理一些開銷(即重新分析頁面的每個列文本)

Rectangle2D columnBoxArray[] = buildColumnBoxes(); 
ArrayList<String> columnTexts = new ArrayList<String>(columnBoxArray.length); 
For (Rectangle2D columnBBox : columnBoxArray) { 

    FilteredTextRenderListener textInRectStrategy = 
    new FilteredTextRenderListener(new LocationTextExtractionStrategy(), 
     new RegionTextRenderFilter(columnBBox)); 

    columnTexts.add(PdfTextExtractor.extractText(reader, pageNum, textInRectStrategy)); 
} 

每行文本應該用\n分開,所以它成爲字符串解析的一個簡單問題。

如果你不想爲每一列重新分析整個頁面,你可能會想出一個FilteredTextRenderListener的自定義實現,它需要多個監聽器/過濾器對。然後,您可以爲每個列解析整個事件而不是一次。