Простыми словами это происходит потому, что в python все работает по ссылке, поэтому, когда вы создаете список списков таким образом, вы в основном получаете такие проблемы.
Чтобы решить вашу проблему, вы можете сделать либо один из них: 1. Используйте документацию numpy array для numpy.empty 2. Добавьте список, когда вы попадаете в список. 3. Вы также можете использовать словарь, если хотите
Когда вы говорите, что вы пытались использовать iText, я предполагаю, что вы использовали пример ExtractImages в качестве отправной точки для вашего кода. В этом примере используется вспомогательный класс MyImageRenderListener , который реализует интерфейс RenderListener
.
В этом вспомогательном классе метод renderImage()
реализован следующим образом:
public void renderImage(ImageRenderInfo renderInfo) {
try {
String filename;
FileOutputStream os;
PdfImageObject image = renderInfo.getImage();
if (image == null) return;
filename = String.format(path, renderInfo.getRef().getNumber(), image.getFileType());
os = new FileOutputStream(filename);
os.write(image.getImageAsBytes());
os.flush();
os.close();
} catch (IOException e) {
System.out.println(e.getMessage());
}
}
Он использует объект ImageRenderInfo
для получения экземпляра PdfImageObject
и создает файл изображения с использованием этого объекта.
Если вы проверите класс ImageRenderInfo
, вы обнаружите, что вы также можете попросить другую информацию об изображении. Что вам нужно, это метод getImageCTM()
. Этот метод возвращает объект Matrix
. Эта матрица может быть интерпретирована с использованием обычной алгебры средней школы. Значения I31
и I32
дают вам положение X и Y. В большинстве случаев I11
и I22
дадут вам ширину и высоту (если изображение не повернуто).
Если изображение повернуто, вам придется проконсультироваться с учебниками средней школы , в частности те, которые обсуждают аналитическую геометрию.