[英]Spool a RTF file directly to a Lipi printer from a JAVA class
我的服務器上有RTF文件,我想直接使用JAVA程序獲取文件的打印輸出。 我嘗試了以下代碼(僅將一台打印機( LIPI )連接到服務器)
FileInputStream psStream = null;
try {
psStream = new FileInputStream("C://SampleBoard2.rtf");
} catch (FileNotFoundException ffne) {
ffne.printStackTrace();
}
if (psStream == null) {
return;
}
DocFlavor psInFormat = DocFlavor.INPUT_STREAM.AUTOSENSE;
Doc myDoc = new SimpleDoc(psStream, psInFormat, null);
PrintRequestAttributeSet aset = new HashPrintRequestAttributeSet();
PrintService[] services = PrintServiceLookup.lookupPrintServices(psInFormat, aset);
PrintService myPrinter = null;
for (int i = 0; i < services.length; i++){
String svcName = services[i].toString();
myPrinter = services[i];
}
if (myPrinter != null) {
DocPrintJob job = myPrinter.createPrintJob();
try {
job.print(myDoc, aset);
} catch (Exception pe) {pe.printStackTrace();}
} else {
System.out.println("no printer services found");
}
該文件將被后台處理到打印機,並且也開始打印,但是打印機會像文本文件內容一樣打印thge RTF文件的內容。 如何將文件呈現為RTF然后進行打印?
我在打印中得到了類似的東西。
\\ rtf1 \\ ansi \\ ansicpg1252 \\ deff0 {\\ fonttbl {\\ f0 \\ froman \\ fcharset0 Times New Roman;} {\\ f1 \\ froman \\ fcharset0 Courier;} {\\ f2 \\ froman \\ fcharset0 Arial;} {\\ f3 \\ froman \\ fcharset0未知;}} {\\ colortbl \\ red0 \\ green0 \\ blue0; \\ red255 \\ green255 \\ blue255;} {\\ stylesheet {\\ style \\ s0 \\ ql \\ fi0 \\ li0 \\ ri0 \\ f2 \\ fs24 \\ cf0 Normal;} {\\ style \\ s3 \\ ql \\ fi0 \\ li0 \\ ri0 \\ f2 \\ fs26 \\ b \\ cf0標題3;} {\\ style \\ s2 \\ ql \\ fi0 \\ li0 \\ ri0 \\ f2 \\ fs28 \\ b \\ i \\ cf0標題2;} { \\\\ style \\ s1 \\ ql \\ fi0 \\ li0 \\ ri0 \\ f2 \\ fs32 \\ b \\ cf0標題1;}} ..... .... ...
.... ... ...
我要去哪里錯了?
gh,可惡的生意。 最簡單的方法是調用諸如寫字板或openoffice之類的外部程序來直接打印文件-如果您調用write.exe /p filename.rtf
,它將彈出打印對話框。 OpenOffice應該與Java建立了橋梁,您可能需要研究javax.activation
。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.