斩天堑 2015-06-12 00:47 采纳率: 0%
浏览 1898

qt 生成pdf ,自动分页

各位大神,在qt中,我想实现将txt文档数据导入到pdf,用drawtext函数实现。
但是,当txt里面的数据较多的时候,pdf在一页中不能全都显示,这时我应该怎么
添加新页,显示剩余的内容呢!
printer_text.newPage();//生成新的一页

  • 写回答

1条回答 默认 最新

  • ChatGPTᴼᴾᴱᴺᴬᴵ 2023-05-27 15:36
    关注

    该回答引用ChatGPT-3.5,仅供参考,不保证完全正确

    在Qt中生成PDF并自动分页的一种常见方法是使用QPrinter类和QPainter类。您可以按照以下步骤进行操作:


    1. 创建一个QPrinter对象,并将其设置为生成PDF文件:

      QPrinter printer(QPrinter::PrinterResolution);
      printer.setOutputFormat(QPrinter::PdfFormat);
      printer.setOutputFileName("output.pdf");
      
    2. 打开打印设备并创建一个QPainter对象以进行绘制:

      QPainter painter;
      if (painter.begin(&printer)) {
       // 在此进行绘制操作
      }
      
    3. 通过调用painter.drawText()函数将文本绘制到PDF中:

      QString text = "Your text here";
      painter.drawText(x, y, width, height, Qt::AlignLeft, text);
      
    4. 在绘制文本之前,检查当前页上绘制的内容是否超出了页面边界。如果超出,则调用printer.newPage()生成新的一页:

      QRectF textRect(x, y, width, height);
      if (painter.drawText(textRect, Qt::TextWordWrap, text) == -1) {
       printer.newPage();
       painter.drawText(textRect, Qt::TextWordWrap, text);
      }
      

    在上述代码中,xywidthheight表示要绘制文本的矩形区域的坐标和尺寸。


    通过在绘制文本之前检查边界并调用newPage(),您可以确保当文本内容超出当前页面时生成新的一页。


    最后,不要忘记在完成绘制操作后结束绘制和关闭打印设备:

    painter.end();
    

    这样,您就可以将包含大量文本的TXT文件转换为自动分页的PDF文件。记得根据您的需求适当调整绘制文本的位置和大小。

    评论

报告相同问题?

悬赏问题

  • ¥15 求差集那个函数有问题,有无佬可以解决
  • ¥15 【提问】基于Invest的水源涵养
  • ¥20 微信网友居然可以通过vx号找到我绑的手机号
  • ¥15 寻一个支付宝扫码远程授权登录的软件助手app
  • ¥15 解riccati方程组
  • ¥15 display:none;样式在嵌套结构中的已设置了display样式的元素上不起作用?
  • ¥15 使用rabbitMQ 消息队列作为url源进行多线程爬取时,总有几个url没有处理的问题。
  • ¥15 Ubuntu在安装序列比对软件STAR时出现报错如何解决
  • ¥50 树莓派安卓APK系统签名
  • ¥65 汇编语言除法溢出问题