Das Notes Forum

Lotus Notes / Domino Sonstiges => Java und .NET mit Notes/Domino => Thema gestartet von: v_haderer am 01.06.16 - 11:32:52



Titel: Absturz beim PDF-Druck
Beitrag von: v_haderer am 01.06.16 - 11:32:52
Hallo Zusammen!
Im Folgenden wird ganz banal, ein PDF-Dokument an den jeweilig definierten Standarddrucker übergeben. Wird dieser Code in Eclipse selbst ausgeführt, so funktioniert er einwandfrei->

Code:
import java.awt.print.Book;
import java.awt.print.PageFormat;
import java.awt.print.Paper;
import java.awt.print.PrinterException;
import java.awt.print.PrinterJob;
import java.io.FileInputStream;
import java.io.IOException;
import java.nio.ByteBuffer;
import javax.print.PrintService;
import com.sun.pdfview.PDFFile;
import com.sun.pdfview.PDFPrintPage;
 

public class pdfPrintUI {
String fehler;


//######################################################################################
public static void main(String[] args) throws IOException, PrinterException {
       // 4 Test only
String fileName = "D:/Temp/test.pdf";     
new pdfPrintUI().pdfPrint(fileName);
}     


//######################################################################################
public boolean pdfPrint(String filePath)  {     
  try {
String printerName = "";
    String jobName = "PDF Print Job"; 

            FileInputStream fileInputStream = new FileInputStream(filePath);           
            byte[] pdfContent = new byte[fileInputStream.available()];           
            fileInputStream.read(pdfContent, 0, fileInputStream.available());           
            ByteBuffer buffer = ByteBuffer.wrap(pdfContent);           
            final PDFFile pdfFile = new PDFFile(buffer);           
            PDFPrintPage pages = new PDFPrintPage(pdfFile);           
            PrinterJob printJob = PrinterJob.getPrinterJob();           
            PageFormat pageFormat = PrinterJob.getPrinterJob().defaultPage();           
            printJob.setJobName(jobName);           
            Book book = new Book();           
            book.append(pages, pageFormat, pdfFile.getNumPages());                       
            printJob.setPageable(book);           
            Paper paper = new Paper();           
            paper.setImageableArea(0, 0, paper.getWidth(), paper.getHeight());           
            pageFormat.setPaper(paper);           
           
            PrintService[] printServices = PrinterJob.lookupPrintServices();
           
            for (int count = 0; count < printServices.length; ++count) {
                  if (printerName.equalsIgnoreCase(printServices[count].getName())) {
                        printJob.setPrintService(printServices[count]);
                        break;
                  }
            }
            System.out.println("1");
            printJob.print();
            System.out.println("2");
            return true;
           
   
}
   catch(PrinterException p){
    this.fehler = p.getMessage();
System.out.println(p.getMessage());
p.printStackTrace();

return false;
   }
 
  catch (IOException e) {
this.fehler = e.getMessage();
System.out.println(e.getMessage());
e.printStackTrace();

return false;
   }
  catch (Exception x) {


So weit so gut!

Erfolgt der Aufruf der Funktion aus LotusScript heraus.....

Code:

Function java_pdfPrintUI (quellfile As String) As Boolean
On Error Goto fehler

Dim js As JAVASESSION
Dim  pdfPrintClass As JAVACLASS
Dim bPClass As Variant
Dim result As Variant
Dim myError As JAVAERROR

' #######################################################################################################
java_pdfPrintUI   = False
Set js=New JAVASESSION

Set pdfPrintClass = js.GetClass("pdfPrintUI")
Set bPClass = pdfPrintClass.CreateObject
' #######################################################################################################
quellfile = "D:/temp/test.pdf"
result = bPClass.pdfPrint( quellfile )

' #######################################################################################################
ende:
java_pdfPrintUI = True
Exit Function
' #######################################################################################################
fehler:
Set myError = js.getLastJavaError()
Messagebox myError.errormsg,, "Error"
js.ClearJavaError
End Function



 so "bleibt LN ( 8.5.3FP6 ) stehen"...was da heißt:
Das PDf-Dokument landet noch im Spoolmananger und die "1" wird noch ausgegeben. Dann stehen sowohl LN als auch der Spoolmanager still...keine Fehlermeldung..garnichts..keinerlei Abbruchmöglichkeit.  ??? ??? ???

Hatte jemand von euch schonmal ein ähnliches Verhalten oder gar eine Lösung


Titel: Re: Absturz beim PDF-Druck
Beitrag von: flaite am 20.06.16 - 10:40:06
Versuch mal ein
Code:
Thread.sleep(10000);
nach dem
Code:
printJob.print();

Ist erstmal die harte Tour und kann nicht so bleiben, aber wenn das funktionieren sollte, wärst Du ein Schritt weiter.