docs: def _parseAtPage(self, src):
          """page
          : PAGE_SYM S* IDENT? pseudo_page? S*
              '{' S* declaration [ ';' S* declaration ]* '}' S*
          ;
          """
          ctxsrc = src
          src = src[len('@page'):].lstrip()
          page, src = self._getIdent(src)
          if src[:1] == ':':
              pseudopage, src = self._getIdent(src[1:])
              page = page + '_' + pseudopage
          else:
              pseudopage = None
  
          #src, properties = self._parseDeclarationGroup(src.lstrip())
  
          # Containing @ where not found and parsed
          stylesheetElements = []
          src = src.lstrip()
          properties = []
  
          # XXX Extended for PDF use
          if not src.startswith('{'):
              raise self.ParseError('Ruleset opening \'{\' not found', src, ctxsrc)
          else:
              src = src[1:].lstrip()
  
          while src and not src.startswith('}'):
              if src.startswith('@'):
                  # @media, @page, @font-face
                  src, atResults = self._parseAtKeyword(src)
                  if atResults is not None:
                      stylesheetElements.extend(atResults)
              else:
                  src, nproperties = self._parseDeclarationGroup(src.lstrip(), braces=False)
                  properties += nproperties
              src = src.lstrip()
  
          result = [self.cssBuilder.atPage(page, pseudopage, properties)]
  
          return src[1:].lstrip(), result