❶ java web項目 實現word文件列印,列印本地文件
如果要先展示word文件,在列印!
你可以使用freemarker模版技術。
很簡單,請參考:
http://blog.csdn.net/jackfrued/article/details/39449021
列印請使用js代碼:window.print();
❷ java設計系統時,系統中的列印模板想依照用戶上傳的word或excel模板列印,程序怎麼實現
一般來說沒有這種方式的,都是採用報表控制項實現
但是你這種方式也可以實現就是比較考驗功底
首先必須對word或者excel進行統一的規范性處理,也就是形成約束,比如版本,比如你的實現機制(例如書簽或者變數)的命名等地方
其次就是sql查詢數據與你實現機制的綁定,然後在相對應的變數或書簽處設值
建議先看看開源報表的原理,實現有多種實現方式,你可以用poi,也可以用一些其他的組件對word進行解析,也可以編寫Dephi控制項,但是都必須滿足以下幾點
1、可維護
2、高效
3、對於多行分頁的自動處理
4、對於單頁排版的處理
5、如果有可能需加入圖片或者圖表
❸ java列印word
步驟:
1,用word編輯你的模板
2,模板保存為html格式
3,在代碼中把你要填的值動態拼接到那個html中,
最後
byte[] bytes= bf.toString().getBytes("GBK"); //bf.tostring()得到的拼接後的字元串
response.reset();
response.setContentType("application/msword");
response.setHeader("Content-disposition", "inline; filename=case_print.doc");
response.setCharacterEncoding("GBK");
response.setContentLength(bytes.length);
ServletOutputStream ouputStream = response.getOutputStream();
ouputStream.write(bytes, 0, bytes.length);
ouputStream.flush();
ouputStream.close();
❹ java(web)列印 通常是怎麼實現的
Web系統中,列印功能一直是個老大難問題,因此產生了很多第三方的控制項,多數要收費,而且跟自己的系統結合有一定的麻煩。系統採用J2EE技術,jsp列印問題同樣存在於OA中。
列印方式有三種:一是不經過任何修改,直接調用javascript中的window.print()列印。二根據客戶要求的報表格式,編寫相應格式的html,裝載數據列印,同樣調用window.print()列印,只是對html的格式要求比較高。三是通過客戶提供的word格式,通過xml配置文件與資料庫的數據進行關聯,自動裝載數據到word中列印,這里是利用客戶端的word進行列印。
第一種幾乎不用編寫程序,最簡單快捷,這里會遇到幾個問題,只能列印表單內容,按鈕不希望列印出來;頁眉頁腳不想列印出來;IE的titile不想列印出來。
解決辦法:把button放在一個table或者div里,列印的時候隱藏,完成後顯示就可以。系統中的javascript列印代碼如下:
function Print() {
var tit = document.title;
document.title = "";
table1.style.display = "none";
window.print();
document.title = tit;
table1.style.display = "";
}
不過只能起到列印的目的,列印的效果一般比較土。不管怎麼說,可以最快的讓系統的大部分模塊都有列印的功能。
第二種方式必須根據每個報表的格式進行定製html和java程序開發,會花比較多的時間。要注意的是對html中table的樣式控制,在IE中瀏覽看起來很細的邊框,列印出來有些線條會比較粗,有些線條又會比較細,陰陽怪氣的很難看。
在table中直接用bordercolor會讓線條顯得很粗,用bordercolorlight,bordercolordark配合使用可以顯示出秀氣的線條。
<html>
<head></head>
<body>
<table border="1" bordercolorlight="red" bordercolordark="#FFFFFF" cellpadding="3" cellspacing="0">
<tbody>
<tr>
<td>姓名</td>
<td>所屬部門</td>
</tr>
<tr>
<td>陳</td>
<td>技術部</td>
</tr>
</tbody>
</table>
</body>
</html>
比如以上代碼,在IE中看起來線條一樣大小,還是比較秀氣。不要高興的太早,列印出來的效果不象在IE中看到的那樣,邊框雖細,內線卻很粗!原因是每個td都有邊框,td與td的交接處就會有線條重疊,雖然IE看起來沒有,可是列印的時候就會顯示出來。
這個問題的解決辦法是控制每一個td的樣式,對重疊的地方進行border-bottom:1px之類的控制。
這個方案比較消耗精力,而且列印的時候很難控制分頁,更不能隨時按照客戶的需要調整字體邊框顏色等。
第三種方案:從伺服器端生成word、excel等文檔,發送到瀏覽器進行列印
實現過程:先將需要列印的數據導入到word或者excel中,再利用word或者excel的列印功能來實現web列印。
下面以excel為例實現如何列印的過程
將網頁中數據導入excel中的方法有很多,這里先介紹一種,利用ActiveX控制項的方式,即 Excel.Application, 這個控制項是MS為excel提供的編程介面,在很多種編程語言種都可以通過該介面來操縱excel表格。
下面用javascript腳本來實現一個簡單的例子。
<script language = "javascript">
function ExcelPrint() {
var excelApp; //存放Excel對象
var excelBook; //存放Excel工件簿文件
var excelSheet; //存放Excel活動工作表
try {
excelApp = new ActiveXObject("Excel. Application"); //創建Excel對象}
catch(e) {
alert("請啟用ActiveX控制項設置!");
return;
}
excelBook = excelApp.Workbooks.Add(); //創建Excel工作簿文件
excelSheet = excelBook.ActiveSheet; //激活Excel工作表
var rowLen = printTable.rows.length; //table對象的行數
for (var i = 0; i < rowLen; i++) {
var colLen = printTable.rows(i).cells.length; //table對象的列數
for (var j = 0; j < colLen; j++) //為Excel表的單元格賦值
excelSheet.Cells(i + 1, j + 1).value = printTable.rows(i).cells(j).innerText;
} //將表格中的每個單元格的innerText導入到excel的單元格中
excelApp.Visible = true; //設置Excel對象可見
excelSheet.PrintOut(); //列印工作表
excelBook.Close(true); //關閉文檔
excelApp.Quit(); //結束excel對象
excelApp = null; //釋放excel對象
}
}
</script>
注意:
運行該程序的前提是 IE要允許對沒有標記為安全的Activex控制項進行初始化和腳本運行。設置方法如下:
打開控制面板→Internet選項→安全性→自定義級別→對沒有標記為安全的ActiveX控制項進行初始化和腳本運行→選中啟用,這樣我們的程序就可以運行了。如果沒有啟用該ActiveX控制項設置,那麼程序在執行創建Excel對象時會拋出一個異常,這時可以通過catch()語句來捕獲這個異常,並且做出相應的處理。
運行該程序必須客戶端安裝了MS EXCEL,否則Activex驅動不了。
❺ 怎麼做一個word模板,用java調用列印功能
1、首先新建一個空白文檔,並另存為「Normal.dotm(Word2007及以後版本)Normal.dot(Word2003-2007版本)」。
2、進行需要的模板設置,對字體、段落、頁眉頁腳,頁面邊距等進行設置。
3、對字體、段落的設置:在空白的新文檔中,右擊進行對字體的設置,在設置完成後,點擊「默認」按鈕。
4、對頁眉頁腳,頁面邊距:同樣在菜單欄,選擇插入"頁眉頁腳"進行設置,設置後點擊「默認」按鈕,並同時設置「頁面邊距」並點擊「默認」按鈕。
5、在全面進行模板設置後,需要保存,在操作中會出現對一些「默認的設置」如果所示,要選擇「是」,「你准備將默認的字體更改為.....,是否將此更改應用於所有基於NORMAL模板的新文檔?」
6、把剛才保存的模板,復制起來,在打開「C:\Users\Administrator\AppData\Roaming\Microsoft\Templates」替換原有的Normal.dotm或Normal.dot,關閉。
7、測試效果:打開一個Word文檔,並按下「CTRL+N」新建一個空白文檔,任意輸入內容,可以看到是剛才設置的模板。
java實現調用默認列印機列印文檔(以D盤.txt文檔為例),代碼如下:
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import javax.print.Doc;
import javax.print.DocFlavor;
import javax.print.DocPrintJob;
import javax.print.PrintException;
import javax.print.PrintService;
import javax.print.PrintServiceLookup;
import javax.print.ServiceUI;
import javax.print.SimpleDoc;
import javax.print.attribute.DocAttributeSet;
import javax.print.attribute.HashDocAttributeSet;
import javax.print.attribute.HashPrintRequestAttributeSet;
import javax.print.attribute.PrintRequestAttributeSet;
/**
* 調用列印機功能
* @author Administrator
**/
public class PrintDemoII {
public static void main(String[] args) {
DocFlavor flavor = DocFlavor.INPUT_STREAM.AUTOSENSE;
PrintRequestAttributeSet aset = new HashPrintRequestAttributeSet();
PrintService []pservices = PrintServiceLookup.lookupPrintServices(flavor, aset);
PrintService defaultService = PrintServiceLookup.lookupDefaultPrintService();
PrintService service = ServiceUI.printDialog(null, 200, 200, pservices,
defaultService, flavor, aset);
if(service != null){
try {
DocPrintJob pj =service.createPrintJob();
FileInputStream fis = new FileInputStream("D:"+ File.separator +".txt");//列印D盤.txt文檔。
DocAttributeSet das = new HashDocAttributeSet();
Doc doc = new SimpleDoc(fis, flavor, das);
pj.print(doc, aset);
} catch (FileNotFoundException fe) {
fe.printStackTrace();
} catch (PrintException e) {
e.printStackTrace();
}
}else {
System.out.println("列印失敗");
}
}
}
❻ 關於java列印到問題 現在我已經生成一個html 該如何列印的word
這個問題很容易解決,jquery可以方便的實現,如下 :
<script type="text/javascript" src="jquery-1.4.2.min.js"></script>
<script type="text/javascript" src="jquery.PrintArea.js"></script>
<script>
$(document).ready(function(){
$("input#biuuu_button").click(function(){
$("div#myPrintArea").printArea();
});
});
</script>
<input id="biuuu_button" type="button" value="列印"></input>
<div id="myPrintArea">.....文本列印部分.....</div>
❼ 使用java如何將伺服器端的word文檔在客戶端列印出來,不允許下載。最好也不要頁面展示,有辦法實現么
你說阻止下載、保存提示,但是又要打開伺服器端站點的資源。
可是你要弄明白一點,就算是頁面上的一張圖片,都是從伺服器下載過來的資源,只是瀏覽器默認載入而已。如何不在頁面顯示word文檔內容,也不通過下載,那客戶端如何能看到伺服器端的資源文檔?
❽ java怎麼列印Hello Word!
public int print(Graphics gra, PageFormat pf, int pageIndex) throws PrinterException {
System.out.println("pageIndex=" + pageIndex);
Component c = null;
//print string
String str = "
Hello Word!
";
//轉換成Graphics2D
Graphics2D g2 = (Graphics2D) gra;
//設置列印顏色為黑色
g2.setColor(Color.black);
//列印起點坐標
double x = pf.getImageableX();
double y = pf.getImageableY();
switch (pageIndex) {
case 0:
//設置列印字體(字體名稱、樣式和點大小)(字體名稱可以是物理或者邏輯名稱)
//Java平台所定義的五種字體系列:Serif、SansSerif、Monospaced、Dialog 和 DialogInput
Font font = new Font("新宋體", Font.PLAIN, 9);
g2.setFont(font);//設置字體
//BasicStroke bs_3=new BasicStroke(0.5f);
float[] dash1 = {2.0f};
//設置列印線的屬性。
//1.線寬 2、3、不知道,4、空白的寬度,5、虛線的寬度,6、偏移量
g2.setStroke(new BasicStroke(0.5f, BasicStroke.CAP_BUTT, BasicStroke.JOIN_MITER, 2.0f, dash1, 0.0f));
//g2.setStroke(bs_3);//設置線寬
float heigth = font.getSize2D();//字體高度
System.out.println("x=" + x);
// -1- 用Graphics2D直接輸出
//首字元的基線(右下部)位於用戶空間中的 (x, y) 位置處
//g2.drawLine(10,10,200,300);
Image src = Toolkit.getDefaultToolkit().getImage("F:\\workspace\\QQ.png");
g2.drawImage(src, (int) x, (int) y, c);
int img_Height = src.getHeight(c);
int img_width = src.getWidth(c);
//System.out.println("img_Height="+img_Height+"img_width="+img_width) ;
g2.drawString(str, (float) x, (float) y + 1 * heigth + img_Height);
g2.drawLine((int) x, (int) (y + 1 * heigth + img_Height + 10), (int) x + 200, (int) (y + 1 * heigth + img_Height + 10));
g2.drawImage(src, (int) x, (int) (y + 1 * heigth + img_Height + 11), c);
return PAGE_EXISTS;
default:
return NO_SUCH_PAGE;
}
}
❾ 關於java實現批量列印word文檔功能
操作word可以使用apache的POI框架,這個具有對於word的完全操作能力,列印功能一看api便知