我从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文件的二进制代码:
已处理PDF文件的二进制代码:
如图所示,%% EOF之后的内容被删除,但LF(换行)和CR(回车)被两者替换,这使得处理后的PDF文件无法打开。
这个问题有解决方案吗?或者也许是另一种方法吗?