MCPcopy Create free account
hub / github.com/ColdGrub1384/Pyto / __init__

Method __init__

site-packages/matplotlib/backends/backend_pdf.py:427–526  ·  view source on GitHub ↗
(self, filename, metadata=None)

Source from the content-addressed store, hash-verified

425 """PDF file object."""
426
427 def __init__(self, filename, metadata=None):
428 self.nextObject = 1 # next free object id
429 self.xrefTable = [[0, 65535, 'the zero object']]
430 self.passed_in_file_object = False
431 self.original_file_like = None
432 self.tell_base = 0
433 fh, opened = cbook.to_filehandle(filename, "wb", return_opened=True)
434 if not opened:
435 try:
436 self.tell_base = filename.tell()
437 except IOError:
438 fh = BytesIO()
439 self.original_file_like = filename
440 else:
441 fh = filename
442 self.passed_in_file_object = True
443
444 self._core14fontdir = os.path.join(
445 rcParams['datapath'], 'fonts', 'pdfcorefonts')
446 self.fh = fh
447 self.currentstream = None # stream object to write to, if any
448 fh.write(b"%PDF-1.4\n") # 1.4 is the first version to have alpha
449 # Output some eight-bit chars as a comment so various utilities
450 # recognize the file as binary by looking at the first few
451 # lines (see note in section 3.4.1 of the PDF reference).
452 fh.write(b"%\254\334 \253\272\n")
453
454 self.rootObject = self.reserveObject('root')
455 self.pagesObject = self.reserveObject('pages')
456 self.pageList = []
457 self.fontObject = self.reserveObject('fonts')
458 self.alphaStateObject = self.reserveObject('extended graphics states')
459 self.hatchObject = self.reserveObject('tiling patterns')
460 self.gouraudObject = self.reserveObject('Gouraud triangles')
461 self.XObjectObject = self.reserveObject('external objects')
462 self.resourceObject = self.reserveObject('resources')
463
464 root = {'Type': Name('Catalog'),
465 'Pages': self.pagesObject}
466 self.writeObject(self.rootObject, root)
467
468 # get source date from SOURCE_DATE_EPOCH, if set
469 # See https://reproducible-builds.org/specs/source-date-epoch/
470 source_date_epoch = os.getenv("SOURCE_DATE_EPOCH")
471 if source_date_epoch:
472 source_date = datetime.utcfromtimestamp(int(source_date_epoch))
473 source_date = source_date.replace(tzinfo=UTC)
474 else:
475 source_date = datetime.today()
476
477 self.infoDict = {
478 'Creator': 'matplotlib %s, http://matplotlib.org' % __version__,
479 'Producer': 'matplotlib pdf backend %s' % __version__,
480 'CreationDate': source_date
481 }
482 if metadata is not None:
483 self.infoDict.update(metadata)
484 self.infoDict = {k: v for (k, v) in self.infoDict.items()

Callers

nothing calls this directly

Calls 10

reserveObjectMethod · 0.95
writeObjectMethod · 0.95
NameClass · 0.70
tellMethod · 0.45
joinMethod · 0.45
writeMethod · 0.45
replaceMethod · 0.45
updateMethod · 0.45
itemsMethod · 0.45
splitMethod · 0.45

Tested by

no test coverage detected