Example usage for com.itextpdf.text.pdf.codec TiffImage getTiffImage

List of usage examples for com.itextpdf.text.pdf.codec TiffImage getTiffImage

Introduction

In this page you can find the example usage for com.itextpdf.text.pdf.codec TiffImage getTiffImage.

Prototype

public static Image getTiffImage(RandomAccessFileOrArray s, int page) 

Source Link

Document

Reads a page from a TIFF image.

Usage

From source file:com.dev.saurabh.TiffToPdf.java

License:Open Source License

/**
 * @param args//w  w  w  .  j a  v a 2s. c  o m
 * @throws DocumentException
 * @throws IOException
 */
public static void main(String[] args) throws DocumentException, IOException {

    String imgeFilename = "/home/saurabh/Downloads/image.tif";

    Document document = new Document();
    PdfWriter writer = PdfWriter.getInstance(document,
            new FileOutputStream("/home/saurabh/Desktop/out" + Math.random() + ".pdf"));
    writer.setStrictImageSequence(true);
    document.open();

    document.add(new Paragraph("Multipages tiff file"));
    Image image;
    RandomAccessFileOrArray ra = new RandomAccessFileOrArray(imgeFilename);
    int pages = TiffImage.getNumberOfPages(ra);
    for (int i = 1; i <= pages; i++) {
        image = TiffImage.getTiffImage(ra, i);
        Rectangle pageSize = new Rectangle(image.getWidth(), image.getHeight());
        document.setPageSize(pageSize);
        document.add(image);
        document.newPage();
    }

    document.close();

}

From source file:com.ephesoft.dcma.imagemagick.impl.ITextPDFCreator.java

License:Open Source License

/**
 * Converts specified tiff file into pdf.
 * //from  www.j a  v  a  2s .c o m
 * @param tiffFile{@link File} to be converted into pdf.
 * @throws DCMAApplicationException if any error occurs while conversion.
 */
public static void convertTiffIntoPdf(final File tiffFile) throws DCMAApplicationException {
    if (null == tiffFile) {
        LOGGER.error("Unable to convert tiff file as specified file is null.");
    } else {
        com.itextpdf.text.Document document = null;
        RandomAccessFile randomAccessFile = null;
        RandomAccessFileOrArray randomAccessFileOrArray = null;
        FileChannelRandomAccessSource fileChannelRandomAccessSource = null;
        try {
            final String tiffFilePath = tiffFile.getAbsolutePath();
            if (tiffFilePath.endsWith(FileType.TIF.getExtensionWithDot())
                    || tiffFilePath.endsWith(FileType.TIFF.getExtensionWithDot())) {
                randomAccessFile = new RandomAccessFile(tiffFile, ICommonConstants.READ_MODE);
                fileChannelRandomAccessSource = new FileChannelRandomAccessSource(
                        randomAccessFile.getChannel());
                document = new com.itextpdf.text.Document();
                final int lastIndexofTiffExtension = tiffFilePath.toLowerCase()
                        .lastIndexOf(FileType.TIF.getExtensionWithDot());
                PdfWriter.getInstance(document,
                        new FileOutputStream(EphesoftStringUtil.concatenate(
                                tiffFilePath.substring(0, lastIndexofTiffExtension),
                                FileType.PDF.getExtensionWithDot())));
                document.open();
                randomAccessFileOrArray = new RandomAccessFileOrArray(fileChannelRandomAccessSource);
                final int pageCount = TiffImage.getNumberOfPages(randomAccessFileOrArray);
                Image image;
                for (int index = 1; index <= pageCount; index++) {
                    image = TiffImage.getTiffImage(randomAccessFileOrArray, index);
                    final Rectangle pageSize = new Rectangle(image.getWidth(), image.getHeight());
                    document.setPageSize(pageSize);
                    document.newPage();
                    document.add(image);
                }
                LOGGER.info(EphesoftStringUtil.concatenate(tiffFilePath, " successfully converted into PDF."));
            } else {
                LOGGER.error("Unable to convert as specified file is not a valid tiff file.");
            }
        } catch (final DocumentException e) {
            LOGGER.error("DocumentException is occurred while processing specified tiff file for conversion.");
            throw new DCMAApplicationException(EphesoftStringUtil
                    .concatenate("DocumentException occured while generating PDF", e.getMessage()), e);
        } catch (final IOException e) {
            LOGGER.error("IOException is occurred while processing specified tiff file for conversion.");
            throw new DCMAApplicationException(
                    EphesoftStringUtil.concatenate("IOException occured while generating PDF", e.getMessage()),
                    e);
        } finally {
            FileUtils.closeStream(randomAccessFileOrArray);
            FileUtils.closeFileChannelRandomAccessSource(fileChannelRandomAccessSource);
            FileUtils.closeResource(randomAccessFile);
            document.close();
        }

    }
}

From source file:com.ephesoft.dcma.imagemagick.MultiPageExecutor.java

License:Open Source License

/**
 * This method creates multi page pdf using IText.
 * /*  w  ww.ja va  2s.  c  o m*/
 * @param batchInstanceThread {@link BatchInstanceThread}
 * @param pages11 {@link String}
 * @param widthOfPdfPage int
 * @param heightOfPdfPage int
 */
public MultiPageExecutor(BatchInstanceThread batchInstanceThread, final String[] pages11,
        final int widthOfPdfPage, final int heightOfPdfPage) {
    if (pages11 != null && pages11.length > 0) {
        this.pages = new String[pages11.length];
        this.pages = pages11.clone();
        batchInstanceThread.add(new AbstractRunnable() {

            @Override
            public void run() {
                String pdf = pages[pages.length - 1];
                Document document = null;
                PdfWriter writer = null;
                RandomAccessFileOrArray randomAccessArray = null;
                try {
                    document = new Document(PageSize.LETTER, 0, 0, 0, 0);
                    writer = PdfWriter.getInstance(document, new FileOutputStream(pdf));
                    document.open();
                    int comps = 1;
                    int totalTiffImages = pages.length - 1;
                    int index = 0;
                    while (index < totalTiffImages) {
                        randomAccessArray = new RandomAccessFileOrArray(pages[index]);
                        comps = TiffImage.getNumberOfPages(randomAccessArray);
                        // Conversion statement
                        for (int tiffPageNumber = 0; tiffPageNumber < comps; ++tiffPageNumber) {
                            Image img = TiffImage.getTiffImage(randomAccessArray, tiffPageNumber + 1);
                            img.scaleToFit(widthOfPdfPage, heightOfPdfPage);
                            document.add(img);
                            document.newPage();
                        }
                        index++;
                    }
                } catch (Exception e) {
                    LOGGER.error("Error while creating pdf using iText" + e.getMessage(), e);
                    //pdf = null;
                } finally {
                    try {
                        if (document != null) {
                            document.close();
                        }
                        if (writer != null) {
                            writer.close();
                        }
                        if (randomAccessArray != null) {
                            randomAccessArray.close();
                        }
                    } catch (Exception e) {
                        LOGGER.error("Error while closing I/O streams for write PDF. " + e.getMessage());
                    }
                }
            }
        });
    }
}

From source file:com.github.albfernandez.joinpdf.JoinPdf.java

License:Open Source License

private void addTiff(final File file, final Document document, final PdfWriter writer) throws Exception {
    RandomAccessSource source = createRamdomAccessSource(file);
    RandomAccessFileOrArray ramdomAccess = new RandomAccessFileOrArray(source);
    int pages = getPageCount(file);
    for (int i = 1; i <= pages; i++) {
        Image image = TiffImage.getTiffImage(ramdomAccess, i);
        addImage(image, document, writer);
    }//  w  w  w . ja va  2  s  .c  om

}

From source file:com.pdf.GetPdf.java

public static void addTif(Document document, String path) throws DocumentException, IOException {
    RandomAccessFileOrArray ra = new RandomAccessFileOrArray(new URL(path));
    int n = TiffImage.getNumberOfPages(ra);
    Image img;/*from w w w.ja  va  2  s.co m*/
    for (int i = 1; i <= n; i++) {
        img = TiffImage.getTiffImage(ra, i);
        img.scaleToFit(550, 800);
        document.add(img);
    }
}

From source file:com.primeleaf.krystal.util.PDFConverter.java

License:Open Source License

public File getConvertedFile(DocumentRevision documentRevision, Document document, String password)
        throws Exception {
    File tempFile = documentRevision.getDocumentFile();
    if ("TIF".equalsIgnoreCase(document.getExtension()) || "TIFF".equalsIgnoreCase(document.getExtension())) {
        try {/*from  w w  w. ja v  a2s  .  com*/
            tempFile = File.createTempFile("temp", ".PDF");
            com.itextpdf.text.Document pdf = new com.itextpdf.text.Document();
            PdfWriter.getInstance(pdf, new FileOutputStream(tempFile));
            pdf.open();
            pdf.setMargins(0, 0, 0, 0);
            FileInputStream fis = new FileInputStream(documentRevision.getDocumentFile());
            RandomAccessFileOrArray file = new RandomAccessFileOrArray(fis);
            int pages = TiffImage.getNumberOfPages(file);
            for (int page = 1; page <= pages; page++) {
                Image img = TiffImage.getTiffImage(file, page);
                img.setAbsolutePosition(0f, 0f);
                img.scaleToFit(PageSize.A4.getWidth(), PageSize.A4.getHeight());
                pdf.setMargins(0, 0, 0, 0);
                pdf.add(img);
                pdf.newPage();
            }
            fis.close();
            pdf.close();
            document.setExtension("PDF");
        } catch (Exception e) {
            tempFile = documentRevision.getDocumentFile();
            throw new Exception("Unable to convert TIFF Document to PDF");
        }
    } else if ("JPG".equalsIgnoreCase(document.getExtension())
            || "JPEG".equalsIgnoreCase(document.getExtension())
            || "PNG".equalsIgnoreCase(document.getExtension())
            || "BMP".equalsIgnoreCase(document.getExtension())
            || "GIF".equalsIgnoreCase(document.getExtension())) {
        try {
            tempFile = File.createTempFile("temp", ".PDF");
            Image img = Image.getInstance(documentRevision.getDocumentFile().getAbsolutePath());
            com.itextpdf.text.Document pdf = new com.itextpdf.text.Document(
                    new Rectangle(img.getWidth(), img.getHeight()), 0, 0, 0, 0);
            img.setAbsolutePosition(0f, 0f);
            PdfWriter.getInstance(pdf, new FileOutputStream(tempFile));
            pdf.open();
            pdf.add(img);
            pdf.close();
            document.setExtension("PDF");
        } catch (Exception e) {
            tempFile = documentRevision.getDocumentFile();
            throw new Exception("Unable to convert Image Document to PDF");
        }
    } else if ("PDF".equalsIgnoreCase(document.getExtension())) {
        tempFile = documentRevision.getDocumentFile();
    } else {
        String tempFilePath = "";
        String KRYSTAL_HOME = System.getProperty("krystal.home");
        if (KRYSTAL_HOME == null) {
            KRYSTAL_HOME = System.getProperty("user.dir");
            System.setProperty("krystal.home", KRYSTAL_HOME);
        }
        tempFilePath = KRYSTAL_HOME + File.separator + "/webapps/DMC/images/unsupport.pdf";
        tempFile = new File(tempFilePath);
    }
    return tempFile;
}

From source file:com.vectorprint.report.itext.DefaultElementProducer.java

License:Open Source License

@Override
public void loadTiff(File tiff, ImageProcessor imageProcessor, int... pages) throws VectorPrintException {
    RandomAccessFileOrArray ra = null;//  w  ww .j a v  a 2  s .com
    try {
        RandomAccessSourceFactory rasf = new RandomAccessSourceFactory();
        ra = new RandomAccessFileOrArray(rasf.createBestSource(tiff.getPath()));
        if (pages == null) {
            for (int i = 0; i < TiffImage.getNumberOfPages(ra);) {
                imageProcessor.processImage(TiffImage.getTiffImage(ra, ++i));
            }
        } else {
            for (int i : pages) {
                imageProcessor.processImage(TiffImage.getTiffImage(ra, i));
            }
        }

    } catch (IOException ex) {
        throw new VectorPrintException(String.format("unable to load tiff %s", tiff.toString()), ex);
    } finally {
        if (ra != null) {
            try {
                ra.close();
            } catch (IOException ex) {
            }
        }
    }

}

From source file:es.jscan.Pantallas.PantallaPrincipal.java

License:Apache License

private void tiffToPdf(String origen, String destino) {
    try {/*from   ww w. j  a  v a 2s.co  m*/
        //Read the Tiff File
        RandomAccessFileOrArray myTiffFile = new RandomAccessFileOrArray(origen);
        //Find number of images in Tiff file
        int numberOfPages = TiffImage.getNumberOfPages(myTiffFile);
        //  System.out.println("Number of Images in Tiff File" + numberOfPages);
        com.itextpdf.text.Image tempImage = TiffImage.getTiffImage(myTiffFile, 1);
        Document TifftoPDF = new Document();
        TifftoPDF.setPageSize(new Rectangle(tempImage.getWidth(), tempImage.getHeight()));
        PdfWriter.getInstance(TifftoPDF, new FileOutputStream(destino));
        TifftoPDF.open();
        for (int i = 1; i <= numberOfPages; i++) {
            tempImage = TiffImage.getTiffImage(myTiffFile, i);
            TifftoPDF.setPageSize(new Rectangle(tempImage.getWidth(), tempImage.getHeight()));
            TifftoPDF.add(tempImage);
        }
        TifftoPDF.close();
    } catch (Exception ex) {
        Utilidades.escribeLog("Error al convertir de Tiff a PDF -tiffToPdf- Error " + ex.getMessage());
    }

}

From source file:pl.marcinmilkowski.hocrtopdf.Main.java

License:Open Source License

/**
 * @param args//from   w ww  .  ja v  a  2s  .  c  o m
 */
public static void main(String[] args) {
    try {
        if (args.length < 1 || args[0] == "--help" || args[0] == "-h") {
            System.out.print("Usage: java pl.marcinmilkowski.hocrtopdf.Main INPUTURL.html OUTPUTURL.pdf\n"
                    + "\n" + "Converts hOCR files into PDF\n" + "\n"
                    + "Example: java pl.marcinmilkowski.hocrtopdf.Main hocr.html output.pdf\n");
            if (args.length < 1)
                System.exit(-1);
            else
                System.exit(0);
        }
        URL inputHOCRFile = null;
        FileOutputStream outputPDFStream = null;
        try {
            File file = new File(args[0]);
            inputHOCRFile = file.toURI().toURL();
        } catch (MalformedURLException e) {
            System.out.println("The first parameter has to be a valid file.");
            System.out.println("We got an error: " + e.getMessage());
            System.exit(-1);
        }
        try {
            outputPDFStream = new FileOutputStream(args[1]);
        } catch (FileNotFoundException e) {
            System.out.println("The second parameter has to be a valid URL");
            System.exit(-1);
        }

        // The resolution of a PDF file (using iText) is 72pt per inch
        float pointsPerInch = 72.0f;

        // Using the jericho library to parse the HTML file
        Source source = new Source(inputHOCRFile);

        int pageCounter = 1;

        Document pdfDocument = null;
        PdfWriter pdfWriter = null;
        PdfContentByte cb = null;
        RandomAccessFileOrArray ra = null;

        // Find the tag of class ocr_page in order to load the scanned image
        StartTag pageTag = source.getNextStartTag(0, "class", OCRPAGE);
        while (pageTag != null) {
            int prevPos = pageTag.getEnd();
            Pattern imagePattern = Pattern.compile("image\\s+([^;]+)");
            Matcher imageMatcher = imagePattern.matcher(pageTag.getElement().getAttributeValue("title"));
            if (!imageMatcher.find()) {
                System.out.println("Could not find a tag of class \"ocr_page\", aborting.");
                System.exit(-1);
            }
            // Load the image
            Image pageImage = null;
            try {
                File file = new File(imageMatcher.group(1));
                pageImage = Image.getInstance(file.toURI().toURL());
            } catch (MalformedURLException e) {
                System.out.println("Could not load the scanned image from: " + "file://" + imageMatcher.group(1)
                        + ", aborting.");
                System.exit(-1);
            }
            if (pageImage.getOriginalType() == Image.ORIGINAL_TIFF) { // this might
                                                                      // be
                                                                      // multipage
                                                                      // tiff!
                File file = new File(imageMatcher.group(1));
                if (pageCounter == 1 || ra == null) {
                    ra = new RandomAccessFileOrArray(file.toURI().toURL());
                }
                int nPages = TiffImage.getNumberOfPages(ra);
                if (nPages > 0 && pageCounter <= nPages) {
                    pageImage = TiffImage.getTiffImage(ra, pageCounter);
                }
            }
            int dpiX = pageImage.getDpiX();
            if (dpiX == 0) { // for images that don't set the resolution we assume
                             // 300 dpi
                dpiX = 300;
            }
            int dpiY = pageImage.getDpiY();
            if (dpiY == 0) { // as above for dpiX
                dpiY = 300;
            }
            float dotsPerPointX = dpiX / pointsPerInch;
            float dotsPerPointY = dpiY / pointsPerInch;
            float pageImagePixelHeight = pageImage.getHeight();
            if (pdfDocument == null) {
                pdfDocument = new Document(new Rectangle(pageImage.getWidth() / dotsPerPointX,
                        pageImage.getHeight() / dotsPerPointY));
                pdfWriter = PdfWriter.getInstance(pdfDocument, outputPDFStream);
                pdfDocument.open();
                // Put the text behind the picture (reverse for debugging)
                // cb = pdfWriter.getDirectContentUnder();
                cb = pdfWriter.getDirectContent();
            } else {
                pdfDocument.setPageSize(new Rectangle(pageImage.getWidth() / dotsPerPointX,
                        pageImage.getHeight() / dotsPerPointY));
                pdfDocument.newPage();
            }
            // first define a standard font for our text
            BaseFont base = BaseFont.createFont(BaseFont.HELVETICA, BaseFont.CP1250, BaseFont.EMBEDDED);
            Font defaultFont = new Font(base, 8);
            // FontFactory.getFont(FontFactory.HELVETICA, 8, Font.BOLD,
            // CMYKColor.BLACK);

            cb.setHorizontalScaling(1.0f);

            pageImage.scaleToFit(pageImage.getWidth() / dotsPerPointX, pageImage.getHeight() / dotsPerPointY);
            pageImage.setAbsolutePosition(0, 0);
            // Put the image in front of the text (reverse for debugging)
            // pdfWriter.getDirectContent().addImage(pageImage);
            pdfWriter.getDirectContentUnder().addImage(pageImage);

            // In order to place text behind the recognised text snippets we are
            // interested in the bbox property
            Pattern bboxPattern = Pattern.compile("bbox(\\s+\\d+){4}");
            // This pattern separates the coordinates of the bbox property
            Pattern bboxCoordinatePattern = Pattern.compile("(\\d+)\\s+(\\d+)\\s+(\\d+)\\s+(\\d+)");
            // Only tags of the ocr_line class are interesting
            StartTag ocrTag = source.getNextStartTag(prevPos, "class", OCRPAGEORLINE);
            while (ocrTag != null) {
                prevPos = ocrTag.getEnd();
                if ("ocrx_word".equalsIgnoreCase(ocrTag.getAttributeValue("class"))) {
                    net.htmlparser.jericho.Element lineElement = ocrTag.getElement();
                    Matcher bboxMatcher = bboxPattern.matcher(lineElement.getAttributeValue("title"));
                    if (bboxMatcher.find()) {
                        // We found a tag of the ocr_line class containing a bbox property
                        Matcher bboxCoordinateMatcher = bboxCoordinatePattern.matcher(bboxMatcher.group());
                        bboxCoordinateMatcher.find();
                        int[] coordinates = { Integer.parseInt((bboxCoordinateMatcher.group(1))),
                                Integer.parseInt((bboxCoordinateMatcher.group(2))),
                                Integer.parseInt((bboxCoordinateMatcher.group(3))),
                                Integer.parseInt((bboxCoordinateMatcher.group(4))) };
                        String line = lineElement.getContent().getTextExtractor().toString();
                        float bboxWidthPt = (coordinates[2] - coordinates[0]) / dotsPerPointX;
                        float bboxHeightPt = (coordinates[3] - coordinates[1]) / dotsPerPointY;

                        // Put the text into the PDF
                        cb.beginText();
                        // Comment the next line to debug the PDF output (visible Text)
                        cb.setTextRenderingMode(PdfContentByte.TEXT_RENDER_MODE_INVISIBLE);
                        // height
                        cb.setFontAndSize(defaultFont.getBaseFont(), Math.max(Math.round(bboxHeightPt), 1));
                        // width
                        cb.setHorizontalScaling(bboxWidthPt / cb.getEffectiveStringWidth(line, false));
                        cb.moveText((coordinates[0] / dotsPerPointX),
                                ((pageImagePixelHeight - coordinates[3]) / dotsPerPointY));
                        cb.showText(line);
                        cb.endText();
                        cb.setHorizontalScaling(1.0f);
                    }
                } else {
                    if ("ocr_page".equalsIgnoreCase(ocrTag.getAttributeValue("class"))) {
                        pageCounter++;
                        pageTag = ocrTag;
                        break;
                    }
                }
                ocrTag = source.getNextStartTag(prevPos, "class", OCRPAGEORLINE);
            }
            if (ocrTag == null) {
                pdfDocument.close();
                break;
            }
        }
    } catch (DocumentException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    } catch (IOException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }
}

From source file:sc.emea.tools.image.Tiff2PDF.java

License:Apache License

public static void main(String args[]) {

    int page_counter = 0;

    try {//w  w w  . j av a2 s.c  o  m

        // Read the Tiff File
        FileList myFileList = new FileList("C:\\DEV\\Eclipse-Workspace\\Luna-J\\Tiff2PdfConverter\\TIFF\\");
        myFileList.setFilterPreMiddleSuffix("", "", ".tiff");
        myFileList.sort(ComparableAttribute.dateLastModified, SortingDirection.asc);

        File[] myTiffFileFiles = myFileList.getFilesArray();

        if (myTiffFileFiles.length < 1)
            return;
        else
            for (File file : myTiffFileFiles)
                System.out.println(file.getName());

        Document myDocument = new Document();
        myDocument.setMargins(0, 0, 0, 0);
        PdfWriter.getInstance(myDocument,
                new FileOutputStream("C:\\DEV\\Eclipse-Workspace\\Luna-J\\Tiff2PdfConverter\\PDF\\test.pdf"));
        myDocument.open();

        RandomAccessSourceFactory rasFactory = new RandomAccessSourceFactory();

        for (File file : myTiffFileFiles) {

            FileInputStream _fis = new FileInputStream(file.getAbsolutePath());

            RandomAccessSource _ra_source = rasFactory.createSource(_fis);
            RandomAccessFileOrArray _ra_file = new RandomAccessFileOrArray(_ra_source);

            int numberOfPages = TiffImage.getNumberOfPages(_ra_file);
            for (int i = 1; i <= numberOfPages; i++) {
                Image _image = TiffImage.getTiffImage(_ra_file, i);
                _image.scaleAbsolute(myDocument.getPageSize());
                myDocument.add(_image);
                page_counter++;
            }

        }
        myDocument.close();
        System.out.println("Tiff to PDF conversion completed for " + page_counter);

    } catch (Exception i1) {
        i1.printStackTrace();
    }
}