Буферизовать файл RTF напрямую на принтер Lipi из класса JAVA - PullRequest
0 голосов
/ 06 августа 2011

У меня есть файл 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");
      }

Файл помещается в буфер и принтер также запускается, но принтер печатаетсодержимое файла RTF thge, например содержимое файла text .Что нужно сделать, чтобы отобразить файл в RTF , а затем распечатать?

Я получил что-то подобное в распечатке.

\ rtf1 \ ansi \ ansicpg1252\ deff0 {\ fonttbl {\ f0 \ froman \ fcharset0 Times New Roman;} {\ f1 \ froman \ fcharset0 Courier;} {\ f2 \ froman \ fcharset0 Arial;} {\ 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 заголовок 3;} {\ style \ s2 \ ql \ fi0 \ li0 \ ri0 \ f2 \ fs28 \ b \ i \ cf0 заголовок 2;} {\ style \ s1 \ ql\ fi0 \ li0 \ ri0 \ f2 \ fs32 \ b \ cf0, заголовок 1;}} ..... .... ...

.... ... ...

Куда я иду не так?

1 Ответ

0 голосов
/ 06 августа 2011

тьфу, грязный бизнес. Самый простой способ - вызвать внешнюю программу, такую ​​как WordPad или OpenOffice, для прямой печати файла - например, если вы вызовете write.exe /p filename.rtf, появится диалоговое окно печати. Предполагается, что OpenOffice имеет мост с Java, и вы можете захотеть изучить javax.activation.

...