2011-03-01 77 views
2

我剛剛學會了如何使用Apache-POI進行一些基本的.doc和.docx操作。而現在我想要做的是嘗試從我的應用程序中打印這些文檔。任何想法我怎麼能這樣做? 這是我創建的文檔:如何在java中打印.doc和.docx

public void newWordDoc(String filename) throws FileNotFoundException, IOException { 
    XWPFDocument document = new XWPFDocument(); 
    XWPFParagraph tmpParagraph = document.createParagraph(); 
    XWPFRun tmpRun = tmpParagraph.createRun(); 
    tmpRun.setText("Writing to a .doc"); 
    tmpRun.setFontSize(18); 
    document.write(new FileOutputStream(new File(filename + ".doc"))); 
} 

public void newWordDocX(String filename) throws FileNotFoundException, IOException { 
    XWPFDocument document = new XWPFDocument(); 
    XWPFParagraph tmpParagraph = document.createParagraph(); 
    XWPFRun tmpRun = tmpParagraph.createRun(); 
    tmpRun.setText("Writing to a .docx"); 
    tmpRun.setFontSize(18); 
    document.write(new FileOutputStream(new File(filename + ".docx"))); 
} 

我想現在我應該創建一些方法,它再次讀取它們,並將它們打印,對不對? 什麼是在我的打印機中打印它們的最簡單和最快的方式? 我是否需要使用java打印API,或者是否有任何可以讓事情變得更簡單的免費軟件API? 另外我想提一提的是,我在別的地方發佈了一篇文章,說java不能做這樣的事情,比如打印word文檔,而且我們必須先將它們轉換爲PDF。真的嗎?我希望不會:(

回答

2

Apache POI是隻讀的對象,而不是渲染,既不在屏幕上,也不在打印機。

您一定要編寫一個可以呈現doc和docx文檔的程序。想起微軟的Word,但如果你幸運的話,OpenOffice也應該做一個或多或少的可以接受的工作:)。

對於Word:使用Com4J,這很好用。

對於OpenOffice:使用其原生Java API。

+2

docx4j可以將docx轉換爲PDF(或HTML),如果您有打印PDF的解決方案,這可能會有所幫助。 – JasonPlutext 2011-03-04 08:39:41

+0

@plutext:+1不知道這樣的事情存在! – Daniel 2011-03-04 11:34:16

0

現在我想我應該創建一些方法,它再次讀取它們,並將它們打印,對不對?

權利。除非其內容已經在內存中。

什麼是在我的打印機中打印它們的最簡單和最快的方式?是否需要使用java打印API,或者是否有任何可以使事情更容易的免費軟件API?

你應該分開關注點。首先,你應該擔心閱讀。印刷將是另一個對象的責任:)

關於轉換爲PDF的問題。我想這不是要求。至於你可以閱讀的內容,你可以做任何你想要的東西:)