Tôi đang cố gắng chèn hình ảnh bên trong PDF nhưng chất lượng làm cho hình ảnh không thể đọc được. Làm cách nào để cải thiện chất lượng của tài liệu PDF cuối cùng?Hình ảnh mờ của PDFBox khi được chèn vào pdf trong Java
Tôi đã thử các thư viện giấy phép GPL miễn phí khác và tôi nghĩ rằng pdfbox là tốt nhất, vì vậy tôi muốn có thể sử dụng 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);
}
}
Vấn đề bắt nguồn từ PDFBox chỉ có khả năng sử dụng JPEG là định dạng hình ảnh cho hình ảnh trong tài liệu, mà là một định dạng lossy. Tôi chưa tìm được giải pháp phù hợp. – iddo
@iddo: thử PDPixelMap trong phiên bản mới nhất – Gilead
@Crusader: Tôi đã thử mã của bạn và hoạt động tốt, nhưng tôi chỉ nhận được một nửa nội dung trang (chiều rộng khôn ngoan) trong tài liệu pdf.Can u hãy giúp tôi với điều đó –