ciao!
sto cercando creare un pdf con immagini prese da un ArrayList<String>.
una immagine a pagina:
codice:
import org.apache.pdfbox.pdmodel.PDDocument;
import org.apache.pdfbox.pdmodel.PDPage;
import org.apache.pdfbox.pdmodel.PDPageContentStream;
import org.apache.pdfbox.pdmodel.common.PDRectangle;
import org.apache.pdfbox.pdmodel.graphics.image.PDImageXObject;
import java.io.IOException;
import java.util.ArrayList;
public class PdfGallery {
private ArrayList<String> images = null;
public PdfGallery(ArrayList<String> images) {
this.images = images;
}
public void createPdf() throws IOException {
try (PDDocument doc = new PDDocument()) {
for (String str : images) {
PDPage page = new PDPage(PDRectangle.A4);
doc.addPage(page);
PDImageXObject pdImage = PDImageXObject.createFromFile(str, doc);
float w = pdImage.getWidth();
float h = pdImage.getHeight();
try (PDPageContentStream contents = new PDPageContentStream(doc, page)) {
contents.drawImage(pdImage, 0, 0, w, h);
}
}
doc.save("/home/matte/Desktop/sample.pdf");
}
}
}
le pagine vengono create correttamente.
e le immagini vengono aggiunte alla pagina.
solo che:
- se sono grandi (ad esempio 1920*1080) si vedono sgranate e / o più grandi della pagina
- se sono piccole (ad esempio 300*400) si vedono sgranate (anche se l'originale ovviamente non lo è)
per creare il pdf sto usando PDFBox.
qualcuno ha qualche idea??