gpt4 book ai didi

php - HTML2PDF:单词在 PDF 中被截断/跑掉

转载 作者:搜寻专家 更新时间:2023-10-31 21:07:52 25 4
gpt4 key购买 nike

我文件中的一些文字在 PPDF 中被截断了。我可以看到单词在那里,但没有正确包装。

我的输出如下:

enter image description here

这是我的代码片段:

            <table>
<tr align=''>
<td colspan='5' class='heading'>Corporate URC Use Only</td>
</tr>
<tr>
<td>Consult Determination<span class='required'></span>:</td>
<td><strong>";
if(isset($updated_history) && !is_null($updated_history)){
$html .= $data['original_decision'];
}
else{
$html .= $data['final_decision'];
}

$html .="</strong></td>

</tr>
</table>
<table>
<tr>
<td>Notes:</td>
<td><strong>" . $data['notes'] . "</strong></td>
</tr>
</table>

我的 html2pdf 实现非常简单:

require_once("../include/html2pdf/html2pdf.class.php");
$html2pdf = new HTML2PDF('P','A4','en');
$html2pdf->pdf->SetDisplayMode('real');

$html2pdf->WriteHTML($html);
$html2pdf->Output($c_file, "F");

编辑:这里是展示此行为的示例 pdf 的链接。 https://www.dropbox.com/s/h91g40bo4b2cmlw/Test_T_2312321.pdf?dl=0

最佳答案

看起来……

  1. ...您的 PDF /MediaBox比A4(595分)更窄,
  2. ...或您的 PDF 绘图/书写 /Contents代码不遵守 A4 宽度并绘制/写入超出它的范围。

您应该检查您的代码是否使用(可能隐藏的)设置将页面宽度(或完整页面大小)设置为字母(即 612x792 点)。

为了检验我的假设,您可以替换 A4在你的 html2pdf 实现中 letterLetter ...


(如果您提供由您的代码创建的 [链接] PDF,调试起来会容易得多。我上面写的 [几乎] 纯粹是推测。)


更新

在查看了 OP 更新链接中提供的 PDF 源代码之后,我可以这样说:

  1. 我解压了 /Content文件流以便将 PDF 页面绘图运算符视为 ASCII,使用此命令:

    qpdf --qdf --object-streams=disable document.pdf q.pdf
  2. 现在新生成的q.pdf可以在良好的文本编辑器(如 VIm、Emacs 或 Notepad++)中轻松打开。

  3. 下面一行在页面上打印一些文本:

     BT                     \
    /F2 10.00 Tf \
    ET \
    [....] \
    q \
    0.000 0.000 0.000 rg \
    BT \
    0 Tr \
    0.00 w \
    ET \
    BT \
    50.00 359.19 Td \
    [(Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore)] TJ \
    ET \
    Q

此代码片段打印出一行很长的文本,其字体内部命名为 /F2 (它又映射到文件中其他地方的 /Helvetica-Bold),大小为 10点,从坐标 x=50, y=359.19 开始.

但是,这个长文本行不适合 /MediaBox 给定的页面宽度。 , 定义为 [0 0 595 842] (以 PostScript 点为单位,代表 A4)。

它适合 635 的宽度(甚至在右边缘留下一些小边距)。

(您还可以通过缩小文本大小使文本适合当前页面宽度,例如 /F2 9.00 Tf 。但这仍然会使绘制框的长水平线超出右侧页面边框...)

这个 PDF 的整体源代码,顺便说一句,在某些地方非常低效(例如它包含 BT /F1 10.00 Tf ET 1.000 g 超过 1000 次,但是这个代码确实...什么都没有!它只定义了字体用作内部名称 /F1,字体大小为 10 磅)。

您可以使用文本编辑器轻松编辑原始 PDF:

  1. 搜索字符串 /MediaBox .它在 PDF 中出现两次,每页一次。

  2. 替换其当前值 [0 0 595.28 841.89]通过新值 [0 0 635.00 841.89] .

  3. 保存编辑后的文件。

  4. 在您最喜欢的 PDF 查看器中打开它。

现在您会看到页面内容也适合页面宽度(现在是 635 点(== 22.4 厘米;595 点的原始值等于 21.0 厘米) .

您还会看到,不仅是一些长文本行不适合页面宽度——为方框绘制的一些水平线也是如此。

这是编辑后的 ​​PDF 文件的屏幕截图,显示了新的 /MediaBox现在能够将所有页面内容保存在其边界内:

so#29217840.png

关于php - HTML2PDF:单词在 PDF 中被截断/跑掉,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29217840/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com