qt打印html边距设置无效,如何设置QTextDocument边距和其他属性(setHTML,print to pdf)?...

在Python3中使用Qt库生成PDF文档时,遇到QTextDocument设置HTML边距无效的问题。代码示例展示了如何创建包含图像和数据的PDF,并试图设置页面边距和表格边框。同时,开发者还询问了如何控制文档中图像的大小和字体的视觉一致性,以及如何根据dpi设置调整这些元素。
摘要由CSDN通过智能技术生成

我有以下证书类用于生成一些图像和数据的pdf文档.设置图像源后,我调用generate()函数并获取test.pdf输出文件.该文档是使用setHtml(html)方法基于QTextDocument类创建的.

问题是我在文档周围有很大的空白区域,而我希望带有徽标图像的标题“REPORT”位于页面的最顶层.我还想在表格中添加下边框,但据我所知,Qt(Supported HTML Subset)不支持.

Python3代码:

class certificate:

def __init__(self):

self.logo = None

pdffile = 'test.pdf'

self.histogram = None

self.printer = QPrinter()

self.printer.setPageSize(QPrinter.Letter)

self.printer.setOutputFormat(QPrinter.PdfFormat)

self.printer.setOutputFileName(pdffile)

def generate(self):

document = QTextDocument()

html = ""

html += ('

Report'

'

'

%7B%7D'

'

REPORT

'

'

'

'

Qt中,您可以使用QTextDocument和QPrinter将HTML页面转换为PDF格式,然后在PDF页面中为实体元素设置边框。以下是一个示例: ```cpp QTextDocument doc; doc.setHtml("<p>这是一个实体元素:<entity>实体元素</entity></p>"); QPrinter printer(QPrinter::HighResolution); printer.setOutputFormat(QPrinter::PdfFormat); printer.setOutputFileName("output.pdf"); doc.print(&printer); ``` 在这个示例中,我们首先创建一个QTextDocument对象,然后使用setHtml()方法将HTML代码加载到文档中。接下来,我们创建一个QPrinter对象,并将其设置PDF格式,并指定输出文件名。最后,我们使用QTextDocumentprint()方法将文档输出到打印机,从而生成PDF文件。 要为PDF页面中的实体元素设置边框,您可以在HTML代码中使用CSS样式表,或者使用QTextOption中的setHtmlOptions()方法为QTextDocument设置HTML选项。以下是一个示例: ```cpp QTextDocument doc; doc.setHtml("<p>这是一个实体元素:<entity>实体元素</entity></p>"); QTextOption option; option.setHtmlOptions(QTextOption::IncludeStyleElement); doc.setDefaultTextOption(option); QPrinter printer(QPrinter::HighResolution); printer.setOutputFormat(QPrinter::PdfFormat); printer.setOutputFileName("output.pdf"); doc.print(&printer); ``` 在这个示例中,我们首先为QTextOption对象设置了IncludeStyleElement选项,以便在PDF页面中包含CSS样式表。然后,我们将QTextOption对象设置QTextDocument的默认文本选项。最后,我们将文档输出到打印机,从而生成PDF文件。 请注意,这个示例只是一个简单的演示,您可以根据自己的需求更改HTML代码和CSS样式表。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值