Convert TIFF Images to PDF/JPEG in Java
This code snippet that uses the iText library can convert TIFF files into PDF or JPEG using Java.
To convert TIFF images to PDF/JPEG in Java, just use the iText PDF (version 5.1.3) library to read Tiff files and create a PDF from it.
This code will convert all TIFF files to PDF/JPG. The most common issue you will get is "Byte array is not a valid JPEG-file." & "jpeg 2000 Old format"
public static void TiffToJpg(String tiff, String output)
throws IOException, DocumentException {
// PDF conversation starts here
Document document = new Document();
FileOutputStream fos = new FileOutputStream(output);
PdfWriter writer = PdfWriter.getInstance(document, fos);
writer.open();
document.open();
String fileName = tiff;
Iterator readers = javax.imageio.ImageIO
.getImageReadersBySuffix("tiff");
if (readers.hasNext()) {
File fi = new File(fileName);
ImageInputStream iis = javax.imageio.ImageIO
.createImageInputStream(fi);
TIFFDecodeParam param = null;
ImageDecoder dec = ImageCodec.createImageDecoder("tiff", fi, param);
int pageCount = dec.getNumPages();
ImageReader _imageReader = (ImageReader) (readers.next());
if (_imageReader != null) {
_imageReader.setInput(iis, true);
int count = 1;
for (int i = 0; i < pageCount; i++) {
BufferedImage bufferedImage = _imageReader.read(i);
BufferedImage img2 = new BufferedImage(
bufferedImage.getWidth(),
bufferedImage.getHeight(),
BufferedImage.TYPE_INT_RGB);
// Set the RGB values for converted image (jpg)
for (int y = 0; y < bufferedImage.getHeight(); y++) {
for (int x = 0; x < bufferedImage.getWidth(); x++) {
img2.setRGB(x, y, bufferedImage.getRGB(x, y));
}
}
System.out.println("Page: " + (i + 1));
// Set the RGB values for converted image (jpg)
//To image
/* String s = "C:/Users/TIFF/tiff"+i+".jpg";
ImageIO.write(img2, "jpg", new File(s));*/
//To pdf
ByteArrayOutputStream baos = new ByteArrayOutputStream();
ImageIO.write(img2, "jpg", baos);
baos.flush();
// Convert byteArrayoutputSteam to ByteArray
byte[] imageInByte = baos.toByteArray();
document.add(Image.getInstance(imageInByte));
baos.close();
}
document.close();
}
}
}Check the full source from https://github.com/shrisowdhaman/Tiff_to_PDF
Opinions expressed by DZone contributors are their own.