我正在使用borb创建PDF文档,并尝试在表格单元格中对齐文本。
from borb.pdf import Document
from borb.pdf import Page
from borb.pdf import SingleColumnLayout
from borb.pdf import Paragraph
from borb.pdf import PDF
from borb.pdf import Alignment
from borb.pdf import TableCell
from borb.pdf import FlexibleColumnWidthTable
from borb.pdf import Table
pdf = Document()
page = Page()
pdf.add_page(page)
layout = SingleColumnLayout(page)
layout.add(
    FixedColumnWidthTable(number_of_columns=1, number_of_rows=1)
    .add(Paragraph(
            """
            Report generated on 2022-01-01 at 00:00 am (UTC)
            Date: 01 Jan
            """,
            text_alignment=Alignment.RIGHT,
            padding_top=Decimal(12),
            respect_newlines_in_text=True,
            font_size=Decimal(10))))
with open(Path("output.pdf"), "wb") as pdf_file_handle:
    PDF.dumps(pdf_file_handle, pdf)但是文本不是对齐到最右边的,而是与单元格的中间对齐(检查图像)。您知道如何将文本与表的最右边边框对齐吗?

发布于 2022-11-08 11:47:56
免责声明:我是borb的作者
您正在体验LayoutElement的LayoutElement和所述元素的text_alignment之间的区别。
在包含文本的LayoutElement上执行布局时,逻辑大致如下:
LayoutElement的宽度。这个步骤考虑到可能的溢出,将文本移动到下一行,等等,既然我们已经确定了text_alignment的宽度(和高度),那么就考虑到
您的文本大约适合一半的Page,所以您的Paragraph的内容框是“大约一半的页面”。如果然后应用text_alignment,它实际上不会做很多事情。
我建议您简单地将horizontal_alignment设置为Alignment.RIGHT。这将产生以下PDF:

我还想知道为什么要使用Table来执行布局。这似乎是糟糕的文档设计。
https://stackoverflow.com/questions/74305426
复制相似问题