【问题标题】:It's possible to create a blurred text with reportlab?可以使用reportlab 创建模糊文本吗?
【发布时间】:2020-05-29 11:53:18
【问题描述】:

我正在尝试使用 reportlab 重现模糊/文本阴影效果。像这样的东西。

到目前为止,我的方法是使用填充颜色(文本本身或背景),但我认为如果我遵循这条路径我不会成功,因为 class 只接受不透明度(alpha) 除了定义颜色本身的参数之外的参数。现在我正在尝试找到一些可以模仿这种效果的字体。

那么,reportlab 可以重现理想的效果吗?如果是,我应该使用哪种方法来实现它?

非常感谢!

【问题讨论】:

    标签: python pdf reportlab


    【解决方案1】:

    如果它是一个选项(独立文本/标题),您可以先将文本转换为图片,然后使用 PIL 库对其进行模糊处理。

    可以通过设置radius来适配滤镜,从而达到强烈的模糊效果:

    from PIL import ImageFilter
    from PIL import Image
    
    img = Image.open('test.png')
    
    blurred_img = img.filter(ImageFilter.GaussianBlur(radius=5))
    blurred_img.show()
    

    【讨论】:

    • 不幸的是,不能将文本转换为图片。不过谢谢你的回答!
    【解决方案2】:

    我没有看到任何直接的方法来实现模糊效果,就像你 can achieve with CSS 甚至是 PIL library 使用 reportlab

    您可以尝试以下字体中的一种,它们更能模仿这种效果:AcidicExtraBlurErthqake FontStatic Buzz Font vtks trunkset Font 并使用pdfmetrics.registerFont()TTFont() 方法(例如使用静态 Buzz 字体):

    from reportlab.pdfbase import pdfmetrics
    from reportlab.pdfbase.ttfonts import TTFont
    from reportlab.pdfgen.canvas import Canvas
    
    canvas = Canvas('temp.pdf')
    pdfmetrics.registerFont(TTFont('StaticBuzz', '/path/to/TTF-file/StaticBuzz.ttf')) #Change the path to the .ttf file.
    canvas.setFont('StaticBuzz', 32)
    canvas.drawString(0, 700, "Sample usage of StaticBuzz Font.")
    canvas.save()
    

    【讨论】:

    • 是的,我正朝着这个方向前进(字体与您建议的字体略有不同)。不幸的是,这不是我希望的解决方案,但它现在可以处理:)。感谢您的回复!
    • 遗憾的是,仅使用 reportlab 类中的任何属性是不可能的。
    猜你喜欢
    • 2011-04-25
    • 2014-07-04
    • 2016-08-02
    • 2021-05-05
    • 1970-01-01
    • 1970-01-01
    • 2012-07-21
    • 1970-01-01
    • 2011-09-20
    相关资源
    最近更新 更多