Я использую очень полезный PDFBox для создания простого графического интерфейса для печати PDF.
Однако я заметил серьезную проблему с конкретным документом.
Когда я указываю конкретный масштабный коэффициент длярендеринг, ожидаемый размер выходного изображения отличается.
Что хуже? коэффициент масштабирования, используемый для результирующего изображения по горизонтальной оси, отличается от коэффициента масштабирования по вертикальной оси.
Вот код, который я использовал:
/**
* @param pdfPath The path to the pdf document
* @param page The pdf page number(is zero based)
*/
public BufferedImage loadPdfImage(String pdfPath, int page) {
File file = new File(pdfPath);
try (PDDocument doc = PDDocument.load(file)) {
pageCount = doc.getNumberOfPages();
PDPage pDPage = doc.getPage(page);
float w = pDPage.getCropBox().getWidth();
float h = pDPage.getCropBox().getHeight();
System.out.println("Pdf opening: width: "+w+", height: "+h);
PDFRenderer renderer = new PDFRenderer(doc);
float dpiRatio = 1.5f;
BufferedImage img = renderer.renderImage(page, dpiRatio);
float dpiXRatio = img.getWidth() / w;
float dpiYRatio = img.getHeight()/ h;
System.out.println("dpiXRatio: "+dpiXRatio+", dpiYRatio: "+dpiYRatio);
return img;
} catch (IOException ex) {
System.out.println( "invalid pdf found. Please check");
}
return null;
}
Приведенный выше код загружает большинство документов PDFчто я его примерил и преобразует данные страницы в них в объекты BufferedImage.
Однако для указанного документа, похоже, невозможно воспроизвести преобразованное изображение с предоставленным масштабным коэффициентом.
Что-то не так с моим кодом? или это известная ошибка?
Спасибо.
РЕДАКТИРОВАТЬ
Я использую PDFBOX v2.0.15
И страницуне имеет вращения.