AtNotes Übersicht Willkommen Gast. Bitte einloggen oder registrieren.
01.04.20 - 04:07:41
Übersicht Hilfe Regeln Glossar Suche Einloggen Registrieren
News:
Schnellsuche:
+  Das Notes Forum
|-+  Lotus Notes / Domino Sonstiges
| |-+  Java und .NET mit Notes/Domino (Moderatoren: Axel, m3)
| | |-+  Absturz beim PDF-Druck
« vorheriges nächstes »
Seiten: [1] Nach unten Drucken
Autor Thema: Absturz beim PDF-Druck  (Gelesen 5599 mal)
v_haderer
Junior Mitglied
**
Offline Offline

Geschlecht: Männlich
Beiträge: 88


« 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.  Huh Huh Huh

Hatte jemand von euch schonmal ein ähnliches Verhalten oder gar eine Lösung
Gespeichert
flaite
Gold Platin u.s.w. member:)
*****
Offline Offline

Beiträge: 2966


WWW
« Antworten #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.

Gespeichert

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
Seiten: [1] Nach oben Drucken 
« vorheriges nächstes »
Gehe zu:  


Einloggen mit Benutzername, Passwort und Sitzungslänge

Powered by MySQL Powered by PHP Powered by SMF 1.1.21 | SMF © 2006, Simple Machines Prüfe XHTML 1.0 Prüfe CSS
Impressum Atnotes.de - Powered by Syslords Solutions - Datenschutz | Partner: