Using java to print a document to a printer
how do i use java to print a document and send it to a desktop's existing printers?
The java print API is documented here
Edited by: yash_sharma on May 25, 2010 6:51 AM
Similar Messages
-
Problem with too small page size using Java 2D Printing API.
Hello,
I have problem with resolution of printer using Java 2D Printing API. Despite my printer has 600 x 600 DPI, inside java.awt.print.Printable.print(Graphics, PageFormat, int) I receive page format with 600 x 840 page size.
I have tried to set resolution using javax.print.attribute.PrintRequestAttributeSetand javax.print.attribute.standard.PrinterResolution, but with no result.
Can anybody solve this problem?
Regards,
Karl.600 x 840 is a Point value; Point is defined as 1/72nd of an inch. Printers do have much higher DPI than this, but I believe that this DPI has to do with richness of the printed image, not an actual ability to color with that level of resolution. You might want to try calling zoom on your Graphics2D object. Otherwise, I don't know what else you can try.
-
Reading word doc contents using java
hi
can u tell me how to read the word doc contents using java and print it
sameerHDF (Horrible Document Format)
HDF is our port of the Microsoft Word 97 file format to pure Java. It supports read and write capability. Please see the HDF project page for more information. This component is in the early stages of design. Jump in!
LOL :) -
How to print a document in reverse order using Java Print API ?
I need to print a document in reverse order using Java Print API (*Reverse Order Printing*)
Does Java Print API supports reverse order printing ?
Thnks.,deepak_c3 wrote:
Thanks for the info.,
where should the page number n-1-i be returned ?
Which method implementation of Pageable interface should return the page number ?w.r.t. your first question: don't return that number but return page n-1-i when page i is requested; your document will be printed in reverse order. Your class should implement the entire interface and wrap the original Pageable. (for that number n your class can consult the wrapped interface; read the API for the Pageable interface).
kind regards,
Jos -
Printing a PDF document using Java 1.4 Printing API
Hi,
When I tried to print a PDF document using JAVA 1.4 Printing API, I got the following exception.
Exception in thread "main" sun.print.PrintJobFlavorException: invalid flavor
at sun.print.Win32PrintJob.print(Win32PrintJob.java:290)
at Printing.main(Printing.java:40)
I am able to print the same PDF document using Acrobat reader.
Is PDF format not supported in JAVA 1.4 printing API? or is something wrong in my code?
here is the sample JAVA program that I was using
import javax.print.*;
import javax.print.attribute.*;
import java.io.*;
public class Printing {
public static void main(String args[]) throws Exception {
String filename = args[0];
PrintRequestAttributeSet pras =
new HashPrintRequestAttributeSet();
DocFlavor flavor = DocFlavor.INPUT_STREAM.PDF;
PrintService defaultService =
PrintServiceLookup.lookupDefaultPrintService();
DocPrintJob job = defaultService.createPrintJob();
FileInputStream fis = new FileInputStream(filename);
DocAttributeSet das = new HashDocAttributeSet();
Doc doc = new SimpleDoc(fis, flavor, das);
job.print(doc, pras);
Thread.sleep(10000);
System.exit(0);
Thank you
SumanaHere's a pure Java solution (that works!):
http://www.mycgiserver.com/~zhouwu/pdf/readme.html
The caveats are:
- prints only to the default printer
- requires a properties file located in the home directory
my workaround for the last:
* Print a PDF file to the default printer (might consume lots of memory!).
* <p>
* <b>Required:</b>
* <ul>
* <li>a file "acrobat.properties" needs to be in the working directory. The content is:
<table align="center" bgcolor="#E0E0E0" border=1 cellpadding="10" cellspacing="0"><tr><td><pre style="margin-top:0; margin-bottom:0">
#com.adobe.acrobat.Viewer Properties
#Wed Oct 29 20:34:05 PST 2003
com.adobe.acrobat.AcceptedLicAgreement=true
com.adobe.acrobat.Fax_Fine_Mode=true
com.adobe.acrobat.Find\:FindAll=false
com.adobe.acrobat.Find\:FindBackwards=false
com.adobe.acrobat.Find\:FindWholeWord=false
com.adobe.acrobat.Find\:MatchCase=false
com.adobe.acrobat.Open_Dialog_Directory=C\:\\temp\\
com.adobe.acrobat.Open_Dialog_File=itext.pdf
com.adobe.acrobat.Print_Method_Known=true
com.adobe.acrobat.Shrink_To_Fit=false
com.adobe.acrobat.SitePreferencesURL=file\://localhost/C\:/pdf/acrobat-site.properties
com.adobe.acrobat.Use_Print_Server=false
com.adobe.acrobat.util.fontDirectories=C\:\\Winnt\\Fonts
com.adobe.acrobat.util.fontIgnoreExtensions=.fon;.pfm;.ini;.lst;.txt;.doc;.ttmap;.z;.enc;.dir;.afm;.f3b;.pfa;.spd;.ps;.bepf;.map;.alias;.scale;.all;.upr
</pre></td></tr></table>
* <li>The JAR files PDFPrinter.jar, acrobat.jar and MRJToolkitStubs.zip in the CLASSPATH.
* </ul>
* <p>
* Note: the file "acrobat.properties" is expected to be in the user's home directory. As this is not always feasible,
* the system property "user.home" is mapped to "user.dir" for the time of execution.
* @param fileName Name of PDF file to print.
* @throws Exception on error.
* @see <a href="http://www.mycgiserver.com/~zhouwu/pdf/readme.html">PDF Server (Silent) Printing</a>
public void printPDF(String fileName) throws Exception {
String oldHome = System.getProperty("user.home");
System.setProperty("user.home", System.getProperty("user.dir"));
PDFPrinter vi = new PDFPrinter();
vi.activate();
vi.setDocumentInputStream(new FileInputStream(fileName));
vi.printAll();
System.setProperty("user.home", oldHome);
}//printPDF()I just need the following additional files in my CLASSPATH: PDFPrinter.jar, acrobat.jar and MRJToolkitStubs.zip. Despite the note at the site above that "printing quality is not very good", i can't agree: the print quality is quite good. Not perfect, but acceptable for most uses.
(Tested on Windows 2000 SP4, J2SE 1.4.2_03, hp laserjet 2300dn) -
Directly Printing RTF document using java
Hi,
can we directly print RTF document using java, without giving any preview or any other screen in between.
Actually we created inventory system, in which when user create any sale information, it should print the bill for the same with single button click.
Any sample code or help will be highly appreciated
Thanks in advanceHi,
can we directly print RTF document using java, without giving any preview or any other screen in between.
Actually we created inventory system, in which when user create any sale information, it should print the bill for the same with single button click.
Any sample code or help will be highly appreciated
Thanks in advance -
hai,
how can print the text(.txt) file or some message to the printer using Java?
pls answer it.import java.awt.*;
import java.awt.event.*;
import java.awt.print.Printable;
import java.awt.print.*;
import javax.swing.*;
import java.awt.Graphics;
import java.text.*;
import java.awt.geom.Point2D;
import java.awt.font.LineBreakMeasurer;
import java.awt.font.TextLayout;
import java.util.Vector;
public class Print implements Printable {
private AttributedString mStyledText = null;
private Vector msg = new Vector();
public Print( Vector msg ) {
this.msg = msg;
public int print(Graphics g, PageFormat format, int pageIndex) {
Graphics2D g2d = (Graphics2D) g;
/* Move the origin from the corner of the Paper to the corner
* of the imageable area.
g2d.translate(format.getImageableX(),format.getImageableY());
/* Set the text color.
g2d.setPaint(Color.black);
/* Use a LineBreakMeasurer instance to break our text into
* lines that fit the imageable area of the page.
Point2D.Float pen = new Point2D.Float();
for ( int i = 0; i < msg.size(); i++ ) {
mStyledText = new AttributedString((String)msg.get( i ) );
AttributedCharacterIterator charIterator =mStyledText.getIterator();
LineBreakMeasurer measurer = new LineBreakMeasurer(charIterator, g2d.getFontRenderContext());
float wrappingWidth = (float)format.getImageableWidth();
while (measurer.getPosition() <charIterator.getEndIndex()) {
TextLayout layout = measurer.nextLayout(wrappingWidth );
pen.y += layout.getAscent();
float dx = layout.isLeftToRight() ? 0 :(wrappingWidth - layout.getAdvance());
layout.draw(g2d, pen.x + dx, pen.y);
pen.y += layout.getDescent() +layout.getLeading();
if ( pageIndex > 0 ) {
return this.NO_SUCH_PAGE;
}else {
return this.PAGE_EXISTS;
try this class. the msg Vector contains the text lines that you would like to print.
Hope this helps. -
Print documents using java program.
Java program printing documents in a printer.
I want to do this in applet..
but for the time being can atleast a java program do this???Of course it can.
http://www.google.com/search?q=java+printing+tutorial -
How do i use java printing api 1.4
How can i print documents using jdk1.4 api.
I have used the following program for printing.
import java.io.*;
import java.awt.*;
import java.awt.print.*;
import javax.print.*;
import javax.print.attribute.*;
import javax.print.attribute.standard.*;
public class Print2DtoStream implements Printable{
public Print2DtoStream() {
/* Use the pre-defined flavor for a Printable from an InputStream */
DocFlavor flavor = DocFlavor.SERVICE_FORMATTED.PRINTABLE;
/* Specify the type of the output stream */
String psMimeType = DocFlavor.BYTE_ARRAY.POSTSCRIPT.getMimeType();
/* Locate factory which can export a GIF image stream as Postscript */
StreamPrintServiceFactory[] factories =
StreamPrintServiceFactory.lookupStreamPrintServiceFactories(flavor, psMimeType);
if (factories.length == 0) {
System.err.println("No suitable factories");
System.exit(0);
try {
/* Create a file for the exported postscript */
FileOutputStream fos = new FileOutputStream("out.ps");
/* Create a Stream printer for Postscript */
StreamPrintService sps = factories[0].getPrintService(fos);
/* Create and call a Print Job */
DocPrintJob pj = sps.createPrintJob();
PrintRequestAttributeSet aset = new HashPrintRequestAttributeSet();
Doc doc = new SimpleDoc(this, flavor, null);
pj.print(doc, aset);
fos.close();
} catch (PrintException pe) {
System.err.println(pe);
} catch (IOException ie) {
System.err.println(ie);
public int print(Graphics g,PageFormat pf,int pageIndex) {
if (pageIndex == 0) {
Graphics2D g2d= (Graphics2D)g;
g2d.translate(pf.getImageableX(), pf.getImageableY());
g2d.setColor(Color.black);
g2d.drawString("example string", 250, 250);
g2d.fillRect(0, 0, 200, 200);
return Printable.PAGE_EXISTS;
} else {
return Printable.NO_SUCH_PAGE;
public static void main(String args[]) {
Print2DtoStream sp = new Print2DtoStream();
However when i run this program,it prints "example string" as used in g2d.drawString("example string",250,250) method above.
What if i want to print content from any file.
So anybody konwing this plz replyThis is covered pretty well in the Java Print Service API Guide.
You could start here http://java.sun.com/j2se/1.4.1/docs/guide/jps/spec/printing.fm1.html
Basically, you have two choices - either you're going to throw a document at the print service, or you're going to print using Graphics2D commands. You also have the choice between printing to a printer, or to a stream. Mix and match for four combinations.
Whether you can just take a raw document and send it to a printer via the document printing stuff depends on what print services you have installed. For the standard J2SE, it's pretty limited.
If you're doing it via the Graphics2D approach, however, you can print anything you can draw. That's nice - it means you can use the same code to display stuff on the screen and print it. -
Print different format files using java API
Hi All,
I need to print documents ( MS-DOC, PDF, Plain Text ) using Java API. I do not need window for configuring number of pages to be print etc etc.. Whatever the file specified should be printed.
I checked with printerJob.print(); from java API and able to print simple text. I need to approach same for files of different formats.
Any other API's ? How do i approach?
Any help will be appreciated.
Thanks,
PraveenWhich of the LiveCycle products are you looking at? (there is no Java API to Acrobat)
-
How to print PDF files using java print API
Hi,
I was goign throw lot of discusion and reading lot of forums related to print pdf files using java api. but nothing seems to be working for me. Can any one tell me how to print pdf files using java api.
Thanks in advanceMike,
Can't seem to get hold of the example described in your reply below. If you could let us have the URL to get then it would be great.
My GUI application creates a pdf document which I need to print. I want to achieve this using the standard Java class PrinterJob (no 3rd party APIs I'm afraid, commercial restraints etc ..). I had a stab at it using the following code. When executed I get the pretty printer dialog then when I click ok to print, nothing happens!
boolean showPrintDialog=true;
PrinterJob printJob = PrinterJob.getPrinterJob ();
printJob.setJobName ("Contract.pdf");
try {
if (showPrintDialog) {
if (printJob.printDialog()) {
printJob.print();
else
printJob.print ();
} catch (Exception PrintException) {
PrintException.printStackTrace();
Thank you and a happy new year.
Cheers,
Chris -
Print .PDT,.DOC,.XLS files using java print API
Hi,
I need to print different types of documents like pdf, word, excel files etc.
Please let me know how to proceed on this.
I tried using the following code, but it is printing all junk/html tags on the paper.
Please let me know how to resolve this.
Thanks in advance
import java.io.File;
import java.io.IOException;
import javax.print.DocFlavor;
import javax.print.DocPrintJob;
import javax.print.PrintException;
import javax.print.PrintService;
import javax.print.PrintServiceLookup;
import javax.print.SimpleDoc;
public class PrintDocument {
static public void main(String args[]) throws Exception {
try {
PrintService defaultPrintService = PrintServiceLookup.lookupDefaultPrintService();
DocPrintJob printerJob = defaultPrintService.createPrintJob();
File pdfFile = new File("C:\\temp\\sample.doc");
SimpleDoc simpleDoc = new SimpleDoc(pdfFile.toURL(), DocFlavor.URL.AUTOSENSE, null);
printerJob.print(simpleDoc, null);
} catch (IOException ie) {
ie.printStackTrace();
} catch (PrintException pe) {
pe.printStackTrace();
}Hi
I would like to see if it was possible. I thought it would be easy, as
there is a standard batch processing sequence (Print 1st page of all) using
Java that comes with Acrobat 7. This allows you to print the first page of
a number of files that you select when the sequence is run. Its code is:
/* Print 1st Page */
/* This sequence prints the first page of
each document selected to the default printer.
this.print
To my uninformed mind it seemed logical that the same code, slightly
modified to print all pages, should work from within a form.
Anyway, if there is a way to choose individual files, I would appreciate
that.
Thanks
Rob -
Printing a microsoft word doc using Java Print API
Hi,
I have to print a microsoft word doc.I am using Java Print API, but the code is printing only Hashcodes instead of the actual document.
Here is the code. Please let me know whats wrong in it.
CODE:::
public String print() throws Exception {
String realPath = getRealPath("/images/formLibrary/csaAddressContactRequestForm100.doc");
PrintRequestAttributeSet pras1 = new HashPrintRequestAttributeSet();
DocFlavor flavor1 = DocFlavor.INPUT_STREAM.AUTOSENSE;
PrintService defaultService = PrintServiceLookup.lookupDefaultPrintService();
DocPrintJob job = defaultService.createPrintJob();
FileInputStream fis1 = new FileInputStream(realPath);
DocAttributeSet das = new HashDocAttributeSet();
Doc doc1 = new SimpleDoc(fis1, flavor1, das);
job.print(doc1, pras1);
Thread.sleep(10000);
System.exit(0);
return "";
}By using an appropriate library. JText, whatever.
Google, man.I think Rene meant iText!Whatever. :) Never used it, I just remembered there was something named like that. Thanks. -
Printing remote page using java
Thanks for your replies for my previous queries I would very thankfull to you all
If you can suggest me a way to this.
I would like to know how a remote file is printed using java
This is the code I am using.
public void print() throws Exception
FileInputStream psStream=null;
try
{ //This is pointing to a file in the server
psStream = new FileInputStream("c:/Index_page_Links.gif");
catch (FileNotFoundException ffne)
System.out.println("File Not Found Exception");
DocFlavor psInFormat = DocFlavor.INPUT_STREAM.GIF;
Doc myDoc = new SimpleDoc(psStream, psInFormat, null);
//This returns the list of printers that are capable of
//printing the document in the format speciied.
PrintService[] psrvc = PrintServiceLookup.lookupPrintServices(null,null);
if (psrvc.length > 0)
DocPrintJob job = psrvc[0].createPrintJob();
try
job.print(myDoc, null);
catch (Exception pe)
System.out.println("Print exception");
} I need some claification on one point
PrintService[] psrvc = PrintServiceLookup.lookupPrintServices(null,null);Is this going to return the printers conected to the users system.
What I need is the user who is borwsing the site should be able to print
the file from his local printer.
(The document what he should print is located in the server and we should
not show him that document).Is this going to return the printers conected to the users system.If it returns anything, it will return the printers connected to the system where the code is running.
You have some words in your post that suggest you have a web application in mind, or something like that. It's hard to tell. -
How to print a text file using Java
How can I print a text file using Java without converting the output to an image format. Is there anyway I can send the characters in the text file as it is for a print job? I did get a listing doing this ... but that converted the text to an image format before printing....
THanks,.Hi I had to write a print api from scratch, and I did not convert the output to image. Go and read up on the following code. I know there is a Tutorial on Sun about the differant sections of the snippet.
private void printReport()
Frame tempFrame = new Frame(getName());
PrintJob printerJob = Toolkit.getDefaultToolkit().getPrintJob(tempFrame, "Liesltext", null);
Graphics g = printerJob.getGraphics();
//I wrote the method below for calculations
printBasics(g);
g.dispose();
printerJob.end();
}This alone wont print it you have to do all the calculations in the printBasics method. And as I said I wrote this from scratch and all I did was research first the tutorial and the white papers
Ciao
Maybe you are looking for
-
How to control a digital output signal using the DAQ assistant?
I am using a USB 6251 DAQ board and would like to control a switch. I am gathering airflow, pressure, and acoustic data on the same board (analog input) and would like the switch to trigger when the airflow value is within a pre-determined range. Fin
-
Creating folder structure(or folder)
Please help me in creating a folder in adobe live Cycle workbench using DotNet code.
-
I need to uninstall v10.0 and re install 3.0 to 3.6.13 Help!
I am using k12.com Public charter school academy's "elluminate" software for online classroom sessions. I can not log in because It is only compatable with versions 3.0 to 3.6.13
-
CHARM: Automatic assignement for IBase/Component in Change Request
Hi! By creation of Change Request the value "IBase / Component" should be filled. The default values here are: "0" and "0". Has some one already customizng experience here? I would like to change the value to e.g. "1" and "314" (my productive IBase).
-
Lightroom 5.4 beta???
Somebody just sent me a Lightroom log file which said Lightroom version was 5.4. Has it (e.g. as beta) been released somewhere??? - I thought latest @2014-01-19 was 5.3