package com.brightgenerous.pdfbox.writer.appender;
import java.awt.geom.AffineTransform;
import java.io.IOException;
import org.apache.pdfbox.pdmodel.common.PDRectangle;
import org.apache.pdfbox.pdmodel.edit.PDPageContentStream;
import org.apache.pdfbox.pdmodel.graphics.xobject.PDXObjectImage;
public class ImagePageAppender extends PositionPageAppender {
private final IImageResource resource;
private final boolean inline;
public ImagePageAppender(AppenderFlag flag, AppenderAlign align, AppenderVertical vertical,
float marginX, float marginY, float paddingLeft, float paddingTop, float rotate,
IImageResource resource, boolean inline) {
super(flag, align, vertical, marginX, marginY, paddingLeft, paddingTop, rotate);
if (resource == null) {
throw new IllegalArgumentException("The resource must not be null.");
}
this.resource = resource;
this.inline = inline;
}
@Override
protected void appendContent(int start, int pages, int page, PDPageContentStream contentStream,
PDRectangle rect) throws IOException {
PDXObjectImage image = getResource().getImage();
if (image != null) {
float width = image.getWidth();
float height = image.getHeight();
AffineTransform transform = new AffineTransform(width, 0, 0, height, getCornerX(
rect.getWidth(), width), getCornerY(rect.getHeight(), height));
transform.rotate((float) ((getRotate() * Math.PI) / 180), 0.5, 0.5);
contentStream.drawXObject(image, transform);
}
}
protected IImageResource getResource() {
return resource;
}
protected boolean getInline() {
return inline;
}
}