Задача: Моя задача - извлечь все изображения из pdf и сохранить их в локальном файле.
Проблема: Когда я пытался извлечь изображения из pdf, я увидел, что не все изображения загружаются в должным образом. Рассмотрим мой PDF как 3 изображения. Когда я пытался извлечь изображения, я видел, что немногие изображения сохраняются в повернутых, инвертированных или с некоторыми другими углами поворота. Я не уверен, из каких свойств состоит это изображение в pdf.
Вопрос: 1. Я хочу знать, повернуто ли изображение или нет? 2. Если да, то я хочу знать, под каким углом это повернуто. Так что я могу изменить это вращение и сохранить его в своем локальном.
Есть ли какой-либо метод или свойство, с помощью которого мы можем узнать вышеуказанные свойства?
Ниже приведен код, который я использовал:
@Override
protected void processOperator(Operator operator, List<COSBase> operands) throws IOException {
String operation = operator.getName();
if ("Do".equals(operation)) {
COSName objectName = (COSName) operands.get(0);
PDXObject xobject = getResources().getXObject(objectName);
if (xobject instanceof PDImageXObject) {
PDImageXObject image = (PDImageXObject) xobject;
int imageWidth = image.getWidth();
int imageHeight = image.getHeight();
System.out.println(image.getMetadata());//output null
// same image to local
BufferedImage bImage = new BufferedImage(imageWidth, imageHeight, BufferedImage.TYPE_INT_ARGB);
bImage = image.getImage();
System.out.println(bImage.getPropertyNames());//output null
ImageIO.write(bImage, "PNG", new File("C:/PdfBox_Examples/" + "image_" + imageNumber + ".png"));
System.out.println("Image saved.");
imageNumber++;
} else if (xobject instanceof PDFormXObject) {
PDFormXObject form = (PDFormXObject) xobject;
showForm(form);
}
} else {
super.processOperator(operator, operands);
}
}