Sign Up

Sign Up to our social questions and Answers Engine to ask questions, answer people’s questions, and connect with other people.

Have an account? Sign In

Have an account? Sign In Now

Sign In

Login to our social questions & Answers Engine to ask questions answer people’s questions & connect with other people.

Sign Up Here

Forgot Password?

Don't have account, Sign Up Here

Forgot Password

Lost your password? Please enter your email address. You will receive a link and will create a new password via email.

Have an account? Sign In Now

You must login to ask a question.

Forgot Password?

Need An Account, Sign Up Here

Please briefly explain why you feel this question should be reported.

Please briefly explain why you feel this answer should be reported.

Please briefly explain why you feel this user should be reported.

Sign InSign Up

The Archive Base

The Archive Base Logo The Archive Base Logo

The Archive Base Navigation

  • SEARCH
  • Home
  • About Us
  • Blog
  • Contact Us
Search
Ask A Question

Mobile menu

Close
Ask a Question
  • Home
  • Add group
  • Groups page
  • Feed
  • User Profile
  • Communities
  • Questions
    • New Questions
    • Trending Questions
    • Must read Questions
    • Hot Questions
  • Polls
  • Tags
  • Badges
  • Buy Points
  • Users
  • Help
  • Buy Theme
  • SEARCH
Home/ Questions/Q 9018921
In Process

The Archive Base Latest Questions

Editorial Team
  • 0
Editorial Team
Asked: June 16, 20262026-06-16T04:39:13+00:00 2026-06-16T04:39:13+00:00

Hi all i have some code below that allows me to print the text

  • 0

Hi all i have some code below that allows me to print the text i have already written into the app (mText) however instead of just having what is written in the program i want to be able to select a .txt file and print that out instead, how can i modify the code below in order to achieve this ?

import java.awt.*;
import java.awt.font.*;
import java.awt.geom.*;
import java.awt.print.*;
import java.text.*;
/**
 * The PrintText application expands on the
 * PrintExample application in that it images
 * text on to the single page printed.
 */
public class PrintText implements Printable {
    /**
     * The text to be printed.
     */
    private static final String mText = 
        "Four score and seven years ago our fathers brought forth on this "
        + "continent a new nation, conceived in liberty and dedicated to the "
        + "proposition that all men are created equal. Now we are engaged in "
        + "a great civil war, testing whether that nation or any nation so "
        + "conceived and so dedicated can long endure. We are met on a great "
        + "battlefield of that war. We have come to dedicate a portion of "
        + "that field as a final resting-place for those who here gave their "
        + "lives that that nation might live. It is altogether fitting and "
        + "proper that we should do this. But in a larger sense, we cannot "
        + "dedicate, we cannot consecrate, we cannot hallow this ground." 
        + "The brave men, living and dead who struggled here have consecrated "
        + "it far above our poor power to add or detract. The world will "
        + "little note nor long remember what we say here, but it can never "
        + "forget what they did here. It is for us the living rather to be "
        + "dedicated here to the unfinished work which they who fought here "
        + "have thus far so nobly advanced. It is rather for us to be here "
        + "dedicated to the great task remaining before us--that from these "
        + "honored dead we take increased devotion to that cause for which "
        + "they gave the last full measure of devotion--that we here highly "
        + "resolve that these dead shall not have died in vain, that this "
        + "nation under God shall have a new birth of freedom, and that "
        + "government of the people, by the people, for the people shall "
        + "not perish from the earth.";
    /**
     * Our text in a form for which we can obtain a
     * AttributedCharacterIterator.
     */
    private static final AttributedString mStyledText = new AttributedString(mText);
    /**
     * Print a single page containing some sample text.
     */
    static public void main(String args[]) {
        /* Get the representation of the current printer and 
         * the current print job.
         */
        PrinterJob printerJob = PrinterJob.getPrinterJob();
        /* Build a book containing pairs of page painters (Printables)
         * and PageFormats. This example has a single page containing
         * text.
         */
        Book book = new Book();
        book.append(new PrintText(), 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);
        /* Show the print dialog to the user. This is an optional step
         * and need not be done if the application wants to perform
         * 'quiet' printing. If the user cancels the print dialog then false
         * is returned. If true is returned we go ahead and print.
         */
        boolean doPrint = printerJob.printDialog();
        if (doPrint) {
            try {
                printerJob.print();
            } catch (PrinterException exception) {
                System.err.println("Printing error: " + exception);
            }
        }
    }

    /**
     * Print a page of text.
     */
    public int print(Graphics g, PageFormat format, int pageIndex) {
        /* We'll assume that Jav2D is available.
         */
        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();
        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();
        }
        return Printable.PAGE_EXISTS;
    }
}

i have been having a few issues with other code to print out things but the code above is successfully working just fine for me, this is why i want to modify this

my filereader :

import java.io.*; 
class FileReaderDemo { 
    public static void main(String args[]) throws Exception { 
        FileReader fr = new FileReader("D:/Documents/testDocToPrintUsingJava.txt"); 
        BufferedReader br = new BufferedReader(fr); 
        String s; 
        while((s = br.readLine()) != null) { 
            System.out.println(s); 
        } 
        fr.close(); 
    } 
}

current code below, i am confused about what way to go with this code,

import java.awt.*;
import java.awt.font.*;
import java.awt.geom.*;
import java.awt.print.*;
import java.text.*;
import java.io.*; 
import javax.swing.*;
import static java.nio.file.StandardOpenOption.*;
import java.io.FileReader;
import java.io.FileWriter; 
import java.io.BufferedWriter; 
import java.io.BufferedReader; 
import java.io.InputStreamReader; 
import java.io.InputStream; 
import java.io.PrintWriter; 
import java.io.IOException;
import java.io.BufferedInputStream; 
import java.io.Console;
import java.util.Arrays;
import java.io.IOException;
import java.io.DataOutputStream;
import java.io.DataInputStream;
import java.io.FileInputStream;
import java.io.EOFException;
import java.io.FileNotFoundException;
import java.nio.file.Files;
import java.lang.System;
import java.lang.String;
import java.nio.file.Files; 
import java.nio.file.Paths;
import java.nio.file.FileSystemException;
import java.nio.file.InvalidPathException;
import java.nio.file.FileSystemNotFoundException;
import java.lang.IllegalArgumentException;
import java.lang.SecurityException;
import java.nio.channels.FileChannel;
import java.nio.channels.*;
import static java.nio.file.StandardOpenOption.*;
import java.lang.Enum;
import java.nio.charset.Charset;

/**
 * The PrintText application expands on the
 * PrintExample application in that it images
 * text on to the single page printed.
 */
public class PrintText implements Printable {
    //Create a file chooser
    //final JFileChooser fc = new JFileChooser();
    /**
     * The text to be printed.
     */
    private static final String mText = 
        "test";
    /**
     * Our text in a form for which we can obtain a
     * AttributedCharacterIterator.
     */

        public static void main(String[] args) {
            JFileChooser chooser = new JFileChooser();
            chooser.showOpenDialog(null);
            File file = chooser.getSelectedFile();
            String filename = file.getName();
            System.out.println("You have selected: " + filename);
        }


    public static String readFile(String file, String csName)
    throws IOException {
        Charset cs = Charset.forName(csName);
        return readFile(file, cs);
    }

    public static String readFile(String file, Charset cs)
    throws IOException {
        // No real need to close the BufferedReader/InputStreamReader
        // as they're only wrapping the stream
        FileInputStream stream = new FileInputStream(file);
        try {
            Reader reader = new BufferedReader(new InputStreamReader(stream, cs));
            StringBuilder builder = new StringBuilder();
            char[] buffer = new char[8192];
            int read;
            while ((read = reader.read(buffer, 0, buffer.length)) > 0) {
                builder.append(buffer, 0, read);
            }
            return builder.toString();
        } finally {
            // Potential issue here: if this throws an IOException,
            // it will mask any others. Normally I'd use a utility
            // method which would log exceptions and swallow them
            stream.close();
        }        
    }

    private static final AttributedString mStyledText = new AttributedString(mText);
    /**
     * Print a single page containing some sample text.
     */
    static public void main(String args[]) {
        /* Get the representation of the current printer and 
         * the current print job.
         */
        PrinterJob printerJob = PrinterJob.getPrinterJob();
        /* Build a book containing pairs of page painters (Printables)
         * and PageFormats. This example has a single page containing
         * text.
         */
        Book book = new Book();
        book.append(new PrintText(), 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);
        /* Show the print dialog to the user. This is an optional step
         * and need not be done if the application wants to perform
         * 'quiet' printing. If the user cancels the print dialog then false
         * is returned. If true is returned we go ahead and print.
         */
        boolean doPrint = printerJob.printDialog();
        if (doPrint) {
            try {
                printerJob.print();
            } catch (PrinterException exception) {
                System.err.println("Printing error: " + exception);
            }
        }
    }

    /**
     * Print a page of text.
     */
    public int print(Graphics g, PageFormat format, int pageIndex) {
        /* We'll assume that Jav2D is available.
         */
        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();
        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();
        }
        return Printable.PAGE_EXISTS;
    }
}
  • 1 1 Answer
  • 0 Views
  • 0 Followers
  • 0
Share
  • Facebook
  • Report

Leave an answer
Cancel reply

You must login to add an answer.

Forgot Password?

Need An Account, Sign Up Here

1 Answer

  • Voted
  • Oldest
  • Recent
  • Random
  1. Editorial Team
    Editorial Team
    2026-06-16T04:39:14+00:00Added an answer on June 16, 2026 at 4:39 am

    Copy the text into a file then take a look at these. Put one of these solutions into a function called readStringFromFile. Then, replace this line with:

    private static final AttributedString mStyledText = new AttributedString( readStringFromFile( "c:\\myfile.txt" );
    

    How do I create a Java string from the contents of a file?

    Really though, it sounds like to learn the most that you should run through a File IO tutorial. You don’t just want the answer right? Here’s a little tutorial to run through:

    http://docs.oracle.com/javase/tutorial/essential/io/index.html

    After running through this you will have learned enough to come up with the solution on your own.

    • 0
    • Reply
    • Share
      Share
      • Share on Facebook
      • Share on Twitter
      • Share on LinkedIn
      • Share on WhatsApp
      • Report

Sidebar

Related Questions

I have written some code to ensure that items on an order are all
I have some C# code that generates google maps. This codes looks at all
We have a J2EE app built on Struts2+spring+iBatis; not all DAO's use iBatis...some code
Below, I have written simple code that re-creates problems that have emerged as my
I have some C# code which programatically loops over all the cells in the
Hi all i have a background worker thread and some unmanaged code dlls ,
I am creating a series of UserControls that all have some similar business logic.
I have been writing some code that creates a generic blog. Its features are
I'm trying to write some code that allows me to switch between SQLCE (locally
I know that for the code below, Illegal below is undefined (while some compilers

Explore

  • Home
  • Add group
  • Groups page
  • Communities
  • Questions
    • New Questions
    • Trending Questions
    • Must read Questions
    • Hot Questions
  • Polls
  • Tags
  • Badges
  • Users
  • Help
  • SEARCH

Footer

© 2021 The Archive Base. All Rights Reserved
With Love by The Archive Base

Insert/edit link

Enter the destination URL

Or link to existing content

    No search term specified. Showing recent items. Search or use up and down arrow keys to select an item.