def do_it(): prof = jagpdf.create_profile_from_string(s_profile) stream = testlib.NoopStreamOut() doc = jagpdf.create_stream(stream) doc.page_start(5.9*72, 3.5*72) canvas = doc.page().canvas() # meat img = doc.image_load_file(s_jpeg_file) canvas.image(img, 50, 50) canvas.text(10, 10, 200 * 'a') canvas.move_to(10, 10) canvas.line_to(20, 20) canvas.path_paint("fs") font_ttf = testlib.EasyFontTTF(doc)(10) font_core = testlib.EasyFont(doc)(10) canvas.text_font(font_ttf) canvas.text(10, 10, 50 * 'x') font_ttf.advance('abcdefghijklmnopqrstuvwxyz') canvas.text_font(font_core) canvas.text(10, 10, 50 * 'y') font_core.advance('abcdefghijklmnopqrstuvwxyz') # finalize doc.page_end() doc.finalize() # touch the result s = 0 for b in stream.content(): s = s + ord(b)
def do_doc(argv, docname, profile=None): doc = testlib.create_test_doc(argv, docname, profile) font = testlib.EasyFontTTF(doc) font_core = testlib.EasyFont(doc) basic(doc, font, font_core) merge(doc, font_core(12)) merge(doc, font(12)) format(doc, font_core(12), 'justify') format(doc, font_core(12), 'left') format(doc, font(12), 'justify') format(doc, font(12), 'left') doc.finalize()
def create_tiling_pattern_inner(doc): fnt = testlib.EasyFont(doc, 'utf-8') pc = doc.canvas_create() pc.color_space("f", jagpdf.CS_DEVICE_GRAY) pc.color("f", 0.0) pc.text_font(fnt(8)) pc.text_start(2, 9) pc.text("inner #1") pc.text_translate_line(0, 9) pc.text("inner #2") pc.text_end() spec = "step=50, 25" return doc.tiling_pattern_load(spec, pc)
def test_main(argv=None): doc = testlib.create_test_doc(argv, "canvas.pdf") fnt = testlib.EasyFont(doc) # create a canvas # canvas = doc.create_canvas() # canvas.rectangle(36, 36, 72, 72) # canvas.path_paint("s") for i in range(5): doc.page_start(144, 144) # doc.page().add_canvas(0, 0, canvas) pg_canvas = doc.page().canvas() pg_canvas.text_font(fnt()) pg_canvas.text(72, 72, "page %i" % i) doc.page_end() doc.finalize()
def test_main(argv=None): ## ## default text encoding: utf-8 ## font encoding: windows-1250 ## cfg = testlib.test_config() cfg.set("text.encoding", "utf-8") doc = testlib.create_test_doc(argv, "defaulttxtenc.pdf", cfg) #doc = testlib.create_test_doc("/mnt/win/c/Temp/basictxtfmt3.pdf", cfg) do_page(doc, testlib.EasyFont(doc, 'windows-1250'), testlib.long_unicode_text, "core font 1250, text utf-8") do_page(doc, testlib.EasyFontTTF(doc, 'windows-1250'), testlib.long_unicode_text, "ttf 1250, text utf-8") doc.finalize() ## ## default text encoding: windows-1250 ## font encoding: iso-8859-2 ## cfg = testlib.test_config() cfg.set("text.encoding", "windows-1250") doc = testlib.create_test_doc(argv, "defaulttxtenc2.pdf", cfg) #doc = testlib.create_test_doc("/mnt/win/c/Temp/defaulttxtenc2.pdf", cfg) do_page(doc, testlib.EasyFont(doc, 'iso-8859-2'), testlib.long_unicode_text.encode("windows-1250"), "core font iso-8859-2, windows-1250") do_page(doc, testlib.EasyFontTTF(doc, 'iso-8859-2'), testlib.long_unicode_text.encode("windows-1250"), "ttf iso-8859-2, windows-1250") doc.finalize()
def do_page(writer): writer.page_start(3*72, 80) page = writer.page().canvas() font = testlib.EasyFont(writer) page.text_font(font()) page.color_space("f", jagpdf.CS_DEVICE_RGB) page.color("f", .7, 0, 0) page.text(20, 20, "This text should be red!") page.state_save() page.color_space("f", jagpdf.CS_DEVICE_CMYK) page.color("f", 1, 1, 0, .45) page.text(20, 40, "This text should be dark blue!") page.state_restore() page.text(20, 60, "This text should be red again!") writer.page_end()
def test_main(argv=None): doc = testlib.create_test_doc(argv, "basictxtfmt.pdf") g_fnt_1250 = testlib.EasyFont(doc, 'windows-1250') g_fnt_ttf_utf8 = testlib.EasyFontTTF(doc, 'utf-8') g_fnt_utf8 = doc.font_load("standard; name=Helvetica; size=12; enc=utf-8") txt = testlib.long_text utxt = testlib.long_unicode_text do_page(doc, utxt, g_fnt_ttf_utf8(12), "ttf pyunicode", align="justify") do_page(doc, txt, g_fnt_1250(12), "core cp1250") do_page(doc, txt, g_fnt_1250(12), "core cp1250 - justified", align="justify") do_page(doc, txt, g_fnt_1250(12), "core cp1250 - right align", align="right") do_page(doc, txt, g_fnt_1250(12), "core cp1250 - center align", align="center") do_page(doc, txt, g_fnt_1250(12), "core cp1250 - bottomup", direction='bottomup') do_page(doc, utxt.encode('windows-1250'), g_fnt_1250(12), "core cp1250 (from unicode)", baseline="top", align="justify") do_page(doc, utxt, g_fnt_utf8, "core unicode", baseline="top", align="justify") doc.finalize()
# Copyright (c) 2005-2009 Jaroslav Gresula # # Distributed under the MIT license (See accompanying file # LICENSE.txt or copy at http://jagpdf.org/LICENSE.txt) # import os import jag.testlib as testlib import jag.imagemanip as imagemanip import jagpdf g_image_dir = os.path.expandvars('${JAG_TEST_RESOURCES_DIR}/images') g_jpeg_file = os.path.join(g_image_dir, "lena.jpg") g_png_file = os.path.join(g_image_dir, "lena_alpha.png") g_font = testlib.EasyFont() def get_pattern(doc): pcell = doc.canvas_create() pcell.color_space('f', jagpdf.CS_DEVICE_GRAY) pcell.color('f', 0.8) pcell.rectangle(0, 0, 10, 10) pcell.rectangle(10, 10, 10, 10) pcell.path_paint('f') return doc.tiling_pattern_load('step=20, 20', pcell) def paint_background(doc, media): canvas = doc.page().canvas() canvas.state_save() canvas.color_space_pattern('f')
def test_main(argv=None): test_faults() # 'save state' and 'restore state' operators should not be used within # text objects. Regarding the graphics state, only 'General graphics # state' operators are allowed. doc = testlib.create_test_doc(argv, "textstate.pdf") #doc = testlib.create_test_doc("/mnt/win/c/Temp/textstate.pdf") fnt = testlib.EasyFont(doc) paper = testlib.paperA5 doc.page_start(*paper) canvas = doc.page().canvas() fid = fnt(32) canvas.text_font(fid) linespacing = fid.height() canvas.text_start(18, 36) def show_text_ex(canvas, text, action, *args): action(*args) canvas.text(text) canvas.text_translate_line(0, linespacing) #char spacing canvas.text("Character spacing normal") canvas.text_translate_line(0, linespacing) show_text_ex(canvas, "Character spacing: 1", canvas.text_character_spacing, 1) canvas.text_character_spacing(0) #horizontal scaling canvas.text("Horizontal scaling 100%") canvas.text_translate_line(0, linespacing) show_text_ex(canvas, "Horizontal scaling 50%", canvas.text_horizontal_scaling, 50) show_text_ex(canvas, "Horizontal scaling 110%", canvas.text_horizontal_scaling, 110) canvas.text_horizontal_scaling(100) # rise canvas.text_translate_line(0, linespacing) canvas.text("Rise ") canvas.text_rise(10) canvas.text("10") canvas.text_rise(-10) canvas.text("-10") canvas.text_end() doc.page_end() # text rendering modes doc.page_start(*paper) canvas = doc.page().canvas() canvas.color_space("s", jagpdf.CS_DEVICE_RGB) canvas.color("s", 0.0, 0.0, 1.0) canvas.translate(18, 36) canvas.text_font(fid) def clipped_obj(canvas): canvas.state_save() canvas.color_space("s", jagpdf.CS_DEVICE_RGB) canvas.color("s", 1.0, 0.0, 0.0) for i in range(1, int(paper[1]), 3): canvas.move_to(0, i) canvas.line_to(paper[0], i) canvas.path_paint("s") canvas.state_restore() modes = [("f", "fill", None), ("fs", "fill stroke", None), ("s", "stroke", None), ("i", "invisible", None), ("fc", "fill clip", clipped_obj), ("fsc", "fill stroke clip", clipped_obj), ("c", "clip", clipped_obj), ("sc", "stroke clip", clipped_obj)] curr_y = 0 for mode, text, action in modes: canvas.state_save() canvas.text_start(0, curr_y) canvas.text_rendering_mode(mode) canvas.text(text) canvas.text_end() canvas.translate(0, -curr_y) if action: clipped_obj(canvas) canvas.state_restore() curr_y += linespacing # other tests and fault injection testlib.must_throw(canvas.text_rendering_mode, "a") testlib.must_throw(canvas.text_rendering_mode, "ic") canvas.text_rendering_mode("fFsScC") canvas.text_rendering_mode("iI") doc.page_end() doc.finalize()