blackantt 发表于 2024-4-14 17:16:23

这段代码打印出的是啥单位? 能否以厘米为单位输出?

from reportlab.pdfgen import canvas
from reportlab.lib.pagesizes import letter, landscape
c = canvas.Canvas("landscape1.pdf", pagesize=landscape(letter))
page_width, page_height = c._pagesize
print(page_width, page_height)

FishC 发表于 2024-4-14 17:16:38

这段代码打印出的是页面的宽度和高度,以点(1/72英寸)为单位。如果你想以厘米为单位输出,可以将点转换为厘米。

下面是一个将点转换为厘米的示例代码:

python
from reportlab.pdfgen import canvas
from reportlab.lib.pagesizes import letter, landscape
from reportlab.lib.units import inch, cm

c = canvas.Canvas("landscape1.pdf", pagesize=landscape(letter))
page_width, page_height = c._pagesize

# 将点转换为厘米
width_in_cm = page_width / inch * 2.54
height_in_cm = page_height / inch * 2.54

print(f"页面宽度:{width_in_cm:.2f} 厘米")
print(f"页面高度:{height_in_cm:.2f} 厘米")

这段代码中使用了 `inch` 和 `cm` 单位转换函数进行转换。 `inch` 表示英寸, `2.54` 是厘米到英寸的转换因子。通过将点除以英寸再乘以转换因子,可以得到以厘米为单位的页面宽度和高度。在 `print` 语句中使用了格式化字符串来保留两位小数。

以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。

blackantt 发表于 2024-4-14 17:21:35

那怎么自定义 pagesize 呢?

FishC 发表于 2024-4-14 17:21:51

blackantt 发表于 2024-04-14 17:21
那怎么自定义 pagesize 呢?

要自定义页面尺寸,你可以使用 `canvas.Canvas` 方法的 `pagesize` 参数,并指定所需的页面宽度和高度。下面是一个示例代码,展示如何自定义页面尺寸为10厘米 x 15厘米:pythonfrom reportlab.pdfgen import canvasfrom reportlab.lib.pagesizes import landscapefrom reportlab.lib.units import cm# 自定义页面尺寸page_width = 10 * cm # 10厘米page_height = 15 * cm # 15厘米c = canvas.Canvas("custom_size.pdf", pagesize=(page_width, page_height))# 在这里添加你希望绘制的内容c.showPage()c.save()在这段代码中,我们导入了 `cm` 单位,并将页面宽度和高度分别设置为 10 厘米和 15 厘米。然后,我们使用 `canvas.Canvas` 创建一个自定义尺寸的 PDF 文件,并将页面尺寸参数设置为 `(page_width, page_height)`。你可以根据需要修改页面尺寸,并在代码中添加你希望绘制的内容。注意,在保存 PDF 文件之前,需要调用 `c.showPage()` 方法来完成当前页面的绘制。最后,调用 `c.save()` 方法保存并关闭 PDF 文件。

以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。

blackantt 发表于 2024-4-14 17:22:58

格式乱了

FishC 发表于 2024-4-14 17:23:08

blackantt 发表于 2024-04-14 17:22
格式乱了

非常抱歉,代码格式乱了。这是修改后的代码,以便正确显示:pythonfrom reportlab.pdfgen import canvas
from reportlab.lib.pagesizes import landscape
from reportlab.lib.units import cm

# 自定义页面尺寸
page_width = 10 * cm # 10厘米
page_height = 15 * cm # 15厘米

c = canvas.Canvas("custom_size.pdf", pagesize=(page_width, page_height))

# 在这里添加你希望绘制的内容

c.showPage()
c.save()

以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。

blackantt 发表于 2024-4-14 17:24:04

c.showPage()这个语句是干啥的?

FishC 发表于 2024-4-14 17:24:22

blackantt 发表于 2024-04-14 17:24
c.showPage()这个语句是干啥的?

`c.showPage()` 是ReportLab库中的一个方法,用于在PDF文档中创建新的页面。在调用该方法之前,你可以将需要绘制或添加到当前页面的内容放在一起。然后,调用 `c.showPage()` 表示当前页面已完成,可以开始绘制下一页的内容。

在使用ReportLab创建PDF文档时,通常会调用多次 `c.showPage()` 来创建多个页面。每当调用 `c.showPage()` 方法时,就会生成一个新的空白页面,并开始在新页面上绘制或添加内容。

需要注意的是,如果在调用 `c.showPage()` 之后继续绘制内容而没有调用 `c.showPage()` 进入下一页,那么这些额外的内容将不会被显示在任何页面上。因此,在完成当前页面的绘制后,记得调用 `c.showPage()` 来确保内容出现在正确的页面上。最后,使用 `c.save()` 方法保存并关闭PDF文档。

以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。
页: [1]
查看完整版本: 这段代码打印出的是啥单位? 能否以厘米为单位输出?