如何在python

时间:2018-08-07 10:22:31

标签: python-3.x pycharm

在我的项目中,我有两个文件夹,其中包含PDF文件的数量。两个文件夹中的Pdf文件名相同,但文本或其他数据不同。所以我必须将一个文件夹中同名的pdf文件与另一文件夹中的pdf文件进行比较,并并排显示它们之间的差异。您能告诉代码吗?

1 个答案:

答案 0 :(得分:0)

“差异”是什么意思? PDF文本中的差异或某些布局更改(例如,调整了嵌入式图形的大小)。第一个很容易检测,第二个几乎很难获得(PDF是一种非常复杂的文件格式,提供了无穷无尽的文件格式化功能)。

下面的脚本会将文件夹中的所有PDF文件转换为文本文件。

from io import StringIO
from pdfminer.pdfinterp import PDFResourceManager, PDFPageInterpreter
from pdfminer.converter import TextConverter
from pdfminer.layout import LAParams
from pdfminer.pdfpage import PDFPage
import os
import sys, getopt

#converts pdf, returns its text content as a string
def convert(fname, pages=None):
    if not pages:
        pagenums = set()
    else:
        pagenums = set(pages)

    output = io.StringIO()
    manager = PDFResourceManager()
    converter = TextConverter(manager, output, laparams=LAParams())
    interpreter = PDFPageInterpreter(manager, converter)

    infile = open(fname, 'rb')
    for page in PDFPage.get_pages(infile, pagenums):
        interpreter.process_page(page)
    infile.close()
    converter.close()
    text = output.getvalue()
    output.close
    return text 

#converts all pdfs in directory pdfDir, saves all resulting txt files to txtdir
def convertMultiple(pdfDir, txtDir):
    if pdfDir == "": pdfDir = os.getcwd() + "\\" #if no pdfDir passed in 
    for pdf in os.listdir(pdfDir): #iterate through pdfs in pdf directory
        fileExtension = pdf.split(".")[-1]
        if fileExtension == "pdf":
            pdfFilename = pdfDir + pdf 
            text = convert(pdfFilename) #get string of text content of pdf
            textFilename = txtDir + pdf + ".txt"
            textFile = open(textFilename, "w") #make text file
            textFile.write(text) #write text to text file

# set paths accordingly:
pdfDir = "C:/your_path/PDF_in/"
txtDir = "C:/your_path/TEXT_out/"
convertMultiple(pdfDir, txtDir)

然后,您可以执行类似的操作。

f1 = open("C:/Users/Excel/Desktop/Coding/Python/PDF Files/Convert All PDF Files to TEXT Files/TEXT_out/file1.pdf.txt")
f2 = open("C:/Users/Excel/Desktop/Coding/Python/PDF Files/Convert All PDF Files to TEXT Files/TEXT_out/file2.pdf.txt")

lines = f2.readlines()
for i,line in enumerate(f1):
    if line != lines[i]:
        print("line", i, "is different:")
        print('\t', line)
        print('\t', lines[i])