Advertisement
Roman_Sarnov

Untitled

Nov 7th, 2019
131
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.39 KB | None | 0 0
  1. from kivy.app import App
  2. from kivy.uix.boxlayout import BoxLayout
  3. import os
  4. from kivy.uix.widget import Widget
  5. from kivy.uix.label import Label
  6. from kivy.core.window import Window
  7. from plyer import notification, tts
  8. # setup graphics
  9. from kivy.config import Config
  10.  
  11. Config.set('graphics', 'resizable', 0)
  12. from kivy.lang import Builder
  13. from pdfminer.pdfinterp import PDFResourceManager, PDFPageInterpreter
  14. from pdfminer.converter import TextConverter
  15. from pdfminer.layout import LAParams
  16. from pdfminer.pdfpage import PDFPage
  17. from io import StringIO
  18. from kivy.uix.popup import Popup
  19.  
  20. Builder.load_string("""
  21. <MyWidget>:
  22. id: my_widget
  23.  
  24. FileChooserListView:
  25. id: filechooser
  26. on_selection: my_widget.talk(filechooser.selection)
  27. """)
  28.  
  29.  
  30. class MyWidget(BoxLayout):
  31. def open(self, path, filename):
  32.  
  33. with open(os.path.join(path, filename[0])) as f:
  34. print(f.read())
  35.  
  36. f.read()
  37.  
  38. def selected(self, filename):
  39. print("selected: %s" % filename[0])
  40.  
  41. def notify(self):
  42. try:
  43. # this notification will pop up on ubuntu as well!'
  44. notification.notify(title="Kivy Notification", message="Plyer Up and Running!",
  45. app_name="kivy_test", app_icon="icon.png", timeout=10)
  46. except:
  47. print('error notifiying')
  48.  
  49. def talk(self, file_path):
  50. try:
  51. tts.speak(message=self.convert_pdf_to_txt(file_path[0]))
  52. except:
  53. print('cant talk')
  54.  
  55. def convert_pdf_to_txt(self, path):
  56. rsrcmgr = PDFResourceManager()
  57. retstr = StringIO()
  58. codec = 'utf-8'
  59. laparams = LAParams()
  60. device = TextConverter(rsrcmgr, retstr, codec=codec, laparams=laparams)
  61. fp = file(path, 'rb')
  62. interpreter = PDFPageInterpreter(rsrcmgr, device)
  63. password = ""
  64. maxpages = 0
  65. caching = True
  66. pagenos = set()
  67.  
  68. for page in PDFPage.get_pages(fp, pagenos, maxpages=maxpages, password=password, caching=caching,
  69. check_extractable=True):
  70. interpreter.process_page(page)
  71.  
  72. text = retstr.getvalue()
  73.  
  74. fp.close()
  75. device.close()
  76. retstr.close()
  77. return text
  78.  
  79.  
  80. class MyApp(App):
  81. def build(self):
  82. return MyWidget()
  83.  
  84.  
  85. if __name__ == '__main__':
  86. MyApp().run()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement