Python中的阿拉伯字母

3

能否使用borb编写阿拉伯字母?

我尝试了borb中的14种可能的字体,但没有一种能够显示阿拉伯字母。

from borb.pdf import Document
from borb.pdf import PDF
from borb.pdf import Page
from borb.pdf import Paragraph
from borb.pdf import SingleColumnLayout

def  main():

    # Create an empty Document.
    pdf = Document()

    # Add an empty Page.
    page = Page()
    pdf.append_page(page)

    # Use a PageLayout (SingleColumnLayout in this case).
    layout = SingleColumnLayout(page)

    # Add a Paragraph
    layout.add(Paragraph("Hello World", font="Helvetica"))

    # Store the PDF.
    with open(Path('output.pdf'), 'wb') as pdf_file_handle:
        PDF.dumps(pdf_file_handle, pdf)

1
我猜你指的是这个库 - Chris
1个回答

3

我认为您需要使用自定义字体,可以是计算机上已有的阿拉伯字体,也可以从Google Fonts之类的网站下载。

下面是一个使用IBM Plex Sans Arabic的示例:

from pathlib import Path

from borb.pdf import Document
from borb.pdf import PDF
from borb.pdf import Page
from borb.pdf import Paragraph
from borb.pdf import SingleColumnLayout
from borb.pdf.canvas.font.simple_font.true_type_font import TrueTypeFont


def main() -> None:
    # Create an empty Document.
    pdf = Document()

    # Add an empty Page.
    page = Page()
    pdf.append_page(page)

    # Use a PageLayout (SingleColumnLayout in this case).
    layout = SingleColumnLayout(page)

    # Construct a Font object.
    font_path = Path(__file__).parent / 'IBMPlexSansArabic-Regular.ttf'
    custom_font = TrueTypeFont.true_type_font_from_file(font_path)

    # Add a Paragraph object.
    longest_unicode_character = '﷽'
    layout.add(Paragraph(longest_unicode_character, font=custom_font))

    # Store the PDF.
    with open(Path('output.pdf'), 'wb') as pdf_file_handle:
        PDF.dumps(pdf_file_handle, pdf)


if __name__ == '__main__':
    main()

output.pdf


没错!并不是每种字体都能够显示每个脚本中的每个字符。PDF 中的 14 种标准字体来自于一个非常西欧中心化的时代。它们不支持非西方脚本(如阿拉伯文、印地文、泰米尔文等)。如果您想要显示这些字符,您需要使用包含这些字符的字体。 - Joris Schellekens

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接