Drucken mit Java über FOP

Status
Nicht offen für weitere Antworten.

asterix

Mitglied
Hallo zusammen,

ich habe ein kleines Problem beim Drucken mit FOP.

Ich möchte gerne eine PDF datei drucken oder zumindest grafisch drucken.
Ich habe eine XML datei und das dazugehörige XSL. Daraus kann ich ja file.fo generieren (da universeller)
zu guter letzt würde ich dies gerne drucken doch das klappt mit den FOP nicht so (aus java heraus).

Die PDF datei zu erzeugen ist ja nicht so schwer aber weiter.....????

Habt ihr vielleicht eine Idee oder einen Code-Schnippsel wie man so etwas macht??

Gruß
asterix
 

DP

Top Contributor
wenn du dich bis heute abend gedulden kannst, kann ich dir ein code posten. habe das bei meinem ex-arbeitgeber gemacht, daher ist der code zu hause...

cu
 

DP

Top Contributor
btw., kommst mit dem beispiel von fop nicht zurecht?

Code:
/*
 * $Id$
 * ============================================================================
 *                    The Apache Software License, Version 1.1
 * ============================================================================
 * 
 * Copyright (C) 1999-2003 The Apache Software Foundation. All rights reserved.
 * 
 * Redistribution and use in source and binary forms, with or without modifica-
 * tion, are permitted provided that the following conditions are met:
 * 
 * 1. Redistributions of source code must retain the above copyright notice,
 *    this list of conditions and the following disclaimer.
 * 
 * 2. Redistributions in binary form must reproduce the above copyright notice,
 *    this list of conditions and the following disclaimer in the documentation
 *    and/or other materials provided with the distribution.
 * 
 * 3. The end-user documentation included with the redistribution, if any, must
 *    include the following acknowledgment: "This product includes software
 *    developed by the Apache Software Foundation ([url]http://www.apache.org/[/url])."
 *    Alternately, this acknowledgment may appear in the software itself, if
 *    and wherever such third-party acknowledgments normally appear.
 * 
 * 4. The names "FOP" and "Apache Software Foundation" must not be used to
 *    endorse or promote products derived from this software without prior
 *    written permission. For written permission, please contact
 *    [email]apache@apache.org[/email].
 * 
 * 5. Products derived from this software may not be called "Apache", nor may
 *    "Apache" appear in their name, without prior written permission of the
 *    Apache Software Foundation.
 * 
 * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED WARRANTIES,
 * INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
 * FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
 * APACHE SOFTWARE FOUNDATION OR ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
 * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLU-
 * DING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS
 * OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
 * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
 * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
 * ============================================================================
 * 
 * This software consists of voluntary contributions made by many individuals
 * on behalf of the Apache Software Foundation and was originally created by
 * James Tauber <jtauber@jtauber.com>. For more information on the Apache
 * Software Foundation, please see <http://www.apache.org/>.
 */ 
package embedding;

//Java
import java.io.File;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;

//SAX
import org.xml.sax.InputSource;

//Avalon
import org.apache.avalon.framework.ExceptionUtil;
import org.apache.avalon.framework.logger.Logger;
import org.apache.avalon.framework.logger.ConsoleLogger;

//FOP
import org.apache.fop.apps.Driver;
import org.apache.fop.apps.FOPException;
import org.apache.fop.messaging.MessageHandler;

/**
 * This class demonstrates the conversion of an FO file to PDF using FOP.
 */
public class ExampleFO2PDF {

    public void convertFO2PDF(File fo, File pdf) throws IOException, FOPException {
        
        //Construct driver
        Driver driver = new Driver();
        
        //Setup logger
        Logger logger = new ConsoleLogger(ConsoleLogger.LEVEL_INFO);
        driver.setLogger(logger);
        MessageHandler.setScreenLogger(logger);

        //Setup Renderer (output format)        
        driver.setRenderer(Driver.RENDER_PDF);
        
        //Setup output
        OutputStream out = new java.io.FileOutputStream(pdf);
        try {
            driver.setOutputStream(out);

            //Setup input
            InputStream in = new java.io.FileInputStream(fo);
            try {
                driver.setInputSource(new InputSource(in));
            
                //Process FO
                driver.run();
            } finally {
                in.close();
            }
        } finally {
            out.close();
        }
    }


    public static void main(String[] args) {
        try {
            System.out.println("FOP ExampleFO2PDF\n");
            System.out.println("Preparing...");
            
            //Setup directories
            File baseDir = new File(".");
            File outDir = new File(baseDir, "out");
            outDir.mkdirs();

            //Setup input and output files            
            File fofile = new File(baseDir, "xml/fo/helloworld.fo");
            File pdffile = new File(outDir, "ResultFO2PDF.pdf");

            System.out.println("Input: XSL-FO (" + fofile + ")");
            System.out.println("Output: PDF (" + pdffile + ")");
            System.out.println();
            System.out.println("Transforming...");
            
            ExampleFO2PDF app = new ExampleFO2PDF();
            app.convertFO2PDF(fofile, pdffile);
            
            System.out.println("Success!");
        } catch (Exception e) {
            System.err.println(ExceptionUtil.printStackTrace(e));
            System.exit(-1);
        }
    }
}
 

thE_29

Top Contributor
also wenn du so (mittels java libs) pdf drucken willst, brauchst du einen drucker der das unterstützt (haben in der firma, ca 10 drucker, keiner kanns....)

aber ps kann jeder, ansonsten hier mal was

Code:
  public PrintPS(String strFilename, int iDevice)
  {
    try
    {
      PrintRequestAttributeSet pras = new HashPrintRequestAttributeSet();
      //setzt das auszudruckend Dokument fest
      DocFlavor flavor = DocFlavor.INPUT_STREAM.POSTSCRIPT;
      PrintService printService[] = PrintServiceLookup.lookupPrintServices(
          flavor, pras);
      PrintService defaultService = PrintServiceLookup.
          lookupDefaultPrintService();

      PrintService service = null;
      //wenn als Device -1 übergeben wird, wird ein Dialog für das drucken auswählen ausgegeben!
      if (iDevice == -1)
      {
        service = ServiceUI.printDialog(null, 200, 200,
            printService, defaultService, flavor, pras);
      }
      //ansonsten wird der 1te (Standard/Default) Drucker genommen
      else
      {
        //wenn es keine Drucker gibt und das Device niedriger ist als die Länge
        if (printService != null && printService.length != 0 && printService.length > iDevice)
        {
          service = printService[iDevice];
        }
        //ansonsten standarddevice
        else if(printService != null && printService.length != 0)
        {
          service = printService[0];
        }
      }
      if(strFilename == null)
      {
        return;
      }
      //wenn der Service nicht null ist, wird ausgedruckt
      if (service != null)
      {
        DocPrintJob job = service.createPrintJob();
        //fügt listener hinzu
        job.addPrintJobListener(drucker);
        FileInputStream fis = new FileInputStream(strFilename);
        DocAttributeSet das = new HashDocAttributeSet();
        Doc doc = new SimpleDoc(fis, flavor, das);
        job.print(doc, pras);
      }
    }
    //wenn kein Druckerdevice gefunden wurde!!
    catch (ArrayIndexOutOfBoundsException ex)
    {
      ex.printStackTrace();
    }
    //bei sonstigen Exceptions!
    catch (Exception ex)
    {
      ex.printStackTrace(System.out);
    }
}

musst halt in ein ps umwandeln oder änder die Zeile auf pdf
DocFlavor flavor = DocFlavor.INPUT_STREAM.PDF;
 

DP

Top Contributor
wieso braucht er einen drucker, der das kann? er muss beim pdf-druck halt keinen drucker emulieren, fettich.
 

thE_29

Top Contributor
weil er dir dann eine exception wirft und irgendwas zusammenschreibt das er es net kann (war bei mir so)

Es gehen sonst eigentlich alle typen, bei allen Druckern, nur halt pdf net!
 

DP

Top Contributor
keine ahnung, das problem habe ich noch nie gehabt.

na ejaaaal, hauptsache der jong bekommt seine pdf generiert :D
 

asterix

Mitglied
Hallo DP,

zu deinem bsp. hier wird doch nur eine PDF datei erzeugt aber nicht gedruckt oder...??

Hallo thE 29,

bei deinem bsp. mit dem Postscript wollte ich fragen, ob die iDevice die nummer des Standarddruckers ist... desweiteren wollte ich fragen, ob man einem Drucker explizit sagen muss das er Postscripts druckt da nur einer von 6 Druckern in der Druckerauswahl steht...??

Besten dank im voraus und grüssle
 

thE_29

Top Contributor
das device sind die drucker! 0 - x
bei -1 kommt der schöne druckerauswahldialog

und das mit dem explizit sagen, was er drucken soll (PostSCRIPT, JPG,PDF,GIF) ist glaub ich damit er weiß wie er es drucken soll!

Könntest ja eine Dateiendung abfrage machen und danach den Drucktyp wählen!
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
B Drucken in JAVA -> nicht "Java printing" Java Basics - Anfänger-Themen 3
I Drucken in Java / verschiedene Papierformate Java Basics - Anfänger-Themen 0
I Erste Schritte Drucken in JAVA / Druckaufträge etc. Java Basics - Anfänger-Themen 15
T Drucken mit Java Java Basics - Anfänger-Themen 16
C Drucken/Druckdesign mit Java Java Basics - Anfänger-Themen 8
G Mit Java Drucken Java Basics - Anfänger-Themen 11
T [Minimalprogramm] mit Java Drucken Java Basics - Anfänger-Themen 6
M Formatiert Drucken in Java Java Basics - Anfänger-Themen 3
F Java-Logo drucken Java Basics - Anfänger-Themen 2
M html-seite drucken (gerendert) Java Basics - Anfänger-Themen 3
T DamagedFontException beim drucken Java Basics - Anfänger-Themen 3
I Datei (Bild) Drucken und wie Druckeinstellung speichern? Java Basics - Anfänger-Themen 3
izoards Drucken Frage zu FAQ Beitrag Java Basics - Anfänger-Themen 2
U Drucken.. Birt vs Jasper Java Basics - Anfänger-Themen 1
H Drucken auf Drucker Java Basics - Anfänger-Themen 8
B Drucken mit einem Terminal / Bon Printer Java Basics - Anfänger-Themen 4
B HTML Code drucken Java Basics - Anfänger-Themen 4
B Drucken: Default Paper von Drucker? Mein Drucker druckt falsch Java Basics - Anfänger-Themen 3
D Erste Schritte HTML aus JEditorPane drucken Java Basics - Anfänger-Themen 5
I Drucken (Print) monitoren Java Basics - Anfänger-Themen 0
E Input/Output Drucken am Mac immer gleiche Schriftgröße?!? Java Basics - Anfänger-Themen 2
E Input/Output png Auf Dymo 450 drucken Java Basics - Anfänger-Themen 2
S JPanel drucken -> PrinterException Java Basics - Anfänger-Themen 2
J checkbox status abfragen und drucken Java Basics - Anfänger-Themen 13
K doppeltes paint beim Drucken Java Basics - Anfänger-Themen 8
B Source Code "in einem Rutsch" drucken in Eclipse Java Basics - Anfänger-Themen 5
K Drucken Java Basics - Anfänger-Themen 8
O OOP prindata Methode aufrufen!? Methode drucken + Konstruktor Java Basics - Anfänger-Themen 9
G DRUCKEN von z.B. eines JFrame über print(Graphics g) Java Basics - Anfänger-Themen 9
K einfaches Drucken von Text (und ggf Bildern,gemischt) Java Basics - Anfänger-Themen 11
N barbecue Barcodes drucken Java Basics - Anfänger-Themen 5
H Bericht drucken Java Basics - Anfänger-Themen 4
L drucken mit DocPrintJob Java Basics - Anfänger-Themen 3
R Drucken mithilfe eines Externen ActionListeners Java Basics - Anfänger-Themen 17
S Inhalt von GUI-Eingabe drucken Java Basics - Anfänger-Themen 7
I PDF aus JSF - Seite drucken mit iText Java Basics - Anfänger-Themen 5
J JTable Drucken Java Basics - Anfänger-Themen 3
J mit COM-Port drucken Java Basics - Anfänger-Themen 8
R mehrseitiges Drucken Java Basics - Anfänger-Themen 3
J Listen - Anzahl positiver Werte drucken Java Basics - Anfänger-Themen 8
H Papierschacht beim Drucken ansprechen Java Basics - Anfänger-Themen 4
T Drucken von Listen bestehend aus Grafik und Text (unter swing) Java Basics - Anfänger-Themen 7
A JTree drucken Java Basics - Anfänger-Themen 2
M html datei drucken Java Basics - Anfänger-Themen 18
E BufferedImage drucken Java Basics - Anfänger-Themen 3
K Drucken mit PrinterJob Java Basics - Anfänger-Themen 3
andresendo Drucken Java Basics - Anfänger-Themen 2
D Drucken - Seite leer Java Basics - Anfänger-Themen 2
S Drucken mit iText? Java Basics - Anfänger-Themen 7
T Formular drucken! Java Basics - Anfänger-Themen 2
S Drucken in farbe Java Basics - Anfänger-Themen 4
G Problem mit Drucken Java Basics - Anfänger-Themen 2
G Strings drucken Java Basics - Anfänger-Themen 2
N Im Querformat drucken mit PrintJob Java Basics - Anfänger-Themen 4
Z Drucken eines JTables mit Text drüber Java Basics - Anfänger-Themen 6
S ich komm mit dem drucken nich klar Java Basics - Anfänger-Themen 17
S Drucken! Java Basics - Anfänger-Themen 16
B Formatierung beim Drucken Java Basics - Anfänger-Themen 4
D Drucken Java Basics - Anfänger-Themen 3
M Drucken Java Basics - Anfänger-Themen 2
B RTF erstellen und drucken Java Basics - Anfänger-Themen 3
G Drucken mit PrintJob oder PrinterJob? Java Basics - Anfänger-Themen 4
F Drucken einer Text Datei Java Basics - Anfänger-Themen 2
M Probleme beim Drucken Java Basics - Anfänger-Themen 4
R String drucken Java Basics - Anfänger-Themen 3
G Drucken von pdf Dokumenten mit Lücken Java Basics - Anfänger-Themen 2
J Drucken von files Java Basics - Anfänger-Themen 4
D Drucken ohne Dialogfeld Java Basics - Anfänger-Themen 2
E HTML Datei drucken Java Basics - Anfänger-Themen 4
G drucken: genaues positionieren Java Basics - Anfänger-Themen 2
R rechtsbündiges Drucken Java Basics - Anfänger-Themen 2
G Drucken Java Basics - Anfänger-Themen 2
D PDF Dokument drucken Java Basics - Anfänger-Themen 10
S verständnisproblem drucken Java Basics - Anfänger-Themen 11
J Serienbrief drucken Java Basics - Anfänger-Themen 2
B Bilder drucken Java Basics - Anfänger-Themen 4
A Drucken und Vorschau Java Basics - Anfänger-Themen 4
S Noch ungelöst ! Klasse JTable und Klasse Drucken verknüpfen. Java Basics - Anfänger-Themen 8
M DATEI DRUCKEN ????? Java Basics - Anfänger-Themen 4
H .java Dateien in Eclipse einbinden und ausführen Java Basics - Anfänger-Themen 1
onlyxlia Schlüsselworte Was meint man mit "einen Typ" in Java erstellen? Java Basics - Anfänger-Themen 2
O Java Kara geschweifte Klammern Java Basics - Anfänger-Themen 2
richis-fragen Mausrad logitech kann links und rechts klick wie in java abragen. Java Basics - Anfänger-Themen 15
XWing Java Klssenproblem Java Basics - Anfänger-Themen 4
R Umgebungsvariable java -cp gibt immer Java-Hilfe... Java Basics - Anfänger-Themen 3
farbenlos Csv Datei in Java einlesen Java Basics - Anfänger-Themen 18
F TableModelListener: java.lang.ArrayIndexOutOfBoundsException: 132 Java Basics - Anfänger-Themen 3
G Java 8 - Support-Ende Java Basics - Anfänger-Themen 7
T Java Weihnachtsbaum + Rahmen Java Basics - Anfänger-Themen 1
N Will mit Java anfangen Java Basics - Anfänger-Themen 13
Ü Java Array - Buchstaben als Zahlen ausgeben Java Basics - Anfänger-Themen 22
M Java Iterator Verständnisfrage Java Basics - Anfänger-Themen 6
M Java Mail Programm Java Basics - Anfänger-Themen 4
Sniper1000 Java 391 für Windows Java Basics - Anfänger-Themen 37
J Java long- in int-Variable umwandeln Java Basics - Anfänger-Themen 6
JaZuDemNo Java im Studium Java Basics - Anfänger-Themen 7
E Java Programm zur anzeige, ob Winter- oder Sommerzeit herrscht Java Basics - Anfänger-Themen 62
I QR code in Java selber generieren Java Basics - Anfänger-Themen 5
V Java-Ausnahmebehandlung: Behandlung geprüfter Ausnahmen Java Basics - Anfänger-Themen 1
krgewb Java Streams Java Basics - Anfänger-Themen 10

Ähnliche Java Themen

Neue Themen


Oben