You are viewing a plain text version of this content. The canonical link for it is here.
Posted to users@pdfbox.apache.org by Josh Nankin <jn...@gmail.com> on 2015/01/26 22:31:56 UTC

PDF prints smaller on page than actual file

When I print a PDF using the below code, the PDF appears smaller in the
result than the original file.  How do I solve this?

Input: http://joshnankin.com/input.pdf
What prints: http://joshnankin.com/whatPrints.pdf


Code:

        PDFPrinter printer = new PDFPrinter(PDDocument.load(new
File("input.pdf")));

        PrinterJob job = PrinterJob.getPrinterJob();
        PageFormat pf = job.defaultPage();
        Paper paper = new Paper();
        paper.setSize(612, 792);
        double margin = 0;
        paper.setImageableArea(margin, margin, paper.getWidth() - margin,
paper.getHeight() - margin);

        pf.setPaper(paper);
        job.setPageable(printer.getPageable());
        job.setJobName("test");
        job.printDialog();
        try {
            job.print();
        } catch (PrinterException e) {
            System.out.println(e);
        }

Re: PDF prints smaller on page than actual file

Posted by John Hewson <jo...@jahewson.com>.
Please start a new thread for off-topic questions.

-- John

> On 26 Jan 2015, at 19:26, Thamizh Thomas <th...@gmail.com> wrote:
> 
> Hi All,
> 
> I have a requirement to read tamil pdf document and store the content in
> db. When I read the document using Pdfbox, the characters are junked and
> not readable. I suppose this problem to be with fonts used. Can you help me
> to resolve this?
> 
> Below is my code:
> 
>            PDFTextStripper pdfTextStripper = new PDFTextStripper();
>            String page = "";
>            for (int i = pageNo; i <= pages.size(); i++) {
>                pdfTextStripper.setStartPage(i);
>                pdfTextStripper.setEndPage(i);
> 
> pdfTextStripper.setFonts(pages.get(i).getResources().getFonts());
>                page += pdfTextStripper.getText(document);
>            }
> 
> Awaiting for your reply.
> 
> On Tue, Jan 27, 2015 at 4:12 AM, John Hewson <john@jahewson.com <ma...@jahewson.com>> wrote:
> 
>> Hi,
>> 
>>> PageFormat pf = job.defaultPage();
>> 
>> PrinterJob#defaultPage() creates a new page, it can’t be used to modify
>> the default, see:
>> 
>> http://docs.oracle.com/javase/6/docs/api/java/awt/print/PrinterJob.html#defaultPage() <http://docs.oracle.com/javase/6/docs/api/java/awt/print/PrinterJob.html#defaultPage()>
>> <
>> http://docs.oracle.com/javase/6/docs/api/java/awt/print/PrinterJob.html#defaultPage() <http://docs.oracle.com/javase/6/docs/api/java/awt/print/PrinterJob.html#defaultPage()>
>>> 
>> 
>> The PageFormat which will be used for the job is controlled by the
>> Pageable instance,
>> i.e, this line:
>> 
>>> job.setPageable(printer.getPageable());
>> 
>> 
>> That’s a PDFPageable instance, which PDFPrinter creates for you. To
>> specify a custom
>> Paper, you need to pass it to PDFPrinter , we provide a constructor which
>> you can use:
>> 
>> PDFPrinter(PDDocument, Scaling, Orientation, Paper)
>> 
>> Call this with Scaling.SHRINK_TO_FIT and Orientation.AUTO.
>> 
>> -- John
>> 
>>> On 26 Jan 2015, at 13:31, Josh Nankin <jn...@gmail.com> wrote:
>>> 
>>> When I print a PDF using the below code, the PDF appears smaller in the
>>> result than the original file.  How do I solve this?
>>> 
>>> Input: http://joshnankin.com/input.pdf
>>> What prints: http://joshnankin.com/whatPrints.pdf
>>> 
>>> 
>>> Code:
>>> 
>>>       PDFPrinter printer = new PDFPrinter(PDDocument.load(new
>>> File("input.pdf")));
>>> 
>>>       PrinterJob job = PrinterJob.getPrinterJob();
>>>       PageFormat pf = job.defaultPage();
>>>       Paper paper = new Paper();
>>>       paper.setSize(612, 792);
>>>       double margin = 0;
>>>       paper.setImageableArea(margin, margin, paper.getWidth() - margin,
>>> paper.getHeight() - margin);
>>> 
>>>       pf.setPaper(paper);
>>>       job.setPageable(printer.getPageable());
>>>       job.setJobName("test");
>>>       job.printDialog();
>>>       try {
>>>           job.print();
>>>       } catch (PrinterException e) {
>>>           System.out.println(e);
>>>       }
>> 
>> 
> 
> 
> -- 
> -----
> 
> *Thanks*
> 
> *   Thamizh Thomas A*
> *   SemTech*
> *   Bosco ITS*


Re: PDF prints smaller on page than actual file

Posted by Thamizh Thomas <th...@gmail.com>.
Hi All,

I have a requirement to read tamil pdf document and store the content in
db. When I read the document using Pdfbox, the characters are junked and
not readable. I suppose this problem to be with fonts used. Can you help me
to resolve this?

Below is my code:

            PDFTextStripper pdfTextStripper = new PDFTextStripper();
            String page = "";
            for (int i = pageNo; i <= pages.size(); i++) {
                pdfTextStripper.setStartPage(i);
                pdfTextStripper.setEndPage(i);

pdfTextStripper.setFonts(pages.get(i).getResources().getFonts());
                page += pdfTextStripper.getText(document);
            }

Awaiting for your reply.

On Tue, Jan 27, 2015 at 4:12 AM, John Hewson <jo...@jahewson.com> wrote:

> Hi,
>
> > PageFormat pf = job.defaultPage();
>
> PrinterJob#defaultPage() creates a new page, it can’t be used to modify
> the default, see:
>
> http://docs.oracle.com/javase/6/docs/api/java/awt/print/PrinterJob.html#defaultPage()
> <
> http://docs.oracle.com/javase/6/docs/api/java/awt/print/PrinterJob.html#defaultPage()
> >
>
> The PageFormat which will be used for the job is controlled by the
> Pageable instance,
> i.e, this line:
>
> > job.setPageable(printer.getPageable());
>
>
> That’s a PDFPageable instance, which PDFPrinter creates for you. To
> specify a custom
> Paper, you need to pass it to PDFPrinter , we provide a constructor which
> you can use:
>
> PDFPrinter(PDDocument, Scaling, Orientation, Paper)
>
> Call this with Scaling.SHRINK_TO_FIT and Orientation.AUTO.
>
> -- John
>
> > On 26 Jan 2015, at 13:31, Josh Nankin <jn...@gmail.com> wrote:
> >
> > When I print a PDF using the below code, the PDF appears smaller in the
> > result than the original file.  How do I solve this?
> >
> > Input: http://joshnankin.com/input.pdf
> > What prints: http://joshnankin.com/whatPrints.pdf
> >
> >
> > Code:
> >
> >        PDFPrinter printer = new PDFPrinter(PDDocument.load(new
> > File("input.pdf")));
> >
> >        PrinterJob job = PrinterJob.getPrinterJob();
> >        PageFormat pf = job.defaultPage();
> >        Paper paper = new Paper();
> >        paper.setSize(612, 792);
> >        double margin = 0;
> >        paper.setImageableArea(margin, margin, paper.getWidth() - margin,
> > paper.getHeight() - margin);
> >
> >        pf.setPaper(paper);
> >        job.setPageable(printer.getPageable());
> >        job.setJobName("test");
> >        job.printDialog();
> >        try {
> >            job.print();
> >        } catch (PrinterException e) {
> >            System.out.println(e);
> >        }
>
>


-- 
-----

*Thanks*

*   Thamizh Thomas A*
*   SemTech*
*   Bosco ITS*

Re: PDF prints smaller on page than actual file

Posted by John Hewson <jo...@jahewson.com>.
Hi,

> PageFormat pf = job.defaultPage();

PrinterJob#defaultPage() creates a new page, it can’t be used to modify the default, see:
http://docs.oracle.com/javase/6/docs/api/java/awt/print/PrinterJob.html#defaultPage() <http://docs.oracle.com/javase/6/docs/api/java/awt/print/PrinterJob.html#defaultPage()>

The PageFormat which will be used for the job is controlled by the Pageable instance,
i.e, this line:

> job.setPageable(printer.getPageable());


That’s a PDFPageable instance, which PDFPrinter creates for you. To specify a custom
Paper, you need to pass it to PDFPrinter , we provide a constructor which you can use:

PDFPrinter(PDDocument, Scaling, Orientation, Paper)

Call this with Scaling.SHRINK_TO_FIT and Orientation.AUTO.

-- John

> On 26 Jan 2015, at 13:31, Josh Nankin <jn...@gmail.com> wrote:
> 
> When I print a PDF using the below code, the PDF appears smaller in the
> result than the original file.  How do I solve this?
> 
> Input: http://joshnankin.com/input.pdf
> What prints: http://joshnankin.com/whatPrints.pdf
> 
> 
> Code:
> 
>        PDFPrinter printer = new PDFPrinter(PDDocument.load(new
> File("input.pdf")));
> 
>        PrinterJob job = PrinterJob.getPrinterJob();
>        PageFormat pf = job.defaultPage();
>        Paper paper = new Paper();
>        paper.setSize(612, 792);
>        double margin = 0;
>        paper.setImageableArea(margin, margin, paper.getWidth() - margin,
> paper.getHeight() - margin);
> 
>        pf.setPaper(paper);
>        job.setPageable(printer.getPageable());
>        job.setJobName("test");
>        job.printDialog();
>        try {
>            job.print();
>        } catch (PrinterException e) {
>            System.out.println(e);
>        }