Esempio n. 1
0
def test_template_qrcode(tmp_path):  # issue-175
    elements = [
        {
            "name": "barcode_0",
            "type": "I",
            "x1": 50,
            "y1": 50,
            "x2": 100,
            "y2": 100,
            "priority": 0,
            "text": None,
        },
        {
            "name": "barcode_1",
            "type": "I",
            "x1": 150,
            "y1": 150,
            "x2": 200,
            "y2": 200,
            "priority": 0,
            "text": None,
        },
    ]
    tmpl = Template(format="letter", elements=elements)
    tmpl.add_page()
    tmpl["barcode_0"] = qrcode.make("Test 0").get_image()
    tmpl["barcode_1"] = qrcode.make("Test 1").get_image()
    assert_pdf_equal(tmpl, HERE / "template_qrcode.pdf", tmp_path)
Esempio n. 2
0
 def test_nominal_csv(self):
     "Taken from docs/Templates.md"
     tmpl = Template(format="A4", title="Sample Invoice")
     tmpl.parse_csv(relative_path_to("mycsvfile.csv"), delimiter=";")
     tmpl.add_page()
     tmpl["company_name"] = "Sample Company"
     assert_pdf_equal(self, tmpl, "test_nominal_csv.pdf")
Esempio n. 3
0
def test_nominal_csv(tmp_path):
    """Taken from docs/Templates.md"""
    tmpl = Template(format="A4", title="Sample Invoice")
    tmpl.parse_csv(HERE / "mycsvfile.csv", delimiter=";")
    tmpl.add_page()
    tmpl["company_name"] = "Sample Company"
    assert_pdf_equal(tmpl, HERE / "template_nominal_csv.pdf", tmp_path)
Esempio n. 4
0
    def do_print(self, evt):
        # genero el renderizador con propiedades del PDF
        paper_size = self.paper_size or DEFAULT_PAPER_SIZE
        orientation = self.paper_orientation or DEFAULT_PAPER_ORIENTATION

        t = Template(
            format=paper_size,
            orientation=orientation,
            elements=[e.as_dict() for e in self.elements if not e.static])
        t.add_page()
        if not t['logo'] or not os.path.exists(t['logo']):
            # put a default logo so it doesn't throw an exception
            logo = os.path.join(os.path.dirname(__file__), 'tutorial',
                                'logo.png')
            t.set('logo', logo)
        try:
            t.render(self.filename + ".pdf")
        except:
            if DEBUG and False:
                import pdb
                pdb.pm()
            else:
                raise
        if sys.platform.startswith("linux"):
            os.system('xdg-open "%s.pdf"' % self.filename)
        else:
            os.startfile(self.filename + ".pdf")
Esempio n. 5
0
def test_template_nominal_csv(tmp_path):
    """Same data as in docs/Templates.md
    The numeric_text tests for a regression."""
    tmpl = Template(format="A4", title="Sample Invoice")
    tmpl.parse_csv(HERE / "mycsvfile.csv", delimiter=";")
    tmpl.add_page()
    tmpl["empty_fields"] = "empty"
    assert_pdf_equal(tmpl, HERE / "template_nominal_csv.pdf", tmp_path)

    tmpl = Template(format="A4", title="Sample Invoice")
    tmpl.parse_csv(HERE / "mycsvfile.csv", delimiter=";", encoding="utf-8")
    tmpl.add_page()
    tmpl["empty_fields"] = "empty"
    assert_pdf_equal(tmpl, HERE / "template_nominal_csv.pdf", tmp_path)
Esempio n. 6
0
    def test_RenderCSV(self):
        f = Template(paperformat="A4", title="testCSV")

        f.parse_csv("testTemplateFile.csv", delimiter=";")
        f.add_page("testTemplateFile.csv")

        pdf = f.getFPDF()
        set_doc_date_0(pdf)

        outfile = relative_path_to("testTemplateFile.pdf")
        pdf.output(outfile, 'F')

        test_hash = calculate_hash_of_file(outfile)
        # Assert versus a well know hash
        self.assertEqual(test_hash, "8d4e2060e5d8264d03ebca707a2ed1ca")

        os.unlink(outfile)
Esempio n. 7
0
    def test_RenderYML(self):
        f = Template(paperformat="A4", title="testCSV")

        f.parse_YML("testTemplateFile.yaml")
        f.add_page("testTemplateFile.yaml")

        pdf = f.getFPDF()
        set_doc_date_0(pdf)

        outfile = relative_path_to("testTemplateFile.pdf")
        pdf.output(outfile, 'F')

        test_hash = calculate_hash_of_file(outfile)
        # Must reproduce the same file than test_RenderCSV
        self.assertEqual(test_hash, "8d4e2060e5d8264d03ebca707a2ed1ca")

        os.unlink(outfile)
Esempio n. 8
0
def test_template_code39(tmp_path):  # issue-161
    elements = [
        {
            "name": "code39",
            "type": "C39",
            "x1": 40,
            "y1": 50,
            "y2": 70,
            "size": 1.5,
            "text": "*Code 39 barcode*",
            "priority": 1,
        },
    ]
    tmpl = Template(format="A4",
                    title="Sample Code 39 barcode",
                    elements=elements)
    tmpl.add_page()
    assert_pdf_equal(tmpl, HERE / "template_code39.pdf", tmp_path)
Esempio n. 9
0
def test_rect_background(tmp_path):  # issue-203
    elements = [
        {
            "name": "A rectangle",
            "type": "B",
            "background": 0x80FF00,
            "foreground": 0x80FF00,
            "text": None,
            "priority": 1,
            "x1": 50,
            "y1": 50,
            "x2": 150,
            "y2": 150,
        },
    ]
    tmpl = Template(format="A4", elements=elements)
    tmpl.add_page()
    assert_pdf_equal(tmpl, HERE / "template_rect_background.pdf", tmp_path)
Esempio n. 10
0
def test_template_code39_defaultheight(
        tmp_path):  # height <= 0 invokes default
    elements = [
        {
            "name": "code39",
            "type": "C39",
            "x1": 40,
            "y1": 50,
            "y2": 50,
            "size": 1.5,
            "text": "*Code 39 barcode*",
            "priority": 1,
        },
    ]
    tmpl = Template(format="A4",
                    title="Sample Code 39 barcode",
                    elements=elements)
    tmpl.add_page()
    assert_pdf_equal(tmpl, HERE / "template_code39_defaultheight.pdf",
                     tmp_path)
Esempio n. 11
0
 def do_print(self, evt):
     # genero el renderizador con propiedades del PDF
     t = Template(elements=[e.as_dict() for e in self.elements if not e.static])
     t.add_page()
     if not t['logo'] or not os.path.exists(t['logo']):
         # put a default logo so it doesn't trow an exception
         logo = os.path.join(os.path.dirname(__file__), 'tutorial','logo.png')
         t.set('logo', logo)
     try:
         t.render(self.filename +".pdf")
     except:
         if DEBUG and False:
             import pdb;
             pdb.pm()
         else:
             raise
     if sys.platform=="linux2":
         os.system("evince ""%s""" % self.filename +".pdf")
     else:
         os.startfile(self.filename +".pdf")
Esempio n. 12
0
def test_template_code39_legacy(tmp_path):
    # check that old parameters still work
    # This uses the same values as above, and compares to the same file.
    elements = [
        {
            "name": "code39",
            "type": "C39",
            "x": 40,
            "y": 50,
            "w": 1.5,
            "h": 20,
            "text": "*Code 39 barcode*",
            "priority": 1,
        },
    ]
    with warns(DeprecationWarning):
        tmpl = Template(format="A4",
                        title="Sample Code 39 barcode",
                        elements=elements)
        tmpl.add_page()
        assert_pdf_equal(tmpl, HERE / "template_code39.pdf", tmp_path)
Esempio n. 13
0
 def do_print(self, evt):
     # genero el renderizador con propiedades del PDF
     t = Template(
         elements=[e.as_dict() for e in self.elements if not e.static])
     t.add_page()
     if not t['logo'] or not os.path.exists(t['logo']):
         # put a default logo so it doesn't trow an exception
         logo = os.path.join(os.path.dirname(__file__), 'tutorial',
                             'logo.png')
         t.set('logo', logo)
     try:
         t.render(self.filename + ".pdf")
     except:
         if DEBUG and False:
             import pdb
             pdb.pm()
         else:
             raise
     if sys.platform == "linux2":
         os.system("evince " "%s" "" % self.filename + ".pdf")
     else:
         os.startfile(self.filename + ".pdf")
Esempio n. 14
0
 def do_print(self, evt):
     # genero el renderizador con propiedades del PDF
     paper_size = self.paper_size or DEFAULT_PAPER_SIZE
     orientation = self.paper_orientation or DEFAULT_PAPER_ORIENTATION
     
     t = Template(format=paper_size, orientation=orientation, elements=[e.as_dict() for e in self.elements if not e.static])
     t.add_page()
     if not t['logo'] or not os.path.exists(t['logo']):
         # put a default logo so it doesn't throw an exception
         logo = os.path.join(os.path.dirname(__file__), 'tutorial','logo.png')
         t.set('logo', logo)
     try:
         t.render(self.filename +".pdf")
     except:
         if DEBUG and False:
             import pdb;
             pdb.pm()
         else:
             raise
     if sys.platform.startswith("linux"):
         os.system('xdg-open "%s.pdf"' % self.filename)
     else:
         os.startfile(self.filename +".pdf")
Esempio n. 15
0
def test_template_justify(tmp_path):  # issue-207
    elements = [
        {
            "name":
            "paragraph",
            "type":
            "T",
            "x1":
            10,
            "y1":
            15,
            "x2":
            580,
            "y2":
            45,
            "font":
            "helvetica",
            "size":
            16,
            "align":
            "J",
            "text":
            "Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore"
            " et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi"
            " ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit"
            " esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident,"
            " sunt in culpa qui officia deserunt mollit anim id est laborum.",
            "priority":
            1,
            "multiline":
            True,
        },
    ]
    tmpl = Template(format="A4", unit="pt", elements=elements)
    tmpl.add_page()
    assert_pdf_equal(tmpl, HERE / "template_justify.pdf", tmp_path)
Esempio n. 16
0
def test_template_multipage(tmp_path):
    """Testing a Template() populating several pages."""
    tmpl = Template(format="A4", title="Sample Invoice")
    tmpl.parse_csv(HERE / "mycsvfile.csv", delimiter=";")
    tmpl.add_page()
    tmpl["name0"] = "Joe Doe"
    tmpl["title0"] = "Director"
    tmpl.add_page()
    tmpl["name0"] = "Jane Doe"
    tmpl["title0"] = "General Manager"
    tmpl.add_page()
    tmpl["name0"] = "Heinz Mustermann"
    tmpl["title0"] = "Worker"
    assert_pdf_equal(tmpl, HERE / "template_multipage.pdf", tmp_path)
Esempio n. 17
0
def test_template_textstyles(tmp_path):
    """Testing bold, italic, underline in template and in tags."""
    elements = [
        {
            "name": "tb",
            "type": "T",
            "x1": 20,
            "y1": 20,
            "x2": 30,
            "y2": 25,
            "text": "text bold",
            "bold": True,
        },
        {
            "name": "ti",
            "type": "T",
            "x1": 20,
            "y1": 30,
            "x2": 30,
            "y2": 35,
            "text": "text italic",
            "italic": True,
        },
        {
            "name": "tu",
            "type": "T",
            "x1": 20,
            "y1": 40,
            "x2": 30,
            "y2": 45,
            "text": "text underline",
            "underline": True,
        },
        {
            "name": "tbiu",
            "type": "T",
            "x1": 20,
            "y1": 50,
            "x2": 30,
            "y2": 55,
            "text": "text all",
            "bold": True,
            "italic": True,
            "underline": True,
        },
        {
            "name": "wb",
            "type": "W",
            "x1": 20,
            "y1": 60,
            "x2": 30,
            "y2": 65,
            "text": "write bold",
            "bold": True,
        },
        {
            "name": "wi",
            "type": "W",
            "x1": 20,
            "y1": 70,
            "x2": 30,
            "y2": 75,
            "text": "write italic",
            "italic": True,
        },
        {
            "name": "wu",
            "type": "W",
            "x1": 20,
            "y1": 80,
            "x2": 30,
            "y2": 85,
            "text": "write underline",
            "underline": True,
        },
        {
            "name": "wbiu",
            "type": "W",
            "x1": 20,
            "y1": 90,
            "x2": 30,
            "y2": 95,
            "text": "write all",
            "bold": True,
            "italic": True,
            "underline": True,
        },
        {
            "name": "tbt",
            "type": "T",
            "x1": 20,
            "y1": 100,
            "x2": 30,
            "y2": 105,
            "text": "<B>text bold tags</B>",
        },
        {
            "name": "tit",
            "type": "T",
            "x1": 20,
            "y1": 110,
            "x2": 30,
            "y2": 115,
            "text": "<I>text italic tags</I>",
        },
        {
            "name": "tut",
            "type": "T",
            "x1": 20,
            "y1": 120,
            "x2": 30,
            "y2": 125,
            "text": "<U>text underline tags</U>",
        },
        {
            "name": "wbt",
            "type": "W",
            "x1": 20,
            "y1": 130,
            "x2": 30,
            "y2": 135,
            "text": "<B>write bold tags</B>",
        },
        {
            "name": "wit",
            "type": "W",
            "x1": 20,
            "y1": 140,
            "x2": 30,
            "y2": 145,
            "text": "<I>write italic tags</I>",
        },
        {
            "name": "wut",
            "type": "W",
            "x1": 20,
            "y1": 150,
            "x2": 30,
            "y2": 155,
            "text": "<U>write underline tags</U>",
        },
    ]
    tmpl = Template(elements=elements)
    tmpl.add_page()
    assert_pdf_equal(tmpl, HERE / "template_textstyles.pdf", tmp_path)
Esempio n. 18
0
def test_nominal_hardcoded(tmp_path):
    """Taken from docs/Templates.md"""
    elements = [
        {
            "name": "company_logo",
            "type": "I",
            "x1": 20,
            "y1": 20,
            "x2": 70,
            "y2": 70,
            "font": None,
            "size": 0,
            "bold": 0,
            "italic": 0,
            "underline": 0,
            "foreground": 0,
            "background": 0,
            "align": "I",
            "text": "logo",
            "priority": 2,
        },
        {
            "name": "company_name",
            "type": "T",
            "x1": 20,
            "y1": 75,
            "x2": 118,
            "y2": 90,
            "font": "helvetica",
            "size": 12,
            "bold": 1,
            "italic": 0,
            "underline": 0,
            "foreground": 0,
            "background": 0,
            "align": "I",
            "text": "",
            "priority": 2,
        },
        {
            "name": "box",
            "type": "B",
            "x1": 15,
            "y1": 15,
            "x2": 185,
            "y2": 260,
            "font": "helvetica",
            "size": 0,
            "bold": 0,
            "italic": 0,
            "underline": 0,
            "foreground": 0,
            "background": 0,
            "align": "I",
            "text": None,
            "priority": 0,
        },
        {
            "name": "box_x",
            "type": "B",
            "x1": 95,
            "y1": 15,
            "x2": 105,
            "y2": 25,
            "font": "helvetica",
            "size": 0,
            "bold": 1,
            "italic": 0,
            "underline": 0,
            "foreground": 0,
            "background": 0,
            "align": "I",
            "text": None,
            "priority": 2,
        },
        {
            "name": "line1",
            "type": "L",
            "x1": 100,
            "y1": 25,
            "x2": 100,
            "y2": 57,
            "font": "helvetica",
            "size": 0,
            "bold": 0,
            "italic": 0,
            "underline": 0,
            "foreground": 0,
            "background": 0,
            "align": "I",
            "text": None,
            "priority": 3,
        },
        {
            "name": "barcode",
            "type": "BC",
            "x1": 20,
            "y1": 246.5,
            "x2": 140,
            "y2": 254,
            "font": "Interleaved 2of5 NT",
            "size": 0.75,
            "bold": 0,
            "italic": 0,
            "underline": 0,
            "foreground": 0,
            "background": 0,
            "align": "I",
            "text": "200000000001000159053338016581200810081",
            "priority": 3,
        },
    ]
    tmpl = Template(format="A4", elements=elements, title="Sample Invoice")
    tmpl.add_page()
    tmpl["company_name"] = "Sample Company"
    tmpl["company_logo"] = HERE.parent.parent / "docs/fpdf2-logo.png"
    assert_pdf_equal(tmpl, HERE / "template_nominal_hardcoded.pdf", tmp_path)
Esempio n. 19
0
 def test_nominal_hardcoded(self):
     "Taken from docs/Templates.md"
     elements = [
         {
             "name": "company_logo",
             "type": "I",
             "x1": 20.0,
             "y1": 17.0,
             "x2": 78.0,
             "y2": 30.0,
             "font": None,
             "size": 0.0,
             "bold": 0,
             "italic": 0,
             "underline": 0,
             "foreground": 0,
             "background": 0,
             "align": "I",
             "text": "logo",
             "priority": 2,
         },
         {
             "name": "company_name",
             "type": "T",
             "x1": 17.0,
             "y1": 32.5,
             "x2": 115.0,
             "y2": 37.5,
             "font": "Arial",
             "size": 12.0,
             "bold": 1,
             "italic": 0,
             "underline": 0,
             "foreground": 0,
             "background": 0,
             "align": "I",
             "text": "",
             "priority": 2,
         },
         {
             "name": "box",
             "type": "B",
             "x1": 15.0,
             "y1": 15.0,
             "x2": 185.0,
             "y2": 260.0,
             "font": "Arial",
             "size": 0.0,
             "bold": 0,
             "italic": 0,
             "underline": 0,
             "foreground": 0,
             "background": 0,
             "align": "I",
             "text": None,
             "priority": 0,
         },
         {
             "name": "box_x",
             "type": "B",
             "x1": 95.0,
             "y1": 15.0,
             "x2": 105.0,
             "y2": 25.0,
             "font": "Arial",
             "size": 0.0,
             "bold": 1,
             "italic": 0,
             "underline": 0,
             "foreground": 0,
             "background": 0,
             "align": "I",
             "text": None,
             "priority": 2,
         },
         {
             "name": "line1",
             "type": "L",
             "x1": 100.0,
             "y1": 25.0,
             "x2": 100.0,
             "y2": 57.0,
             "font": "Arial",
             "size": 0,
             "bold": 0,
             "italic": 0,
             "underline": 0,
             "foreground": 0,
             "background": 0,
             "align": "I",
             "text": None,
             "priority": 3,
         },
         {
             "name": "barcode",
             "type": "BC",
             "x1": 20.0,
             "y1": 246.5,
             "x2": 140.0,
             "y2": 254.0,
             "font": "Interleaved 2of5 NT",
             "size": 0.75,
             "bold": 0,
             "italic": 0,
             "underline": 0,
             "foreground": 0,
             "background": 0,
             "align": "I",
             "text": "200000000001000159053338016581200810081",
             "priority": 3,
         },
     ]
     tmpl = Template(format="A4", elements=elements, title="Sample Invoice")
     tmpl.add_page()
     tmpl["company_name"] = "Sample Company"
     tmpl["company_logo"] = relative_path_to("../../tutorial/logo.png")
     assert_pdf_equal(self, tmpl, "test_nominal_hardcoded.pdf")
Esempio n. 20
0
def test_template_nominal_hardcoded(tmp_path):
    """Taken from docs/Templates.md"""
    elements = [
        {
            "name": "company_logo",
            "type": "I",
            "x1": 20,
            "y1": 20,
            "x2": 70,
            "y2": 70,
            "font": None,
            "size": 0,
            "bold": 0,
            "italic": 0,
            "underline": 0,
            "foreground": 0,
            "align": "I",
            "text": "logo",
            "priority": 2,
        },
        {
            "name": "company_name",
            "type": "T",
            "x1": 20,
            "y1": 75,
            "x2": 118,
            "y2": 90,
            "font": "helvetica",
            "size": 12,
            "bold": 1,
            "italic": 1,
            "underline": 1,
            "foreground": 0,
            "align": "I",
            "text": "",
            "priority": 2,
            # multiline is optional, so we test some items without it.
        },
        {
            "name": "multline_text",
            "type": "T",
            "x1": 20,
            "y1": 100,
            "x2": 40,
            "y2": 105,
            "font": "helvetica",
            "size": 12,
            "bold": 0,
            "italic": 0,
            "underline": 0,
            "foreground": 0,
            "background": 0x88FF00,
            "align": "I",
            "text": "Lorem ipsum dolor sit amet, consectetur adipisici elit",
            "priority": 2,
            "multiline": True,
        },
        {
            "name": "box",
            "type": "B",
            "x1": 15,
            "y1": 15,
            "x2": 185,
            "y2": 260,
            "font": "helvetica",
            "size": 0,
            "bold": 0,
            "italic": 0,
            "underline": 0,
            "foreground": 0,
            "align": "I",
            "text": None,
            "priority": 0,
        },
        {
            "name": "box_x",
            "type": "B",
            "x1": 95,
            "y1": 15,
            "x2": 105,
            "y2": 25,
            "font": "helvetica",
            "size": 0,
            "bold": 1,
            "italic": 0,
            "underline": 0,
            "foreground": 0,
            "align": "I",
            "text": None,
            "priority": 2,
        },
        {
            "name": "line1",
            "type": "L",
            "x1": 100,
            "y1": 25,
            "x2": 100,
            "y2": 57,
            "font": "helvetica",
            "size": 0,
            "bold": 0,
            "italic": 0,
            "underline": 0,
            "foreground": 0,
            "align": "I",
            "text": None,
            "priority": 3,
            "multiline": False,
        },
        {
            "name": "barcode",
            "type": "BC",
            "x1": 20,
            "y1": 246.5,
            "x2": 140,
            "y2": 254,
            "font": "Interleaved 2of5 NT",
            "size": 0.75,
            "bold": 0,
            "italic": 0,
            "underline": 0,
            "foreground": 0,
            "align": "I",
            "text": "200000000001000159053338016581200810081",
            "priority": 3,
            "multiline": False,
        },
    ]
    tmpl = Template(format="A4", elements=elements, title="Sample Invoice")
    tmpl.add_page()
    tmpl["company_name"] = "Sample Company"
    assert tmpl[
        "company_name"] == "Sample Company"  # testing Template.__getitem__
    tmpl["company_logo"] = HERE.parent.parent / "docs/fpdf2-logo.png"
    assert_pdf_equal(tmpl, HERE / "template_nominal_hardcoded.pdf", tmp_path)