Я начинаю с файла PDF, где в двоичном коде присутствует дополнительный нежелательный контент после %% EOF.
В коде python я пытаюсь удалить этот нежелательный контент, читая файл PDF, проверьте, где присутствует последний %% EOF, и создайте новый файл, в котором содержимое после %% EOF больше не добавляется.
Код:
def main():
check_and_correct_file()
def check_and_correct_file():
# Read file, retrieve content and close file
read_file = open('any_pdf_extra.pdf', encoding="latin-1", mode='rt')
file = read_file.readlines()
read_file.close()
# Set starting values of variables
eof_value = '%%EOF'
line_count = 0
last_eof = 0
# Set last occurrence of %%EOF
for line in file:
if eof_value in line:
last_eof = line_count
line_count += 1
# Write all content except for data after last occurrence of %%EOF
write_file = open('any_pdf_fixing.pdf', encoding="latin-1", mode='wt')
for i in range(0, last_eof + 1):
write_file.write(file[i])
write_file.close()
Двоичный код исходного файла PDF:
![enter image description here](https://i.stack.imgur.com/xSf9Q.png)
Двоичный код обработанного PDFфайл:
![enter image description here](https://i.stack.imgur.com/pU3Zx.png)
Как показано на рисунке, содержимое после %% EOF удаляется, но LF (перевод строки) и CR (Carriage)return) заменяются обоими, что делает невозможным открытие обработанного файла PDF.
Есть ли решение этой проблемы?Или, возможно, альтернативный способ сделать это?