Skip to content
Open
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
70 changes: 70 additions & 0 deletions code/py3_pToT.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,70 @@
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
#from https://www.binpress.com/tutorial/manipulating-pdfs-with-python/167
def convert(fname, pages=None):
if not pages:
pagenums = set()
else:
pagenums = set(pages)

output = 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


#i : info
#p : pdfDir
#t = txtDir
def main(argv):
pdfDir = ""
txtDir = ""
try:
opts, args = getopt.getopt(argv,"ip:t:")
except getopt.GetoptError:
print("pdfToT.py -p <pdfdirectory> -t <textdirectory>")
sys.exit(2)
for opt, arg in opts:
if opt == "-i":
print("pdfToT.py -p <pdfdirectory> -t <textdirectory>")
sys.exit()
elif opt == "-p":
pdfDir = arg
elif opt == "-t":
txtDir = arg
convertMultiple(pdfDir, txtDir)

if __name__ == "__main__":
main(sys.argv[1:])