[ Avaa Bypassed ]




Upload:

Command:

www-data@3.133.117.5: ~ $
__doc__="""helper for importing pdf structures into a ReportLab generated document
"""
from reportlab.pdfbase.pdfdoc import format, PDFObject, pdfdocEnc
from reportlab import ascii
from reportlab.lib.utils import strTypes

def _patternSequenceCheck(pattern_sequence):
    allowedTypes = strTypes if isinstance(strTypes, tuple) else (strTypes,)
    allowedTypes = allowedTypes + (PDFObject,PDFPatternIf)
    for x in pattern_sequence:
        if not isinstance(x,allowedTypes):
            if len(x)!=1:
                raise ValueError("sequence elts must be strings/bytes/PDFPatternIfs or singletons containing strings: "+ascii(x))
            if not isinstance(x[0],strTypes):
                raise ValueError("Singletons must contain strings/bytes or PDFObject instances only: "+ascii(x[0]))

class PDFPattern(PDFObject):
    __RefOnly__ = 1
    def __init__(self, pattern_sequence, **keywordargs):
        """
        Description of a kind of PDF object using a pattern.

        Pattern sequence should contain strings, singletons of form [string] or
        PDFPatternIf objects.
        Strings are literal strings to be used in the object.
        Singletons are names of keyword arguments to include.
        PDFpatternIf objects allow some conditionality.
        Keyword arguments can be non-instances which are substituted directly in string conversion,
        or they can be object instances in which case they should be pdfdoc.* style
        objects with a x.format(doc) method.
        Keyword arguments may be set on initialization or subsequently using __setitem__, before format.
        "constant object" instances can also be inserted in the patterns.
        """
        _patternSequenceCheck(pattern_sequence)
        self.pattern = pattern_sequence
        self.arguments = keywordargs

    def __setitem__(self, item, value):
        self.arguments[item] = value

    def __getitem__(self, item):
        return self.arguments[item]

    def eval(self,L):
        arguments = self.arguments
        document = self.__document
        for x in L:
            if isinstance(x,strTypes):
                yield pdfdocEnc(x)
            elif isinstance(x,PDFObject):
                yield x.format(document)
            elif isinstance(x,PDFPatternIf):
                result = list(self.eval(x.cond))
                cond = result and result[0]
                for z in self.eval(x.thenPart if cond else x.elsePart):
                    yield z
            else:
                name = x[0]
                value = arguments.get(name, None)
                if value is None:
                    raise ValueError("%s value not defined" % ascii(name))
                if isinstance(value,PDFObject):
                    yield format(value,document)
                elif isinstance(value,strTypes):
                    yield pdfdocEnc(value)
                else:
                    yield pdfdocEnc(str(value))

    def format(self, document):
        self.__document = document
        try:
            return b"".join(self.eval(self.pattern))
        finally:
            del self.__document

    def clone(self):
        c = object.__new__(self.__class__)
        c.pattern = self.pattern
        c.arguments = self.arguments
        return c

class PDFPatternIf(object):
    '''cond will be evaluated as [cond] in PDFpattern eval.
    It should evaluate to a list with value 0/1 etc etc.
    thenPart is a list to be evaluated if the cond evaulates true,
    elsePart is the false sequence.
    '''
    def __init__(self,cond,thenPart=[],elsePart=[]):
        if not isinstance(cond,list): cond = [cond]
        for x in cond, thenPart, elsePart:
            _patternSequenceCheck(x)
        self.cond = cond
        self.thenPart = thenPart
        self.elsePart = elsePart

Filemanager

Name Type Size Permission Actions
__pycache__ Folder 0755
__init__.py File 275 B 0644
_can_cmap_data.py File 1.78 KB 0644
_cidfontdata.py File 31.29 KB 0644
_fontdata.py File 8.35 KB 0644
_fontdata_enc_macexpert.py File 2.99 KB 0644
_fontdata_enc_macroman.py File 2.87 KB 0644
_fontdata_enc_pdfdoc.py File 2.25 KB 0644
_fontdata_enc_standard.py File 1.79 KB 0644
_fontdata_enc_symbol.py File 3.11 KB 0644
_fontdata_enc_winansi.py File 2.93 KB 0644
_fontdata_enc_zapfdingbats.py File 2.17 KB 0644
_fontdata_widths_courier.py File 3.58 KB 0644
_fontdata_widths_courierbold.py File 3.58 KB 0644
_fontdata_widths_courierboldoblique.py File 3.58 KB 0644
_fontdata_widths_courieroblique.py File 3.58 KB 0644
_fontdata_widths_helvetica.py File 3.58 KB 0644
_fontdata_widths_helveticabold.py File 3.58 KB 0644
_fontdata_widths_helveticaboldoblique.py File 3.58 KB 0644
_fontdata_widths_helveticaoblique.py File 3.58 KB 0644
_fontdata_widths_symbol.py File 3.29 KB 0644
_fontdata_widths_timesbold.py File 3.59 KB 0644
_fontdata_widths_timesbolditalic.py File 3.58 KB 0644
_fontdata_widths_timesitalic.py File 3.58 KB 0644
_fontdata_widths_timesroman.py File 3.58 KB 0644
_fontdata_widths_zapfdingbats.py File 2.67 KB 0644
_glyphlist.py File 105.92 KB 0644
acroform.py File 44.59 KB 0644
cidfonts.py File 18.4 KB 0644
pdfdoc.py File 88.18 KB 0644
pdfform.py File 15.35 KB 0644
pdfmetrics.py File 29.95 KB 0644
pdfpattern.py File 3.71 KB 0644
pdfutils.py File 9.64 KB 0644
rl_codecs.py File 53.82 KB 0644
ttfonts.py File 51.7 KB 0644