def main(argv): for arg in argv[1:]: fd = open(arg) parser = PDFParser(fd) document = PDFDocument(parser) if not document.is_extractable: print "Document not extractable." return 1 params = LAParams(char_margin=1) resMan = PDFResourceManager(caching=True) device = PDFPageAggregator(resMan, laparams=params) interpreter = PDFPageInterpreter(resMan, device) parser = x86ManParser("html", params) i = 1 for page in PDFPage.get_pages(fd, set(), caching=True, check_extractable=True): print "Processing page %i" % i interpreter.process_page(page) page = device.get_result() parser.process_page(page) i += 1 parser.flush() fd.close() print "Conversion result: %i/%i" % (parser.success, parser.success + parser.fail) with open("opcodes.json", "wb") as fd: fd.write(parser.output_opcodes_json())
def main(argv): for arg in argv[1:]: fd = open(arg) parser = PDFParser(fd) document = PDFDocument(parser) if not document.is_extractable: print "Document not extractable." return 1 params = LAParams(char_margin=1) resMan = PDFResourceManager(caching=True) device = PDFPageAggregator(resMan, laparams=params) interpreter = PDFPageInterpreter(resMan, device) parser = x86ManParser("html", params) i = 1 for page in PDFPage.get_pages(fd, set(), caching=True, check_extractable=True): print "Processing page %i" % i interpreter.process_page(page) page = device.get_result() parser.process_page(page) i += 1 parser.flush() fd.close() print "Conversion result: %i/%i" % (parser.success, parser.success + parser.fail)
def main(argv): for arg in argv[1:]: fd = open(arg, 'rb') parser = PDFParser(fd) document = PDFDocument(parser) if not document.is_extractable: print("Document not extractable.") return 1 params = LAParams(char_margin=1) resMan = PDFResourceManager(caching=True) device = PDFPageAggregator(resMan, laparams=params) interpreter = PDFPageInterpreter(resMan, device) parser = x86ManParser("html", params) i = 1 for page in PDFPage.get_pages(fd, set(), caching=True, check_extractable=True): print("Processing page %i" % i) interpreter.process_page(page) page = device.get_result() parser.process_page(page) i += 1 parser.flush() fd.close() # RG: We get the parse in just one file: html/AAA.html # Looks like the original repo does not create all the separate pages for all the # instructions nor the index.html # Dus gewoon een grote parse in een file met als filename de eerste instructie. # En later heeft ie de losse pagina's daar dan weer uit gehaald door te zoeken op <h3> # en de closing tags toe te voegen. # En zo ook een index.html gemaakt en zelf een style.css erbij. # NOTE_: we are getting 3 sorts of Description: <p>, <table> and <svg> # Op zijn website is het alleen <p> dus hij heeft zeker nog nabewerkingen gedaan. # Ook toevoegen van <pre> en <h2> etc. # Dit is dus alleen een grove parse om de tekst en tabellen eruit te krijgen. # Gezien de issues (e.g. problemen met footnotes in MOV) is het waarschijnlijk beter om # te gaan werken met de html die pdf2txt maakt. Is wel niet zo clean maar geeft minder # problemen. # Kijkend naar de resultaten van alle pdf2html conversies ziet het er naar uit dat het toch # niet zo makkelijk programmatisch gaat. zneak/felix heeft zijn best gedaan en genereert cleane # html maar er zitten toch nog veel fouten in (zie issues). pdf2txt maakt een nette layout maar # in de tabellen gaat het vaak mis en moet je nog veel nabewerken. Het is te vergelijken met # pdf2music: soms lukt het maar meestal ziet het er niet goed uit en kun je beter alles handmatig # doen. Veel werk maar geeft het beste resultaat. # pdf2txt gebruikt trouwens spans voor tabellen. Lelijk. # DONE: checked out pdftohtml from Xpdf. This produces the best looking pages. But also no real # tables. It uses a png file as background for the tables and then lays everything out with # absolutely positioned divs. For exact positioning that seems the way to go. But also slight # mistakes in the table layout. Faster (C++, Qt) and better than pdfminer.six. # But no real tables is faking it... # NOTE_: at autoclose we are getting mismatch: th strong when parsing the full vol2a.pdf # Something goes wrong. # Figures are extracted as svg but often look warped (e.g. Figure 3-18 and 3-19 at HADDPS) # PDF parsing is like unscrambling scrambled eggs... # DONE: checked out pdf2htmlEX. It creates perfectly looking html 5 pages. It can be done! # It is fast and puts everything in one html page. # TODO_: check out https://github.com/fmalina/unilex-transcript which promisses to create # clean (semantic) html from pdf2htmlEX output. # NOTE_: Conversion result geeft altijd 0/0 omdat we niet in de code komen waar success en fail worden # geincrementeerd. Het zijn dus loze variabelen. print("Conversion result: %i/%i" % (parser.success, parser.success + parser.fail))