Toon posts:

[Java] PDF Printen vanuit JAVA ?

Pagina: 1
Acties:
  • 119 views sinds 30-01-2008

Verwijderd

Topicstarter
Ik ben bezig om een PDF welke is aangemaakt in Java te laten printen. Maar ik kan nergens goede informatie vinden welke dat uitlegt ?

Het zit dus zo in elkaar:
Eerst wordt er een formulier ingevuld welke doormiddel van een knop wordt opgeslagen. In een pdf en tevens wordt het formulier in een database verwerkt. De PDF wordt weggeschreven met het klantnummer.pdf. Nu moet het zo zijn dat doormiddel van een knop (ActionListener) de PDF wordt geprint.

Is er iemand bekend met het printen van PDF in Java en zo ja hoe. Ik maak gebruik van IText om de PDF weg te schrijven.

  • Creepy
  • Registratie: Juni 2001
  • Laatst online: 06-05 18:51

Creepy

Tactical Espionage Splatterer

Ik kom via google (http://www.google.nl/sear...a+print&btnG=Zoeken&meta=) bruikbare links tegen? Van antwoorden dat je zal moeten gaan printen via gsprint of het direct aanroepen van acrobat reader. Dat is niet bruikbaar? Zelfs in de FAQ van Itext wordt er wat over verteld.

En ja, via Itext zelf kan je blijkbaar niet direct printen.

"I had a problem, I solved it with regular expressions. Now I have two problems". That's shows a lack of appreciation for regular expressions: "I know have _star_ problems" --Kevlin Henney


Verwijderd

Topicstarter
Klopt ik heb er ook al het een en ander over gelezen maar ik was benieuwd of er mensen zijn die dit zelf hebben gemaakt of iets dergelijks ?

  • NMe
  • Registratie: Februari 2004
  • Laatst online: 15-04 22:07

NMe

Quia Ego Sic Dico.

Vanuit de eerste hit uit de Google-query van Creepy kom ik na nog geen 10 posts al aan de volgende link: http://www.mycgiserver.com/~zhouwu/pdf/readme.html

Ik kan me bijna niet voorstellen dat je daar niks mee kan. ;)

'E's fighting in there!' he stuttered, grabbing the captain's arm.
'All by himself?' said the captain.
'No, with everyone!' shouted Nobby, hopping from one foot to the other.


Verwijderd

Topicstarter
Dat is wel een zeer ingewikkelde manier ? Er is geen JAVA library die gewoon een variabel pdf bestand kan aanroepen en deze meteen laten printen ?

Misschien is het ook makkelijker om de PDF te laten openen, en deze dan zelf de printopdracht te geven ?

Zijn er verder helemaal geen mensen met deze ervaringen ?

  • Gert
  • Registratie: Juni 1999
  • Laatst online: 05-12-2025
Na lang zoeken heb ik besloten dit in Windows via ghostscript op te lossen. Is niet ideaal maar de acrobat reader v7 wil niet meer vanzelf sluiten dus da's ook geen oplossing.
In linux genereer ik ps bestanden maar daar zou je de gegeven oplossing voor kunnnen gebruiken.

Je zou ook naar apache fop kunnen kijken. Volgens mij kan die ook pdf's printen die niet door fop zelf gegenereerd zijn, echter dan moet je wel awt gebruiken.

Verwijderd

Topicstarter
Dus het is nog een aardige klus om een PDF te laten uitprinten ?

Misschien dat ik dan een optie maak om alleen de PDF te openen. En dat vanuit daar de PDF geprint kan worden. Anders wordt het denk ik een te grote klus. Heb je ervaring met het openen van PDF's vanuit Java ?

  • killercow
  • Registratie: Maart 2000
  • Laatst online: 30-04 10:06

killercow

eth0

Ik zou inderdaad iets van een pdf-ps brug gebruiken, en dan de ps direct naar de printer sturen, hoe je dit precies doet in java weet ik niet, maar zo werken eigenlijk de meeste pdf printende programma intern.

openkat.nl al gezien?


Verwijderd

Topicstarter
Ik heb het nu bijna voor elkaar vanuit een actionListener wordt Print.java aangeroepen:

Java:
1
2
3
4
5
6
class PrintMagKnopHandler implements ActionListener {
    public void actionPerformed(ActionEvent e) {
        String ordernr = tfOrderNr.getText(); 
        print = new Print(ordernr);
        }
     }


Nu start adobe op alleen laat verder alleen de melding achter dat ie het bestand niet kan openen. Dat zou goed kunnen want ik heb nergens aangegeven welk bestand hij moet opvragen ? Wie kan mij vertellen waar ik dat moet aanpassen in de onderstaande code ?

Java:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
import java.io.*;

 /********************************************************************************************
 *  printPDF
 *
 *  Prints a PDF using Adobe Reader "/t" (print and terminate)
 *
 *  @param  File               File to be printed, for example, C:\MYFILE.PDF
 *  @param  Printer            Printer, for example, \\MYSERVER\MYPRINTER
 *
 **********************************************************************************************/
 
 public class Print{
     
 String pFile;
 String pPrinter;    
 
     public Print(String ordern){
         
     final String PATH_ADOBE_READER = "C:\\Program Files\\Adobe\\Acrobat 6.0\\Reader\\AcroRd32.exe";
     final String ADOBE_READER_PRINT_COMMAND = "/t"; 
     final String SLASH = "/";
     final String QUOTE = "\"";
     final String SPACE = " ";

     // Command to be executed
     String lCommand = QUOTE + PATH_ADOBE_READER + QUOTE + SPACE +
                        ADOBE_READER_PRINT_COMMAND + SPACE  +
                        QUOTE + pFile + QUOTE + SPACE +
                        QUOTE + pPrinter + QUOTE;

     System.out.println("[printPDF] Command to be executed : " + lCommand);

     Process lAdobeBackGroundProcess = null;
     Process lAdobeProcess = null;

     try
     {
         // Must create a background Adobe Reader process (don't ask why, just do it;-)
         lAdobeBackGroundProcess = Runtime.getRuntime().exec(PATH_ADOBE_READER);

         // Execute the Adobe Reader command "/t" (print and terminate)
         lAdobeProcess = Runtime.getRuntime().exec(lCommand);

         // Wait for Adobe Reader to complete
         int exitVal = lAdobeProcess.waitFor();
         if ( exitVal != 0 )
         {
             throw new Exception("[printPDF] Adobe Reader process exitVal : " + exitVal);
         }
     }
     catch (Exception e)
     {
         System.err.println("[printPDF] Error printing PDF : " + pFile);
         e.printStackTrace();
     }
     finally
     {
         if (lAdobeBackGroundProcess != null)
         {
             lAdobeBackGroundProcess.destroy();
             lAdobeBackGroundProcess = null;
         }
        }
       }
      }

  • Creepy
  • Registratie: Juni 2001
  • Laatst online: 06-05 18:51

Creepy

Tactical Espionage Splatterer

Verwijderd schreef op woensdag 08 juni 2005 @ 15:14:

Nu start adobe op alleen laat verder alleen de melding achter dat ie het bestand niet kan openen. Dat zou goed kunnen want ik heb nergens aangegeven welk bestand hij moet opvragen ? Wie kan mij vertellen waar ik dat moet aanpassen in de onderstaande code ?
Sorry, maar zoals je in Welkom in P&W: FAQ en Beleid *updated: 20 mei* had kunnen lezen werkt het zo hier niet. Debuggen doen we hier in eerste instantie zelf. Nadat je dat hebt gedaan en er dan nog niet bent uitgekomen kan je prima een topic daarover openen. Op dat moment weet je ook beter waar het mis gaat en kan je de relevante code posten i.p.v. een complete method.

Daarnaast heb ik met google al kant en klare code voorbij zien komen voor het printen via Adobe.

"I had a problem, I solved it with regular expressions. Now I have two problems". That's shows a lack of appreciation for regular expressions: "I know have _star_ problems" --Kevlin Henney

Pagina: 1

Dit topic is gesloten.