Here is a Executable Jar that does just that.

http://www.bearprinting.com/ReadersSpread.jar

It's uploading now, so wait a few minutes.

Bill Ensley
Bear Printing

-----Original Message-----
From: [EMAIL PROTECTED]
[mailto:[EMAIL PROTECTED] On Behalf Of bruno
Sent: Thursday, September 22, 2005 12:18 AM
To: Larry Schmidlin
Cc: itext-questions@lists.sourceforge.net
Subject: Re: [iText-questions] Printer's Spread with iText

Larry Schmidlin wrote:

> Is there an easy way to create a pdf in the Printer's Spread format 
> using iText? i.e., I'm making a 20 page book and the pages are 2 
> sided, but half the size of a regular letter size. Thus, 4 pages are 
> put on a piece of paper, 2 pages on each side of the piece of paper.
> The paper is then cut or folded to create the book. (A very common 
> book size in bookstores).
> One printer says he'd prefer to see the pages like
> 20/1 & 2/19,
> 18/3 & 4/17,
> 16/5 & 6/15,
> 14/7 & 8/13,
> 12/9 & 10/11
> Another printer says to create
> 1/4 & 2/3,
> 5/8 & 6/7,
> 9/12 & 10/11,
> 13/16 & 14/15,
> 17/20 & 18/19.
>
> I see how I could play some tricks doing something similar to the 
> TwoOnOne example by creating some temporary pdfs, then combining them, 
> but thought I'd check if someone has solved it already.

For the Manning Book I have made the following example.
It puts a 4 page document on 1 page so that it can be folded.
You'll have to adapt the code, but especially the lines with addTemplate
should be interesting for you.

        Document document = new Document(PageSize.A4);
        try {
            // we create a PdfReader object
            PdfReader reader = new PdfReader("HelloUniverse.pdf");
            // step 2
            PdfWriter writer = PdfWriter.getInstance(document, new
FileOutputStream("HelloWorldFolded.pdf"));
            // step 3
            document.open();
            // step 4
            PdfContentByte cb = writer.getDirectContent();
            PdfImportedPage page;
            page = writer.getImportedPage(reader, 1);
            cb.addTemplate(page, -0.5f, 0f, 0f, -0.5f,
PageSize.A4.width() / 2, PageSize.A4.height());
            page = writer.getImportedPage(reader, 2);
            cb.addTemplate(page, 0.5f, 0f, 0f, 0.5f, 0f, 0f);
            page = writer.getImportedPage(reader, 3);
            cb.addTemplate(page, 0.5f, 0f, 0f, 0.5f, PageSize.A4.width() /
2f, 0f);
            page = writer.getImportedPage(reader, 4);
            cb.addTemplate(page, -0.5f, 0f, 0f, -0.5f, PageSize.A4.width(),
PageSize.A4.height());
            cb.setLineDash(20, 10, 10);
            cb.moveTo(0, PageSize.A4.height() / 2f);
            cb.lineTo(PageSize.A4.width(), PageSize.A4.height() / 2f);
            cb.stroke();
            cb.moveTo(PageSize.A4.width() / 2f, 0);
            cb.lineTo(PageSize.A4.width() / 2f, PageSize.A4.height());
            cb.stroke();
        } catch (IOException e) {
            e.printStackTrace();
        } catch (DocumentException e) {
            e.printStackTrace();
        }
        // step 5
        document.close();

br,
Bruno


-------------------------------------------------------
SF.Net email is sponsored by:
Tame your development challenges with Apache's Geronimo App Server. 
Download it for free - -and be entered to win a 42" plasma tv or your very
own Sony(tm)PSP.  Click here to play: http://sourceforge.net/geronimo.php
_______________________________________________
iText-questions mailing list
iText-questions@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/itext-questions



-------------------------------------------------------
SF.Net email is sponsored by:
Tame your development challenges with Apache's Geronimo App Server. 
Download it for free - -and be entered to win a 42" plasma tv or your very
own Sony(tm)PSP.  Click here to play: http://sourceforge.net/geronimo.php
_______________________________________________
iText-questions mailing list
iText-questions@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/itext-questions

Reply via email to