Hi there!

I'm going to take out my life if I don't generate a 126x126 mm today :S
I'm trying this during days. I have summerized my application in a main
(It can be usefull to everyone who is not looking for an specific size)

I create a 126 x 126 mm, inside this I put a pdfTemplate wich is 126 x 126
too. Then, inside this one I put many other pdfTemplates as Image Regions
and
inside every ImageRegion  I draw an 180 dpiImage. I use this hierarchy cause
I can crop, put borders and things like that using the view of a
pdfTemplate.
Well, The pdf result is 44,4 x 44,4 mm :(  Why?

Here is the code.

(I know I don't need too many imports :p)

import java.io.*;
import java.awt.Graphics2D;
import java.awt.image.*;
import java.awt.font.*;
import java.awt.color.ICC_Profile;
import java.awt.geom.AffineTransform;
import javax.imageio.ImageIO;
import javax.imageio.stream.*;
import java.util.*;
import java.lang.*;
import com.lowagie.text.*;
import com.lowagie.text.pdf.*;

import com.sun.image.codec.jpeg.JPEGImageEncoder;
import com.sun.image.codec.jpeg.JPEGCodec;
import com.sun.image.codec.jpeg.JPEGEncodeParam;
import javax.imageio.ImageReader;
import javax.imageio.stream.ImageInputStream;
import javax.imageio.metadata.IIOMetadata;
import javax.imageio.metadata.IIOMetadataNode;

import java.awt.color.ColorSpace;

public class app{
    public app()
    {

    }

    public final static void main(String Args[])
    {
        try
        {

        float _width     = 126;
        float _height = 126;
        String _file = "C:/output.pdf";

        //I create a 126x126 rect, cause I'ld like my document to be 126x126
mm
        Rectangle rect = new Rectangle(126,126);
        Document _document = new com.lowagie.text.Document(rect,0,0,0,0);
        FileOutputStream fos = new FileOutputStream(_file);
        BufferedOutputStream bos = new BufferedOutputStream(fos, 16384);
        PdfWriter _pdfWriter = PdfWriter.getInstance(_document, bos);
        _pdfWriter.setPdfVersion(PdfWriter.VERSION_1_5);
        _document.open();
        PdfContentByte _pdfCB = _pdfWriter.getDirectContent();

        //I create a Template to fit in the page;
        PdfTemplate _pTemplate = _pdfCB.createTemplate(800,600);
        //I create a Template to fit my content. I'ts going to be added to
the _pTemplate
        PdfTemplate regionTemplate = _pdfCB.createTemplate(100, 100);

        //Load 72 dpi image
        FileInputStream fileInputStream = new
FileInputStream("D:/Photolife/imatges/180.jpg");

        java.awt.Image img = ImageIO.read(fileInputStream);

        //Calcule the final image size in mm
        float finalw = 100;
        float finalh = 100*img.getHeight(null)/img.getWidth(null);

        //Create a new 100 mm width image to 180 dpi
        BufferedImage img2 = new
BufferedImage((int)(finalw*180/24.5),(int)(finalh*180/24.5) ,
BufferedImage.TYPE_INT_RGB);
        Graphics2D gps = img2.createGraphics();
        gps.drawImage(img,0,0,img2.getWidth(null),img2.getHeight
(null),null);
        ByteArrayOutputStream baos = new ByteArrayOutputStream();
        JPEGImageEncoder encoder = JPEGCodec.createJPEGEncoder(baos);
        JPEGEncodeParam param = JPEGCodec.getDefaultJPEGEncodeParam(img2);

        param.setQuality(1f, true);
        param.setDensityUnit(JPEGEncodeParam.DENSITY_UNIT_DOTS_INCH);
        param.setXDensity(180);
        param.setYDensity(180);
        encoder.setJPEGEncodeParam(param);
        encoder.encode(img2);
        img2.flush();
        img2 = null;

        com.lowagie.text.Image img3 = com.lowagie.text.Image.getInstance(
baos.toByteArray());
        //In this point, img3 is a 180 dpi Image

        //Add all the information inside the other information
        regionTemplate.addImage(img3,finalw,0f,0f,finalh, 0,0);


        _pTemplate.saveState();

        _pTemplate.transform(new AffineTransform(1,0,0,1,0,0));
        _pTemplate.addTemplate(regionTemplate, 0, 0);
        _pTemplate.restoreState();

        _pdfCB.addTemplate(_pTemplate,1,0,0,1,0,0);
        _document.close();
        }
        catch(Exception e)
        {
            System.out.println("Error");
        }
    }


}


Thanks!
-------------------------------------------------------------------------
This SF.net email is sponsored by: Microsoft
Defy all challenges. Microsoft(R) Visual Studio 2005.
http://clk.atdmt.com/MRT/go/vse0120000070mrt/direct/01/
_______________________________________________
iText-questions mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/itext-questions
Buy the iText book: http://itext.ugent.be/itext-in-action/

Reply via email to