如何使 QTextDocument 适合打印机的整个页面宽度

2023-12-26

在之前的 stackoverflow 之后讨论 https://stackoverflow.com/a/47879329/3336423,我正在尝试使用以下命令生成包含文本和图像的 pdfQt and QTextDocument.

这是我作为 MCVE 的代码:

#include <QApplication>
#include <QIcon>
#include <QDesktopServices>
#include <QWidget>
#include <QPrinter>
#include <QPainter>
#include <QPagedPaintDevice>
#include <QUrl>
#include <QFile>
#include <QTextDocument>

#include <sstream>
#include <memory>
#include <assert.h>

std::shared_ptr<QPrinter> getPrinter()
{
    std::shared_ptr<QPrinter> printer( new QPrinter( QPrinter::ScreenResolution ) );
    printer->setOutputFormat(QPrinter::PdfFormat);
    printer->setOrientation(QPrinter::Portrait);
    printer->setPaperSize(QPrinter::A4);
    printer->setPageMargins(10.0,10.0,10.0,10.0,QPrinter::Millimeter);
    printer->setOutputFormat(QPrinter::PdfFormat);
    printer->setColorMode(QPrinter::Color);
    printer->setFullPage( true );
    return printer;
}

bool generateReport( const std::string& fileName )
{
    auto printer = getPrinter();
    QSize pageSize = printer->pageRect().size();

    QTextDocument qtdoc;  // start with a QTextDocument
    qtdoc.setPageSize(pageSize);
    qtdoc.setDocumentMargin( 10 );

    std::stringstream str;
    str << "<html><head/><body>";
    str << "<table style=\"width: 100%\" border=\"1\"><tbody><tr><td>Foo</td><td>Bar</td></tr></tbody></table>";
    str << "</body></html>";

    qtdoc.setHtml(str.str().c_str());

    printer->setOutputFileName(fileName.c_str());
    qtdoc.print(printer.get());

    QDesktopServices::openUrl(QUrl::fromLocalFile(fileName.c_str()));

    return true;
}

int main( int argc, char* argv[] )
{
    QApplication app( argc, argv );

    generateReport( "report.pdf" );

    return 0;
}

它的工作效果并没有那么糟糕,但是 html 内容不适合页面:标有“width=100%”的表格实际上并没有占据 pdf 的整个宽度:

我们如何强制 html 内容适合页面(意味着宽度=100% 的表格应该占据整个页面宽度!)


问题是Qt不识别<table style=\"width: 100%\" border=1>

将其更改为<table width=100% border=1>修复了问题,表格不占据整个页面宽度!

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何使 QTextDocument 适合打印机的整个页面宽度 的相关文章

  • Qt moc 在头文件中实现?

    是否可以告诉 Qt MOC 我想声明该类并在单个文件中实现它 而不是将它们拆分为 h 和 cpp 文件 如果要在 cpp 文件中声明并实现 QObject 子类 则必须手动包含 moc 文件 例如 文件main cpp struct Sub
  • 将特定字形与网络字体一起使用

    使用网络字体 我想使用字体功能设置 CSS 中的选项以及跨度类HTML 中 以便使用字体集中的特定替代字形 我需要以正确的语法使用哪些值 GID Unicode 才能定位特定的目标glyph内glyph备择方案 这些功能使用 OpenTyp
  • CSS 精灵按钮

    这些精灵按钮让我抓狂 我几乎可以让他们工作 但不完全是 我正在玩这个非常简单的精灵图像 我有一个 jsfiddle 项目 gt gt 这里 如果你想看的话 但如果你只想看一下 代码就在下面 http jsfiddle net jp2code
  • Service Worker 与 Shared Worker

    Service Worker 和 Shared Worker 有什么区别 我什么时候应该使用 Service Worker 而不是 Shared Worker 反之亦然 Service Worker 具有共享 Worker 之外的附加功能
  • 使用“表单控件”删除输入字段的轮廓

    我有一个输入字段 如下所示 在类名中我将其作为form control
  • 如何将目录及其子目录中的所有 PDF 文件复制到一个位置?

    如何全部复制PDF文件从目录及其子目录到单个目录 实际上还有更多的文件 并且深度有些任意 假设四个目录的最大深度是公平的 我想这些文件需要重命名 如果a pdf例如 位于多个目录中 因为我会adding https ebooks stack
  • 如何将 zlib 添加到现有的 qt 安装中

    如何将 zlib 添加到 Qt 的现有安装中 我对此很陌生 所以请给我详细的描述 提前感谢您的帮助 zlib 包含在 Qt 核心库中 如果你想在 Qt 程序中使用 zlib 函数 你只需要包含 src 3rdparty zlib 中的 zl
  • 将 HTML 'label' 标签与单选按钮一起使用

    是否label标签与单选按钮一起使用吗 如果是这样 你如何使用它 我有一个显示如下的表单 First Name text field Hair Color color drop down Description text area Salu
  • TDD/测试 CSS 和 HTML? [关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 有没有办法测试 CSS 和 HTML 例如 有时某些通知会受到某些 CSS 更改的影响 我不想每次进行更改时都手动测试所有通知 Tha
  • CSS3变换:悬停时翻译,带有过渡[重复]

    这个问题在这里已经有答案了 这应该很简单 我的 HTML 中有一堆锚点 如下所示 a href Link 1 a a href Link 2 a a href Link 3 a a href Link 4 a a href Link 5 a
  • 您可以将现有的 div 复制到模式对话框吗

    我有一个带有多个面板的仪表板来显示不同的信息 我希望能够添加一个按钮来以模式显示面板 我正在使用引导程序 我所能找到的只是已经编写的模态 我想复制作为面板的 div 标签的内容 然后将其显示在模型中 但我不确定如何进行 该面板的 html
  • 如何覆盖 bootstrap 表 td 样式?

    我正在使用 Bootstrap 3 3我有一个 HTML 代码如下 div table class table table striped tr td 03 td td 04 td td 05 td td 06 td td 07 td td
  • 在按钮之间添加空间?

    嗨 我这里有一个代码 除了一件事之外 一切都很完美 代码中每个按钮之间没有空格 我尝试过 margin 但不幸的是它是一个无序列表 所以我有点困惑 我将添加或替换什么以在两个按钮之间留出空间 帮助
  • R Shinydashboard 自定义 CSS 到 valueBox

    我一直在尝试将 valueBox 的颜色更改为自定义颜色 超出 validColors 中可用的颜色 但一直无法这样做 我知道有一种方法可以使用标签来包含自定义 CSS 但是我无法将它们放在正确的位置 ui lt dashboardPage
  • 如何在php中使用一张图像绘制形状

    我需要使用图像的一部分来创建帧图像 例如 用户将从后端上传图像片段 现在我需要根据前端用户的要求在前端创建一个框架 用户将选择框架的高度和宽度 然后他将选择该图像片段 如下所示 我没有办法做到这一点 我尝试通过 css 和 html can
  • 在 RMarkdown 输出到 PDF 时缩进而不添加项目符号点或编号

    之前有人问过如何在没有项目符号的情况下缩进文本 RMarkdown 中的点 但这是针对 HTML 输出的 在 RMarkdown 中缩进而不添加项目符号点或数字 https stackoverflow com questions 47087
  • 用于渲染 html 子集的 Django templatetag

    我有一些 html 在本例中是通过 TinyMCE 创建的 我想将其添加到页面中 但是 出于安全原因 我不想只打印用户输入的所有内容 有谁知道模板标签 最好是过滤器 只允许呈现 html 的安全子集 我意识到 Markdown 和其他人就是
  • 在 Flutter 中显示 iOS 的 PDF 内联文件

    我正在 flutter 中专门为 iOS 开发一个应用程序 现阶段 我需要向其中添加 PDF 文件 问题是 flutter 没有原生的方式来显示 PDF 文件 据我研究 由此tread https github com flutter fl
  • CSS - div 与父 div 底部对齐(内联块)

    我知道这个 html 很草率 有一些不必要的额外 div 但无论如何 我无法理解为什么 ID 为 info box right 的 div 与父 div 的底部对齐 您可以看到 文本 与下面的 jsfiddle 示例的底部 有什么想法可以让
  • 如何:带有 onclick 的 div 位于另一个带有 onclick 的 div 中

    只是一个简单的问题 我遇到了 div 与 onclick javascript 之间的问题 当我点击内部 div 时 它应该只触发它的 onclick javascript 但外部 div 的 javascript 也会被触发 用户如何点击

随机推荐

  • JSON 到字符串变量转储

    是否有一个快速函数来转换通过接收的 JSON 对象jQuery getJSON到字符串变量转储 用于跟踪 调试目的 Yes JSON stringify 可以被找寻到here https github com douglascrockfor
  • 错误:尝试以只读用户身份执行 SELECT 时,Postgres 上的关系表名的权限被拒绝

    GRANT SELECT ON ALL TABLES IN SCHEMA public TO readonly 只读用户可以连接 查看表格 但是当它尝试进行简单的选择时 它会得到 ERROR permission denied for re
  • Python 在 OS X 上的文本文件中捕获击键值

    我正在尝试监视 Macbook 上的击键 以构建统计分析器 但是我如何将字符与 事件 隔离开来 这更像是 NSEvent 类型 KeyDown loc 850 248 时间 66551 8标志 0x100胜利 0x0 winNum 0 ct
  • ASP.NET Core 中的 URL 编码和解码

    HttpContext Current Server UrlEncode 这仅适用于 NET Framework 如何在 ASP NET Core 中对 URI 参数进行编码或解码 对于 ASP NET Core 2 0 只需添加Syste
  • WPF Dispatcher {“调用线程无法访问此对象,因为另一个线程拥有它。”}

    首先我需要说我对 WPF 和 C 很菜鸟 应用程序 创建 Mandelbrot 图像 GUI 我的调度程序在这种情况下工作得很好 private void progressBarRefresh while con Progress lt 9
  • jquery/javascript 将纯文本消息转换为文本输入字段

    我有以下请求 创建一个纯文本字段 单击编辑触发器时该字段会转换为文本输入元素 离开输入元素时 文本将存储在数据库中 并且该字段将转换回包含新内容的纯文本字段 当在输入中按下 ESC 时 将恢复最近的值 为此 我使用以下代码 div span
  • 从 Laravel 5 中的中间件获取当前路由操作名称

    我有一个这样的中间件
  • 使用 PHP 从 HTTP 重定向到 HTTPS

    我正在开发一个购物车网站 我想在用户输入帐单详细信息时将其重定向到 HTTPS 页面 并保持下一页的 HTTPS 连接 直到他注销 为了做到这一点 我需要在服务器上安装什么 我正在使用 Apache 以及如何从 PHP 完成此重定向 尝试这
  • Angular2 中的错误处理程序

    我有一个关于新类 ErrorHandler 包含在 RC 6 中 的问题 我从官方文档中做了示例 https angular io docs ts latest api core index ErrorHandler class html
  • 如何配置 Vue 路由器来响应查询字符串?

    我的路由器配置如下 它有效并且做了它应该做的事情 import Demo1 from vuex modules demo demo1 vue import Demo2 from vuex modules demo demo2 vue exp
  • ECS无效参考格式错误

    我尝试通过运行任务 由任务定义定义 来使用 Amazon ECS 部署和运行简单的 Dockerized Ruby 后端 但它无法运行我的命令并返回以下错误 CannotPullContainerError API 错误 400 参考格式无
  • void 大小未知时的指针算术 [关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi
  • Ansible,使用 if then else 语句 set_fact

    我试图在运行时根据另一个变量在 Ansible 中使用 set fact 设置一个变量 无论实际值是多少 都使用第一个值 这是我的代码示例 name Global vars get date info set fact jm env loo
  • 表达式树在哪些情况下很有用?

    我完全理解表达式树的概念 但我很难找到它们有用的情况 是否有可以应用表达式树的特定实例 或者它仅作为代码传输机制有用 我觉得我在这里错过了一些东西 谢谢 一些单元测试模拟框架利用表达式树来建立强类型的期望 验证 IE myMock Veri
  • LinkedIn 视频分析 API - timeRange 无效

    使用 linkedIn 视频分析 API 我想每天收集有关我的视频帖子的分析 我的请求 https api linkedin com v2 videoAnalytics q entity entity urn li ugcPost 6662
  • 子/子子域等中间是否可以有通配符?

    如果我想要一个网站域名 其内容如下at last com 其中中间的单词 域可以更改或根本不存在 例如at long last com at final last com或者没有例如at last com 这是否可能 或者是否需要为每个条目
  • ASP.NET 网站 DLL:调试版本与发布版本

    将 ASP NET Web 应用程序 dll 文件上传到网站的 bin 目录时 与重新编译发布版本相比 使用调试版本是否有任何缺点 例如 在网站本地工作时 构建配置设置为 调试 当一切看起来不错时 我会继续上传网站 网络应用程序的最新 dl
  • Tridion UGC 评论显示作者为空

    我已经为用户生成的内容配置了 Tridion 并使用默认 演示模板创建了一个网页 该模板使用文本输入字段来提供评论作者的姓名 评论已被接受 但在显示时 它们将用户名显示为 null 我认为问题在于存储名称 而不是检索它 如果我在内容管理器
  • 使用强名称签署我的程序集会使其无法工作

    我的一位同事在 VB net 中创建了一个程序集 以便通过 COM 互操作与 JScript 一起使用 该程序集过去运行良好 但我们对其进行了签名 现在它似乎只能在 Windows 7 计算机上运行 我测试了 2 台 Windows 7 机
  • 如何使 QTextDocument 适合打印机的整个页面宽度

    在之前的 stackoverflow 之后讨论 https stackoverflow com a 47879329 3336423 我正在尝试使用以下命令生成包含文本和图像的 pdfQt and QTextDocument 这是我作为 M