斩天堑 2015-08-17 06:46 采纳率: 0%
浏览 907

qt 打印pdf。如何判断是否需要新增页呢

求大神指教啊。在用Qt生成pdf时,怎么判断是否需要新增一页呢。
比如我的txt文档有两页,怎么在生成pdf时判断也是生成两页呢

  • 写回答

1条回答 默认 最新

  • 泡沫o0 2023年度博客之星上海赛道TOP 1 2023-05-08 13:08
    关注

    在Qt中生成PDF时,您可以使用QPrinterQTextDocument类。QTextDocument类可以帮助您将纯文本或富文本加载到文档中,并根据QPrinter的页面大小自动分页。以下是一个简单的示例,演示如何将文本文件的内容转换为PDF,并根据需要自动添加新页面:

    #include <QPrinter>
    #include <QTextDocument>
    #include <QTextStream>
    #include <QFile>
    
    bool createPdfFromTextFile(const QString &inputTextFilePath, const QString &outputPdfFilePath) {
        QFile inputFile(inputTextFilePath);
    
        if (!inputFile.open(QIODevice::ReadOnly | QIODevice::Text)) {
            return false;
        }
    
        QTextStream in(&inputFile);
        QString textContent = in.readAll();
        inputFile.close();
    
        QPrinter printer(QPrinter::PrinterResolution);
        printer.setOutputFormat(QPrinter::PdfFormat);
        printer.setPaperSize(QPrinter::A4);
        printer.setOutputFileName(outputPdfFilePath);
    
        QTextDocument textDocument;
        textDocument.setPlainText(textContent);
        textDocument.setPageSize(printer.pageRect().size()); // Set the document size to match the printer
        textDocument.print(&printer);
    
        return true;
    }
    

    这个函数接受一个输入文本文件的路径和一个输出PDF文件的路径。它会自动处理分页,以便在生成的PDF中正确地显示文本内容。要使用此函数,请传递相应的文件路径:

    QString inputTextFilePath = "/path/to/your/text/file.txt";
    QString outputPdfFilePath = "/path/to/your/output/file.pdf";
    
    if (createPdfFromTextFile(inputTextFilePath, outputPdfFilePath)) {
        // PDF created successfully
    } else {
        // Error occurred while creating PDF
    }
    

    此示例使用默认的A4纸张大小。您可以根据需要调整纸张大小和其他打印参数。

    评论

报告相同问题?

悬赏问题

  • ¥15 三菱伺服电机按启动按钮有使能但不动作
  • ¥20 为什么我写出来的绘图程序是这样的,有没有lao哥改一下
  • ¥15 js,页面2返回页面1时定位进入的设备
  • ¥200 关于#c++#的问题,请各位专家解答!网站的邀请码
  • ¥50 导入文件到网吧的电脑并且在重启之后不会被恢复
  • ¥15 (希望可以解决问题)ma和mb文件无法正常打开,打开后是空白,但是有正常内存占用,但可以在打开Maya应用程序后打开场景ma和mb格式。
  • ¥20 ML307A在使用AT命令连接EMQX平台的MQTT时被拒绝
  • ¥20 腾讯企业邮箱邮件可以恢复么
  • ¥15 有人知道怎么将自己的迁移策略布到edgecloudsim上使用吗?
  • ¥15 错误 LNK2001 无法解析的外部符号