FPDF - 在放置之前确定 MultiCell 的高度?

2024-01-24

基本问题:在将 MultiCell 放入文档之前是否可以确定其高度?

原因:我的任务是创建 PDF 版本的表单。这种形式允许文本输入,并且结果长度可变。一个人可以不输入任何内容,另一个人可以写几段。 “当权者”不希望这段文字在页面之间中断。

目前,在放置每个块后,我检查页面上的位置,如果接近末尾,我会创建一个新页面。

if($this->getY() >= 250) {
    $this->AddPage('P');
}

在大多数情况下,这是有效的。但也有一些偷偷摸摸的,比如 249,然后有大量的文本。在放置块之前确定它的高度以查看它是否真正适合页面似乎更有意义。

当然一定有办法做到这一点,但谷歌搜索并没有被证明很有帮助。

编辑澄清:提交表单后将生成 PDF。不是活动的、可编辑的 PDF 表单...


因这个问题获得了风滚草徽章。 :( 不管怎样,万一有人遇到同样的问题,我想我会用我所做的来回答。我怀疑这是最有效的方法,但它完成了工作。

首先,我创建两个 FPDF 对象;一个永远不会输出的临时文件和最终用户将看到的最终完整的 pdf 文件。

我得到了两个对象当前的 Y 坐标。然后,我使用 Cell() 或 MultiCell()(对于这种形式,通常是两者的组合)将数据块放入临时对象中,然后检查新的 Y 坐标。然后我可以进行数学计算来确定块的高度。 -注意,如果块跨页中断,数学可能会变得有点奇怪。请记住考虑顶部和底部边距。

现在我知道了块的高度,我可以获取目标对象的当前 Y 坐标,从页面的总高度(减去底部边距)中减去它,以获得可用空间。如果该块适合,则放置它,如果不适合,则添加一个页面并将其放置在顶部。

对每个块重复此操作。

我看到的唯一警告是,是否有任何单个块比整个页面长,但使用这种形式,这种情况永远不会发生。 (著名遗言...)

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

FPDF - 在放置之前确定 MultiCell 的高度? 的相关文章

  • document.querySelectorAll("input[type=checkbox") 的结果数组的顺序是否有保证?

    我在页面正文中有以下 HTML 这些是此 HTML 页面上类型复选框的唯一输入 fieldset legend North Face legend N A1 fieldset
  • 如何计算数组中相同的值并将其存储到变量中?

    items explode product values is 4 2 4 2 2 4 unique items array unique items gives me 4 2 接下来应该给我 4 3 2 3 并将值的数量存储到变量中的代码
  • 如何通过 PHP 轻松转换 UTC 日期?

    我将日期存储在 MySQL 数据库中的 UTC 日期时间字段中 我正在使用 PHP 并且调用了 date timezone set UTC 以便对 date 不带时间戳 的所有调用都返回 UTC 格式的日期 然后我有了它 以便给定的网站可以
  • 通过删除空 GET 变量并简化变量名称来缩短 URL

    我正在开发一个网站 在提交后组成一个 URLGET form 表单值作为一组变量传递 其中必须至少定义一个变量才能在数据库上进行搜索 我想将网址缩短为删除空表单元素并使其更加用户友好简化变量名称 目前 URL 如下所示 只是带有更多变量 我
  • PHP - 存储和计算无线电输入的总分

    我设计了一个基于网络的小型系统 其中有一个学校评估表 可以向可以访问该系统的特定用户询问一些问题 并且输入将是单选类型 1或2或3或4 该代码正在运行 可以将输入插入数据库 但我不知道计算总分并将其存储在数据库中的正确查询 这是当前正在运行
  • 枚举 PHP DOMDocument 对象的已注册命名空间

    对于我的一个项目 我正在使用DOMDocument类来加载和操作 XML 文档 我需要检索文档中使用的每个名称空间 但是 我找不到如何做到这一点 这DOMDocument类具有获取 URI 的命名空间前缀或命名空间前缀的 URI 的方法 但
  • 尝试使用 swift mailer、gmail smtp、php 发送邮件

    这是我的代码
  • 构建错误:致命错误:pcre.h:没有这样的文件或目录

    我刚刚安装完 Ubuntu 13 10 我想尝试 Phalcon 当我构建源代码 phalcon so 时 出现以下错误 from home fabrice Downloads cphalcon build 32bits phalcon c
  • 如何将div内容添加到jspdf中的新页面?

    如何将div内容添加到jspdf中的新页面 我尝试使用 br 它创建了一个新页面 但我看不到内容 div div style margin 3px 430px First Page div div Place content to Seco
  • Symfony2 功能测试会话持久性

    我正在尝试在 Symfony 中进行一些功能测试 但目前我的会话遇到了问题 我执行了一段代码 它似乎有效 但容器的会话中没有存储任何内容 我有一个表格 您可以在其中设置数据 当您提交它时 它会检查值并将其存储在会话中 然后它重定向到另一个页
  • JSON 为 foreach() 提供的参数无效

    我在从 JSON 检索数据时遇到一些问题 它总是说为 foreach 提供的参数无效 这是 url php 中的 JSON nama IT SERVICE SOLUTION nilai 0 periode 11 tahun 2014 nam
  • 在 Codeigniter 中编写模型代码的最佳方法是什么

    我对于在 codeigniter 中使用哪种技术来编码模型感到非常困惑 我进行了很多搜索 发现了各种编码人员使用的各种方法 请指导我使用 codeigniter 编写模型类的最佳方法 例子很少 有些方法签名中需要很长的参数 function
  • 为什么index.html优先于index.php?

    我在服务器上有一个网站 主页是 example com index php 好的 我将一个名为 index html 的文件上传到服务器 根目录 当我在浏览器的 URL 栏中输入站点的域时 我感到惊讶 因为 index html 页面已加载
  • 比较表中的行以了解字段之间的差异

    我有一个包含 20 多列的表 客户端 其中大部分是历史数据 就像是 id clientID field1 field2 etc updateDate 如果我的数据如下所示 10 12 A A 2009 03 01 11 12 A B 200
  • TCPDF UTF-8 符号未显示

    我使用最新的 TCPDF 版本 5 9 但在编码方面遇到一些奇怪的问题 我需要立陶宛语语言符号 例如 但只能得到其中的一小部分 其他的还是这样 所以我该怎么做 我使用默认的 times 字体 它带有 TCPDF 下载 任何帮助 将不胜感激
  • PHP 中的 MongoDB - 如何将项目插入集合中的数组中?

    这必须很容易 但我似乎无法弄清楚 假设我有一个集合users这是集合中的第一项 id ObjectId 4d8653c027d02a6437bc89ca name Oscar Godson email email protected cdn
  • 运行没有扩展名的 PHP 页面

    我想在 apache Web 服务器上运行我的 PHP 网页 而不需要 php扩大 所以我添加了以下代码 RewriteEngine on RewriteBase Rewritecond REQUEST URI NC RewriteRule
  • 如何在 Python 中包含 PHP 脚本?

    我有一个 PHP 脚本 news generator php 当我包含它时 它会抓取一堆新闻项并打印它们 现在 我在我的网站 CGI 中使用 Python 当我使用 PHP 时 我在 新闻 页面上使用了这样的内容 为了简单起见 我删掉了这个
  • 创建 PDF/A-3:嵌入文件应包含有效的 Params 密钥

    我正在尝试使用 itextpdf 5 4 5 和 itext pdfa 5 4 5 创建 PDF A 3 当我设置 PdfFileSpecification 时 出现以下异常 com itextpdf text pdf PdfAConfor
  • WooCommerce 使用 AJAX 设置购物车数量?

    我已经为此绞尽脑汁好几天了 需要一些指导 我正在为 WooCommerce 网站完全从头开始制作自定义主题 现在我正在尝试让购物车功能正常工作 我一直试图使用按钮 来更新购物车中产品的数量 对我来说问题似乎是WC 我在functions p

随机推荐

  • 流畅地调用await而不使用括号

    有没有办法重构这条线 var result await Foo Bar 这样它就不会使用括号 也不会将等待结果分配给临时变量 我正在尝试构建一个支持长时间操作的流畅框架 当您需要将 wait 括在括号中时 现实世界的代码会变得非常丑陋 va
  • Python 3 - 从整数转换为“字节”然后连接它们(用于串行传输)

    经过多次毫无结果的搜索 我在理解 Python 3 2 中处理 字节 和十六进制内容的方式时遇到了一个非常具体的问题 我知道我误解了 但似乎无法找到正确的路径 我的最终目标是使用python串行模块来传输字节序列 有些字节是静态的 不会改变
  • 使用 ffmpeg 将视频从 .264 转换为 .265 (HEVC)

    我看到关于这个主题的一些问题 但我仍然收到错误 我想要做的就是将库中的视频转换为 HEVC 以便它们占用更少的空间 我试过这个 ffmpeg i input mp4 c v libx265 output mp4 ffmpeg 似乎需要很长时
  • iOS4进入后台播放音频

    当谈论在后台播放音频时 文档写得相当糟糕 它给人的印象是 要继续播放当前正在播放的音频 您只需将键 值对添加到info plist文件和wallah 这很神奇 然而 这种情况并非如此 例如 如果我播放 2 分钟长的 mp3 显然音频足够长
  • NSCalendar 日差错误

    我正在尝试使用 NSCalendar currentCalendar ordinalityOfUnit NSDayCalendarUnit inUnit NSEraCalendarUnit forDate date 在两个不同的日期查看它们
  • 在 Apache JMeter 中配置响应超时

    我试图检查特定 HTTP 请求的响应时间是否超过 30 秒 如果是 则将其标记为失败并停止线程 有时我可以看到响应时间接近 80 秒 没有浏览器等待服务器响应那么长时间 我发现了以下三种在 JMeter 中设置超时值的方法 但这让我很困惑
  • 每当 gem 时,schedule.rb 中的配置文件与 Rails 一起使用?

    我的 Rails 应用程序的 config 文件夹中有一个名为 config yml 的文件 我还有一个初始化程序 config initializers load config rb 其中包含以下代码 APP CONFIG YAML lo
  • 如何在 Swift 中实现 didReceiveMemoryWarning?

    每当我创建一个新的 View Controller 子类时 Xcode 都会自动添加该方法 override func didReceiveMemoryWarning super didReceiveMemoryWarning Dispos
  • 如何像在 Firefox 的 Firebug 中一样在 Chrome 中编辑 CSS?

    我一直在 Firefox 中使用 Firebug 编辑 CSS 但最近注意到 Chrome 渲染我的页面的速度要快得多 带有滚动 交互元素等 因此想切换到它 我发现 Chrome 显示了计算出的 CSS 以及堆栈中哪些属性被否决 我可以一一
  • 如何使用空间掩模限制光栅处理范围?

    我试图将 MATLAB 中的栅格处理限制为仅包含 shapefile 边界内的区域 类似于 ArcGIS Spatial Analyst 函数使用mask http resources arcgis com en help main 10
  • 在 scikit-learn 中使用 ExtraTreesClassifier 时出错

    我正在尝试在 scikit learn 中对我的数据使用 ExtraTreesClassifier 我有两个 numpy 数组 X 和 y X 的尺寸为 10000 51 y 的尺寸为 10000 为了确保它们采用 numpy 数组格式 我
  • 根据特定文本拆分 XML 节点

    请建议如何根据特定注释文本拆分 xml 节点 我尝试使用xsl 文本禁用输出转义格式以放置所需的结束和开始标记 元素 我的代码是静态的 如何制作动态代码 该代码适用于注释文本方面的任意数量的祖先 即 如果祖先计数 n 然后从n to 1如何
  • 在 Android Studio 中为 NDK 项目构建符号花费太长时间

    我正在开发一个 Android 项目 该项目使用 NDK 并绑定相当大的 Boost C 库 每次启动Android Studio时 IDE在Building Symbols阶段都会花费相当长的时间 大约1个小时 在i7四核机器上或多或少
  • 实体框架、代码优先和全文搜索

    我意识到人们提出了很多与全文搜索和实体框架相关的问题 但我希望这个问题有所不同 我正在使用实体框架 代码优先 需要进行全文搜索 当我需要执行全文搜索时 我通常还会有其他条件 限制 例如跳过前 500 行 或过滤另一列等 我发现这是使用表值函
  • 通过 nginx 访问时,php 在 /tmp/systemd-private-nABCDE/tmp 中有自己的 /tmp

    我发现奇怪的行为php and tmp文件夹 Php 在使用时使用另一个文件夹 tmp PHP 5 6 7 nginx php fpm 我以两种方式执行相同的脚本 通过浏览器和通过 shell 但是当通过浏览器启动时 文件不是真实的 tmp
  • Swift 结构内存泄漏

    我们正在尝试尽可能使用 Swift 结构 我们还使用 RxSwift 它具有采用闭包的方法 当我们有一个结构体创建一个引用的闭包时self 这会创建一个强引用循环 https developer apple com library ios
  • 在TestNG中使用@BeforeMethod时有没有办法获取方法元数据?

    我正在使用 TestNG 并有一套测试 我想在每个需要有关该方法的信息的测试方法之前执行一个操作 举一个简单的例子 假设我想在执行之前打印方法的名称 我可以编写一个带有注释的方法 BeforeMethod 如何将参数注入该方法 看看依赖注入
  • XPath:通过纯文本查找 HTML 元素

    请注意 这个问题是一个更精致的版本上一个问题 https stackoverflow com q 18655765 1839209 我正在寻找一个 XPath 它可以让我在 HTML 文档中查找具有给定纯文本的元素 例如 假设我有以下 HT
  • Python 3+ 在函数调用中导入包?

    随着时间的推移 我已经为各种事情建立了一系列实用函数 我想将它们全部放在包中 其结构比仅包含所有功能的单个文件要多一些 其中一些函数是在假设已导入某些包的情况下编写的 例如我有一些numpy and pandas假设类似的效用函数impor
  • FPDF - 在放置之前确定 MultiCell 的高度?

    基本问题 在将 MultiCell 放入文档之前是否可以确定其高度 原因 我的任务是创建 PDF 版本的表单 这种形式允许文本输入 并且结果长度可变 一个人可以不输入任何内容 另一个人可以写几段 当权者 不希望这段文字在页面之间中断 目前