Я пытаюсь отделить изображения от PDF с помощью PYTHON и хочу пометить это изображение абзацем, на который он ссылается. Для этого я выделил все изображения в этом файле PDF с помощью тега «XObject» в файле PDF,но так как, я тоже хочу, чтобы изображение к абзацуДля этого я планировал сначала заменить изображение каким-нибудь необычным текстом, а затем использовать его, чтобы получить абзац для этого изображения.
Сначала я попытался заменить изображение другим изображением, чтобы проверить код, приведенный вссылка-> https://arunmozhi.in/2019/01/29/replacing-image-in-a-pdf-with-python/, но не может заменить изображение изображением / текстом. Ниже приведен код, который я использовал по той же ссылке.
def replace_image(filepath, new_image):
OBJECT_ID = "5 0 obj"
f = open(filepath, "r",encoding="latin")
contents = f.read()
f.close()
image = Image.open(new_image)
width, height = image.size
length = os.path.getsize(new_image)
start = contents.find(OBJECT_ID)
stream = contents.find("stream", start)
image_beginning = stream + 7
# Process the metadata and update with new image's details
meta = contents[start: image_beginning]
meta = meta.split("\n")
new_meta = []
for item in meta:
if "/Width" in item:
new_meta.append("/Width {0}".format(width))
elif "/Height" in item:
new_meta.append("/Height {0}".format(height))
elif "/Length" in item:
new_meta.append("/Length {0}".format(length))
else:
new_meta.append(item)
new_meta = "\n".join(new_meta)
# Find the end location
image_end = contents.find("endstream", stream) - 1
# read the image
f = open(new_image, "r", encoding="latin")
new_image_data = f.read()
f.close()
# recreate the PDF file with the new_sign
with open(filepath.replace(".pdf","op.txt"), "wb") as f:
f.write(bytes(contents[:start],"latin"))
f.write(bytes("\n","latin"))
f.write(bytes(new_meta,"latin"))
f.write(bytes(new_image_data,"latin"))
f.write(bytes(contents[image_end:],"latin"))
Ошибка - мне нужно использовать LATIN для чтения pdf, чтобы избежать ошибки недопустимых символов. Теперь я не могу записать содержимое обратно в pdf,После сохранения он выдает мне «INVALID PDF» по указанному пути.
Все, что мне нужно, - 1. Имя изображения с номером абзаца / текстом, принадлежащим изображению.