package com.brightgenerous.pdfbox.writer.appender;
import java.awt.image.BufferedImage;
import java.io.ByteArrayInputStream;
import java.io.File;
import java.io.IOException;
import java.net.URL;
import javax.imageio.ImageIO;
import org.apache.pdfbox.pdmodel.PDDocument;
import org.apache.pdfbox.pdmodel.graphics.xobject.PDJpeg;
import org.apache.pdfbox.pdmodel.graphics.xobject.PDXObjectImage;
public class ImageResource implements IImageResource {
private final String fileName;
private final URL url;
private final byte[] bytes;
public ImageResource(String fileName) {
if (fileName == null) {
throw new IllegalArgumentException("The fileName must not be null.");
}
this.fileName = fileName;
url = null;
bytes = null;
}
public ImageResource(URL url) {
if (url == null) {
throw new IllegalArgumentException("The url must not be null.");
}
fileName = null;
this.url = url;
bytes = null;
}
public ImageResource(byte[] bytes) {
if (bytes == null) {
throw new IllegalArgumentException("The bytes must not be null.");
}
fileName = null;
url = null;
this.bytes = bytes;
}
@Override
public PDXObjectImage getImage() throws IOException {
BufferedImage image;
if (fileName != null) {
image = ImageIO.read(new File(fileName));
} else if (url != null) {
image = ImageIO.read(url);
} else if (bytes != null) {
image = ImageIO.read(new ByteArrayInputStream(bytes));
} else {
throw new IllegalStateException();
}
return new PDJpeg(new PDDocument(), image, 1.0f);
}
}