diff --git a/pdfplumber/pdf.py b/pdfplumber/pdf.py index 6ae3b63..19199dc 100644 --- a/pdfplumber/pdf.py +++ b/pdfplumber/pdf.py @@ -9,8 +9,6 @@ from pdfminer.pdfinterp import PDFResourceManager, PDFPageInterpreter from pdfminer.layout import LAParams from pdfminer.converter import PDFPageAggregator -import atexit - class PDF(Container): cached_properties = Container.cached_properties + [ "_pages" ] @@ -30,7 +28,6 @@ class PDF(Container): self.metadata[k] = decode_text(v) self.device = PDFPageAggregator(rsrcmgr, laparams=self.laparams) self.interpreter = PDFPageInterpreter(rsrcmgr, self.device) - atexit.register(self.close) def process_page(self, page): self.interpreter.process_page(page) @@ -53,6 +50,13 @@ class PDF(Container): def close(self): self.stream.close() + def __enter__(self): + return self + + def __exit__(self, type, value, traceback): + self.flush_cache() + self.close() + @property def objects(self): if hasattr(self, "_objects"): return self._objects