我有RTF文件在服務器上我想直接使用JAVA程序打印輸出該文件。 我嘗試下面的代碼(僅考慮一臺打印機(LIPI)連接到服務器)將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 \弗羅曼\ fcharset0時代新 羅馬;} {\ F1 \弗羅曼\ fcharset0快遞;} {\ F2 \弗羅曼\ fcharset0 宋體; } {\ f3 \ froman \ fcharset0 unknown;}} {\ 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 heading 3;} {\ style \ s2 \ ql \ fi0 \ li0 \ ri0 \ f2 \ fs28 \ b \ i \ cf0 heading 2;} {\ style \ s1 \ ql \ fi0 \ li0 \ ri0 \ f2 \ fs32 \ b \ cf0 heading 1;}} ..... ....
.... ...
我哪裏錯了?
您需要一個RTF渲染引擎,與打印前需要渲染HTML頁面的方式相同。 –
@ThorbjørnRavn Andersen:你可以爲'JAVA'建議一個'RTF渲染引擎',我可以在哪裏獲得它,以及如何將它放置在打印機和類之間...... –
不,我沒有使用RTF引擎的經驗。準備付錢。 –