Estoy tratando de insertar imágenes dentro de un PDF, pero la calidad hace que las imágenes sean ilegibles. ¿Cómo se puede mejorar la calidad del documento PDF final?PDFBox imagen borrosa cuando se inserta en pdf en Java
He intentado otras librerías libres de licencias GPL y creo que pdfbox es el mejor, así que me gustaría poder usar el pdfbox.
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.IOException;
import javax.imageio.ImageIO;
import org.apache.pdfbox.exceptions.COSVisitorException;
import org.apache.pdfbox.pdmodel.PDDocument;
import org.apache.pdfbox.pdmodel.PDPage;
import org.apache.pdfbox.pdmodel.edit.PDPageContentStream;
import org.apache.pdfbox.pdmodel.font.PDFont;
import org.apache.pdfbox.pdmodel.font.PDType1Font;
import org.apache.pdfbox.pdmodel.graphics.xobject.PDJpeg;
import org.apache.pdfbox.pdmodel.graphics.xobject.PDXObjectImage;
public class pdfBoxTest {
public static void WritteBufferedImageToPDF(BufferedImage buff)
{
PDDocument doc = null;
PDPage page = null;
PDXObjectImage ximage = null;
try {
doc = new PDDocument();
page = new PDPage();
doc.addPage(page);
ximage = new PDJpeg(doc, buff, 1.0f);
PDPageContentStream content = new PDPageContentStream(doc, page);
content.drawImage(ximage, 0, 0);
content.close();
doc.save("C:/Users/crusader/Desktop/Hello World.pdf");
doc.close();
}
catch (IOException ie){
ie.printStackTrace();
//handle exception
}
//save and close
catch (COSVisitorException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
public static void main(String []args)
{
BufferedImage buff= null;
try{
buff = ImageIO.read(new File("C:/Users/crusader/Desktop","tests.jpg"));
}
catch(IOException ex)
{
ex.printStackTrace();
}
System.out.println(buff.getWidth());
System.out.println(buff.getHeight());
pdfBoxTest.WritteBufferedImageToPDF(buff);
}
}
El problema se deriva de PDFBox sólo ser capaz de utilizar JPEG como formato de imagen para las imágenes en el documento, que es un formato con pérdida. No he encontrado una solución adecuada todavía. – iddo
@iddo: prueba PDPixelMap en la última versión – Gilead
@Crusader: He intentado con tu código y está funcionando bien, pero solo obtengo la mitad del contenido de la página (en cuanto a ancho) en el documento pdf. ¿Podrías ayudarme con eso? –