code: def _save(im, fp, filename, save_all=False):
      is_appending = im.encoderinfo.get("append", False)
      if is_appending:
          existing_pdf = PdfParser.PdfParser(
              f=fp, filename=filename, mode="r+b"
          )
      else:
          existing_pdf = PdfParser.PdfParser(
              f=fp, filename=filename, mode="w+b"
          )
  
      dpi = im.encoderinfo.get("dpi")
      if dpi:
          x_resolution = dpi[0]
          y_resolution = dpi[1]
      else:
          x_resolution = y_resolution = im.encoderinfo.get(
              "resolution", 72.0
          )
  
      info = {
          "title": None
          if is_appending
          else os.path.splitext(os.path.basename(filename))[0],
          "author": None,
          "subject": None,
          "keywords": None,
          "creator": None,
          "producer": None,
          "creationDate": None if is_appending else time.gmtime(),
          "modDate": None if is_appending else time.gmtime(),
      }
      for k, default in info.items():
          v = im.encoderinfo.get(k) if k in im.encoderinfo else default
          if v:
              existing_pdf.info[k[0].upper() + k[1:]] = v
  
      #
      # make sure image data is available
      im.load()
  
      existing_pdf.start_writing()
      existing_pdf.write_header()
      existing_pdf.write_comment(
          f"created by Pillow {__version__} PDF driver"
      )
  
      #
      # pages
      ims = [im]
      if save_all:
          append_images = im.encoderinfo.get("append_images", [])
          for append_im in append_images:
              append_im.encoderinfo = im.encoderinfo.copy()
              ims.append(append_im)
      number_of_pages = 0
      image_refs = []
      page_refs = []
      contents_refs = []
      for im in ims:
          im_number_of_pages = 1
          if save_all:
              try:
                  im_number_of_pages = im.n_frames
              except AttributeError:
                  # Image format does not have n_frames.
                  # It is a single frame image
                  pass
          number_of_pages += im_number_of_pages
          for i in range(im_number_of_pages):
              image_refs.append(existing_pdf.next_object_id(0))
              if im.mode == "P" and "transparency" in im.info:
                  image_refs.append(existing_pdf.next_object_id(0))
  
              page_refs.append(existing_pdf.next_object_id(0))
              contents_refs.append(existing_pdf.next_object_id(0))
              existing_pdf.pages.append(page_refs[-1])
  
      #
      # catalog and list of pages
      existing_pdf.write_catalog()
  
      page_number = 0
      for im_sequence in ims:
          im_pages = (
              ImageSequence.Iterator(im_sequence)
              if save_all
              else [im_sequence]
          )
          for im in im_pages:
              image_ref, procset = _write_image(
                  im, filename, existing_pdf, image_refs
              )
  
              #
              # page
  
              existing_pdf.write_page(
                  page_refs[page_number],
                  Resources=PdfParser.PdfDict(
                      ProcSet=[
                          PdfParser.PdfName("PDF"),
                          PdfParser.PdfName(procset),
                      ],
                      XObject=PdfParser.PdfDict(image=image_ref),
                  ),
                  MediaBox=[
                      0,
                      0,
                      im.width * 72.0 / x_resolution,
                      im.height * 72.0 / y_resolution,
                  ],
                  Contents=contents_refs[page_number],
              )
  
              #
              # page contents
  
              page_contents = b"q %f 0 0 %f 0 0 cm /image Do Q\n" % (
                  im.width * 72.0 / x_resolution,
                  im.height * 72.0 / y_resolution,
              )
  
              existing_pdf.write_obj(
                  contents_refs[page_number], stream=page_contents
              )
  
              page_number += 1
  
      #
      # trailer
      existing_pdf.write_xref_and_trailer()
      if hasattr(fp, "flush"):
          fp.flush()
      existing_pdf.close()
  
file_path: catboost/contrib/python/Pillow/py3/PIL/PdfImagePlugin.py
imports: import io
  import math
  import os
  import time
  from .None import Image, ImageFile, ImageSequence, PdfParser, __version__, features
label_desc: Use image node_id 3 for calling a global function with example usage: _save(im, fp, filename, save_all) without return types