Java Android PDF到PNG质量差

Java Android PDF到PNG质量差,java,android,pdf,png,Java,Android,Pdf,Png,我正在尝试将一个页面从.pdf文件转换为.png文件。一切都正常,但是质量很差,即使我将压缩期间的质量设置为100。有人能解释一下为什么它会给我带来如此可怕的结果吗 PDF至PNG try { inputStream = new FileInputStream(file); long length = file.length(); bytes = new byte[(int) length]; int offset = 0;

我正在尝试将一个页面从.pdf文件转换为.png文件。一切都正常,但是质量很差,即使我将压缩期间的质量设置为100。有人能解释一下为什么它会给我带来如此可怕的结果吗

PDF至PNG

try {
        inputStream = new FileInputStream(file);

        long length = file.length();
        bytes = new byte[(int) length];
        int offset = 0;
        int numRead = 0;
        while (offset < bytes.length && (numRead = inputStream.read(bytes, offset, bytes.length - offset)) >= 0) {
            offset += numRead;
        }
        ByteBuffer buffer = ByteBuffer.NEW(bytes);
        PDFFile pdf_file = new PDFFile(buffer);
        PDFPage page = pdf_file.getPage(1, true);
        RectF rect = new RectF(0, 0, (int) page.getBBox().width(),
                (int) page.getBBox().height());

        Bitmap image = page.getImage((int)rect.width(), (int)rect.height(), rect, true, true);
        root = new File("/storage/emulated/0/DCIM" + "/Pay Reports");
        if (!root.exists()) {
            root.mkdirs();
        }
        file = new File(root, "PayPeriod" + readFromFile("startPayPeriod.txt").substring(2) + "_" + readFromFile("endPayPeriod.txt").substring(2) + ".png");
        FileOutputStream os = new FileOutputStream(file);
        image.compress(Bitmap.CompressFormat.PNG, 100, os);
    }catch (Exception e) {
        e.printStackTrace();
试试看{
inputStream=新文件inputStream(文件);
long length=file.length();
字节=新字节[(int)长度];
整数偏移=0;
int numRead=0;
而(偏移量=0){
偏移量+=numRead;
}
ByteBuffer缓冲区=ByteBuffer.NEW(字节);
PDFFile pdf_file=新的PDFFile(缓冲区);
PDFPage page=pdf_file.getPage(1,true);
RectF rect=new RectF(0,0,(int)page.getBBox().width(),
(int)page.getBBox().height());
位图图像=page.getImage((int)rect.width(),(int)rect.height(),rect,true,true);
root=新文件(“/storage/simulated/0/DCIM”+“/Pay Reports”);
如果(!root.exists()){
root.mkdirs();
}
文件=新文件(根,“PayPeriod”+readFromFile(“startPayPeriod.txt”)。子字符串(2)+“”+readFromFile(“endPayPeriod.txt”)。子字符串(2)+“.png”);
FileOutputStream os=新的FileOutputStream(文件);
image.compress(Bitmap.CompressFormat.PNG,100,os);
}捕获(例外e){
e、 printStackTrace();

询问编写您的
PDFFile
PDFPage
类的人。如果您包括一个示例,就可以更容易地确定您看到的质量损失类型。我猜这是因为您将点采样到像素1:1,并且库没有提示或反别名。尝试使用
位图image=page.getImage(4*(int)进行采样,例如1:4rect.width(),4*(int)rect.height(),rect,true,true);