Exemple #1
0
def tilted_span(page, wdir, span, font):
    """Output a non-horizontal span."""
    cos, sin = wdir  # writing direction from the line
    matrix = fitz.Matrix(cos, -sin, sin, cos, 0, 0)  # corresp. matrix
    text = span["text"]  # text to write
    bbox = fitz.Rect(span["bbox"])
    fontsize = span["size"]  # adjust fontsize
    tl = font.text_length(text, fontsize)  # text length with new font
    m = max(bbox.width, bbox.height)  # must not exceed max bbox dimension
    if tl > m:
        fontsize *= m / tl  # otherwise adjust
    opa = 0.1 if fontsize > 100 else 1  # fake opacity for large fontsizes
    tw = fitz.TextWriter(page.rect, opacity=opa, color=fitz.sRGB_to_pdf(span["color"]))
    origin = fitz.Point(span["origin"])
    if sin > 0:  # clockwise rotation
        origin.y = bbox.y0
    tw.append(origin, text, font=font, fontsize=fontsize)
    tw.writeText(page, morph=(origin, matrix))
Exemple #2
0
def test_rgbcodes():
    sRGB = 0xFFFFFF
    assert fitz.sRGB_to_pdf(sRGB) == (1, 1, 1)
    assert fitz.sRGB_to_rgb(sRGB) == (255, 255, 255)
                if color in textwriters.keys():  # already have a textwriter?
                    tw = textwriters[color]  # re-use it
                else:  # make new
                    tw = fitz.TextWriter(page.rect)  # make text writer
                    textwriters[color] = tw  # store it for later use
                try:
                    tw.append(
                        span["origin"],
                        text,
                        font=font,
                        fontsize=resize(span, font),  # use adjusted fontsize
                        wmode=wmode,
                        markup_dir=markup_dir,
                        bidi_level=bidi_level,
                    )
                except:
                    print("page %i exception:" % page.number, text)

    # now write all text stored in the list of text writers
    for color in textwriters.keys():  # output the stored text per color
        tw = textwriters[color]
        outcolor = fitz.sRGB_to_pdf(color)  # recover (r,g,b)
        tw.writeText(page, color=outcolor)

    clean_fontnames(page)

t1 = time.perf_counter()
print("End of phase 2, %g seconds" % round(t1 - t0_2, 2))
print("Total duration %g seconds" % round(t1 - t0, 2))
indoc.save(indoc.name.replace(".pdf", "-new.pdf"), garbage=4, deflate=True)
Exemple #4
0
                if color in textwriters.keys():  # already have a textwriter?
                    tw = textwriters[color]  # re-use it
                else:  # make new
                    tw = fitz.TextWriter(page.rect)  # make text writer
                    textwriters[color] = tw  # store it for later use
                try:
                    tw.append(
                        span["origin"],
                        text,
                        font=font,
                        fontsize=resize(span, font),  # use adjusted fontsize
                        wmode=wmode,
                        markup_dir=markup_dir,
                        bidi_level=bidi_level,
                    )
                except:
                    print("page %i exception:" % page.number, text)

    for color in textwriters.keys():  # output the stored text per color
        tw = textwriters[color]
        outcolor = fitz.sRGB_to_pdf(
            color)  # recover (r,g,b) for given sRGB value
        tw.writeText(page, color=outcolor)

    clean_fontnames(page)

t1 = time.perf_counter()
print("End of phase 2, %g seconds" % round(t1 - t0_2, 2))
print("Total duration %g seconds" % round(t1 - t0, 2))
indoc.save(indoc.name.replace(".pdf", "-new.pdf"), garbage=4, deflate=True)