【问题标题】:How to create pdf file with native php如何使用原生 php 创建 pdf 文件
【发布时间】:2022-01-17 21:49:20
【问题描述】:

有很多库可以用 php 创建 pdf 文件:fpdf, tcpdf, domPdf, ...

还有一个php扩展PDFlib,不过不是免费的。

我的问题是如何仅使用 native php 创建一个简单的 pdf 文件?

【问题讨论】:

  • 你对PDF文件的结构进行逆向工程,大量使用pack()函数。撇开玩笑不谈,你需要一个库,PHP 本身并不这样做。理论上你可以做到,但没有理由自己做。 (我不是反对者)
  • 当这些库已经帮助您做到这一点时,您为什么要这样做?如果您的目的是创建一个更好的库,或者只是为了学术练习,那么期望花费相当长的时间研究 PDF 规范并研究如何构建将某些给定输入转换为 PDF 的相应正确部分的命令文档。 PDF 是一种复杂且令人不快的格式,所以我希望您有足够的时间...
  • 大多数人不使用原生 PHP 创建图像,他们使用 GD 库或 ImageMagick 库。 PDF 不像 HTML 那样嵌套了几个容器,而且看起来不错。您需要了解结构并将数据打包成二进制序列。
  • 创建任何语言的 PDF 文件都很难,因为 PDF 很难。与 PHP 无关。有许多竞争库和其他工具的原因之一是因为它们都不是完美的,或者具有所有功能。
  • 60Mb of size...在现代服务器中是微不足道的。不值得担心,尤其是与在任何地方重新实现类似的东西所付出的巨大努力相比。如果还是 1995 年,我可能会担心一个组件会占用这么多存储空间,但现在我什至不会再看一眼。

标签: php pdf


【解决方案1】:

我提供了如何使用https://stackoverflow.com/a/68442444/10802527 中讨论的基本文本结构从头开始构建 PDF 的链接,但是就像在讨论另一个有限的 Arduino 解决方案https://stackoverflow.com/a/68876321/10802527 时一样,该主题通常会导致如何处理图像。

我将建议跨平台工作的所有第三方库方法中最简单的方法是Artifex Mutool,因此要通过脚本构建一个简单的页面,我们只需要使用这样的文本构建块。

%%MediaBox 0 0 595 842
%%Font Helv Helvetica Latin
%%Image Flowers1 C:/Users/name/Documents/WelcomeScan.jpg

% Draw an image. x width, H line elevation (y skew), x skew, y height, left offset, bottom offset, units are pt.'s cm is not centimetres
q 512 0.0 0.0 384 41.5 400 cm /Flowers1 Do Q

% Draw a rectangle. move line fill
q 1 0.5 1 rg 41.5 370 m 553.5 370 l 553.5 270 l 41.5 270 l f Q

% Show some text.
q 0 0 1 rg
BT /Helv 24 Tf 210 330 Td (Hello, Flowers!) Tj ET
BT /Helv 24 Tf 100 290 Td (Microsoft Windows Welcome Scan) Tj ET
Q

这是要生成的代码

mutool create -o "output.pdf" -O ascii "Page1.txt" ["page2.txt" ...]

【讨论】:

    猜你喜欢
    • 2011-07-18
    • 2010-11-15
    • 2011-06-07
    • 1970-01-01
    • 1970-01-01
    • 2011-10-15
    • 1970-01-01
    • 2017-08-15
    相关资源
    最近更新 更多