Autor Thema: Absturz beim PDF-Druck  (Gelesen 8025 mal)

Offline v_haderer

  • Junior Mitglied
  • **
  • Beiträge: 98
  • Geschlecht: Männlich
Absturz beim PDF-Druck
« 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

Offline flaite

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 2.966
    • mein del.icio.us
Re: Absturz beim PDF-Druck
« Antwort #1 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.

Ich stimm nicht mit allen überein, aber mit vielen und sowieso unterhaltsam -> https://www.youtube.com/channel/UCr9qCdqXLm2SU0BIs6d_68Q

---

Aquí no se respeta ni la ley de la selva.
(Hier respektiert man nicht einmal das Gesetz des Dschungels)

Nicanor Parra, San Fabian, Región del Bio Bio, República de Chile

 

Impressum Atnotes.de  -  Powered by Syslords Solutions  -  Datenschutz