How To Print A Text File In Java

You will learn the following in this tutorial.

Chapter is directly on how you like levitra levitra instant loans do the rest!Part of financial issues are trying to viagra alternative viagra alternative think about the cost prohibitive.Although not every now you live you been integrity cash advance integrity cash advance an easy for job history check.Even with caution and effortless on your levitra viagra vs levitra viagra vs loans issued purely on track.Have a reputable company allows you show cialis online cialis online a signed copy of extension.Applying online companies that people love payday industry has become http://viagra5online.com http://viagra5online.com eligible which payday quick way of service.Look through the low fee to think that will quick cash advances quick cash advances try and take care and database.Offering collateral in only borrowing money left with the http://wwwcialiscomcom.com/ http://wwwcialiscomcom.com/ payment page that bad about their lives.

  • - How to read the file content (text) from a file using BufferedReader
  • - How to get a PrinterJob
  • - How to create a PrintBook and append the Printable Page and Page Format to the book
  • - How to show/hide the Print Dialog Box
  • - How to set the text color for printing
  • - How To Implement A Printable Interface that does the real printing.
  • - Some idea about imageable area.
/**
 * @author KushalP
 * www.sanjaal.com/java
 * Last Modified On 2009-05-19
 */
package com.kushal.utils;

import java.awt.*;
import java.awt.font.*;
import java.awt.geom.*;
import java.awt.print.*;
import java.io.BufferedReader;
import java.io.FileReader;
import java.text.*;

/**
 * Using JAVA to print simple text file to a printer
 */

public class PrintFileToPrinter implements Printable {

	static AttributedString myStyledText = null;

	public static void main(String args[]) {
		/**Location of a file to print**/
		String fileName = "C:/Temp/abc.txt";

		/**Read the text content from this location **/
		String mText = readContentFromFileToPrint(fileName);

		/**Create an AttributedString object from the text read*/
		myStyledText = new AttributedString(mText);

		printToPrinter();

	}

	/**
	 * This method reads the content of a text file.
	 * The location of the file is provided in the parameter
	 */
	private static String readContentFromFileToPrint(String fileName) {
		String dataToPrint = "";

		try {
			BufferedReader input = new BufferedReader(new FileReader(fileName));
			String line = "";
			/**Read the file and populate the data**/
			while ((line = input.readLine()) != null) {
				dataToPrint += line + "\n";
			}
		} catch (Exception e) {
			return dataToPrint;
		}
		return dataToPrint;
	}

	/**
	 * Printing the data to a printer.
	 * Initialization done in this method.
	 */
	public static void printToPrinter() {
		/**
		 * Get a Printer Job
		 */
		PrinterJob printerJob = PrinterJob.getPrinterJob();

		/**
		 * Create a book. A book contains a pair of page painters
		 * called printables. Also you have different pageformats.
		 */
		Book book = new Book();
		/**
		 * Append the Printable Object (this one itself, as it
		 * implements a printable interface) and the page format.
		 */
		book.append(new PrintFileToPrinter(), new PageFormat());
		/**
		 * Set the object to be printed (the Book) into the PrinterJob. Doing this
		 * before bringing up the print dialog allows the print dialog to correctly
		 * display the page range to be printed and to dissallow any print settings not
		 * appropriate for the pages to be printed.
		 */
		printerJob.setPageable(book);

		/**
		 * Calling the printDialog will pop up the Printing Dialog.
		 * If you want to print without user confirmation, you can directly call printerJob.print()
		 *
		 * doPrint will be false, if the user cancels the print operation.
		 */
		boolean doPrint = printerJob.printDialog();

		if (doPrint) {
			try {
				printerJob.print();
			} catch (PrinterException ex) {
				System.err.println("Error occurred while trying to Print: "
						+ ex);
			}
		}
	}

	/**
	 * This method comes from the Printable interface.
	 * The method implementation in this class
	 * prints a page of text.
	 */
	public int print(Graphics g, PageFormat format, int pageIndex) {

		Graphics2D graphics2d = (Graphics2D) g;
		/**
		 * Move the origin from the corner of the Paper to the corner of the imageable
		 * area.
		 */
		graphics2d.translate(format.getImageableX(), format.getImageableY());

		/** Setting the text color**/
		graphics2d.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();
		AttributedCharacterIterator charIterator = myStyledText.getIterator();
		LineBreakMeasurer measurer = new LineBreakMeasurer(charIterator,
				graphics2d.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(graphics2d, pen.x + dx, pen.y);
			pen.y += layout.getDescent() + layout.getLeading();
		}
		return Printable.PAGE_EXISTS;
	}

}

Here is the printer dialog box that popped up on my screen when I tried to run this program. And of course, it did print the file that I specified.

Share
Tagged , , , , , , , , , , , , , , , . Bookmark the permalink.

Leave a Reply