yetiforce / yetiforcepdf
用于从HTML生成PDF文件的库。
0.1.42
2024-09-09 11:46 UTC
Requires
- php: >=7.4
- ext-bcmath: *
- ext-dom: *
- ext-filter: *
- ext-gd: *
- ext-libxml: *
- ext-mbstring: *
- ext-zlib: *
- composer/ca-bundle: ^1
- guzzlehttp/guzzle: ^7
- milon/barcode: ^11
- phenx/php-font-lib: ^0.5
- sabberworm/php-css-parser: ^8
- dev-developer
- 0.1.42
- 0.1.41
- 0.1.40
- 0.1.39
- 0.1.38
- 0.1.37
- 0.1.36
- 0.1.35
- 0.1.34
- 0.1.33
- 0.1.32
- 0.1.31
- 0.1.30
- 0.1.29
- 0.1.28
- 0.1.27
- 0.1.26
- 0.1.25
- 0.1.24
- 0.1.23
- 0.1.22
- 0.1.21
- 0.1.20
- 0.1.19
- 0.1.18
- 0.1.17
- 0.1.16
- 0.1.15
- 0.1.14
- 0.1.13
- 0.1.12
- 0.1.11
- 0.1.10
- 0.1.9
- 0.1.8
- 0.1.7
- 0.1.6
- 0.1.5
- 0.1.4
- 0.1.3
- 0.1.2
- 0.1.1
- 0.1.0
- dev-master
- dev-renovate/phenx-php-font-lib-1.x
This package is auto-updated.
Last update: 2024-09-09 12:03:07 UTC
README
PHP的PDF生成库
世界上从HTML生成PDF的最佳库
问题和错误
有关PDF的错误,请在此处报告:https://github.com/YetiForceCompany/YetiForceCRM/issues
基本用法(更多请参阅示例文件夹)
<?php $loader = require '../vendor/autoload.php'; $document = (new YetiForcePDF\Document())->init(); $document->loadHtml('<div style="text-align:center;">your html goes here</div>'); $pdfFile = $document->render(); file_put_contents('YourPDF.pdf', $pdfFile);
支持的CSS规则
- font-family
- font-size
- font-weight
- font-style
- margin [px, em, cm, mm, pt, in]
- margin-left [px, em, cm, mm, pt, in]
- margin-top [px, em, cm, mm, pt, in]
- margin-right [px, em, cm, mm, pt, in]
- margin-bottom [px, em, cm, mm, pt, in]
- padding [px, em, cm, mm, pt, in]
- padding-left [px, em, cm, mm, pt, in]
- padding-top [px, em, cm, mm, pt, in]
- padding-right [px, em, cm, mm, pt, in]
- padding-bottom [px, em, cm, mm, pt, in]
- border [px, em, cm, mm, pt, in]
- border-left
- border-top
- border-right
- border-bottom
- border-left-width [px, em, cm, mm, pt, in]
- border-top-width [px, em, cm, mm, pt, in]
- border-right-width [px, em, cm, mm, pt, in]
- border-bottom-width [px, em, cm, mm, pt, in]
- border-color [hex, rgb]
- border-left-color [hex, rgb]
- border-top-color [hex, rgb]
- border-right-color [hex, rgb]
- border-bottom-color [hex, rgb]
- border-style
- border-left-style
- border-top-style
- border-right-style
- border-bottom-style
- box-sizing
- display [block, inline, inline-block, none]
- width [%, px, em, cm, mm, pt, in]
- height [%, px, em, cm, mm, pt, in]
- overflow
- vertical-align [baseline, top, bottom, middle]
- line-height [px, em, cm, mm, pt, in]
- background-color [hex, rgb]
- color [hex, rgb, rgba, named]
- word-wrap [normal]
- max-width
- min-width
- white-space [normal]
- word-wrap
- float
- clear
- 表格显示
- background-image
- rgb / rgba color
默认可用的字体
- DejaVu Sans
自定义字体
将您的ttf字体文件上传到服务器,并在您的html文件开头添加以下代码。
如果您的字体支持,可以定义每个字体的粗细和样式。
<div data-font data-family="Your Font Name" data-weight="400" data-style="normal" data-file="/absolute/path/to/font/file/YourFontName-Regular.ttf"></div> <div data-font data-family="Your Font Name" data-weight="400" data-style="italic" data-file="/absolute/path/to/font/file/YourFontName-Italic.ttf"></div> <div data-font data-family="Your Font Name" data-weight="800" data-style="normal" data-file="/absolute/path/to/font/file/YourFontName-Bold.ttf"></div> <div data-font data-family="Your Font Name" data-weight="800" data-style="italic" data-file="/absolute/path/to/font/file/YourFontName-BoldItalic.ttf"></div>
您也可以在PHP中添加字体,如下所示
\YetiForcePDF\Document::addFonts([ [ 'family' => 'Pacifico', 'weight' => '400', 'style' => 'normal', 'file' => '/absolute/path/to/Pacifico/Pacifico-Regular.ttf' ], [ 'family' => 'Lobster Two', 'weight' => '400', 'style' => 'normal', 'file' => '/absolute/path/to/Lobster_Two/LobsterTwo-Regular.ttf' ], [ 'family' => 'Lobster Two', 'weight' => 'bold', 'style' => 'normal', 'file' => '/absolute/path/to/Lobster_Two/LobsterTwo-Bold.ttf' ], ]);
页眉,页脚和水印
您可以在PDF文件中定义要显示的页眉,页脚和水印。
<div data-header> <table style="border:1px solid greenyellow;font-size:12px;margin:10px;background-color:yellow;width:100%"> <tr> <td style="width:50%;border:1px solid red;">This is a page header</td> <td style="text-align:right;border:1px solid red;">which could be table</td> </tr> </table> </div> <div data-footer> <div style="border:1px solid greenyellow;font-size:14px;margin:10px;"> <div style="text-align:center">Footer</div> </div> </div> <div data-watermark style="text-align:center;"> <div style="display:inline-block;font-size:20px;opacity:0.25;"> <img src="Image.jpg"> </div> </div>
页面格式,方向和边距
页面格式,方向和边距可以通过YetiForcePDF实例或html代码定义。
如果您在单个PDF文档中包含多个页面格式和方向,您可以在html中插入多个 data-page-group
。
<div data-page-group data-format="A4" data-orientation="P" data-margin-left="30" data-margin-right="30" data-margin-top="40" data-margin-bottom="40" data-header-top="10" data-footer-bottom="10" ></div>
分页
当您想要添加新页面时,请使用 data-page-group
或在div元素上设置样式 page-break-after:always
。
<div style="page-break-after:always;"></div>
页码
当您想要放置页码(例如在页眉或页脚中)时,您可以在html中放置 {p}
或 {a}
文本 - 它将被 {p}
页码或 {a}
所有页面数替换。
<div data-footer> <div style="border:1px solid greenyellow;font-size:14px;margin:10px;"> <div style="text-align:center">Page {p} / {a}</div> </div> </div>
条形码
<div data-barcode="EAN13" data-size="1" data-height="16" data-code="9780691147727"></div>
待办事项(稍后但很重要)
- 浮动
- display: list-item
- 基本变换(rotateXY,scaleXY,translateXY)
- 位置(绝对,相对)
许可证
在MIT许可证下分发。有关详细信息,请参阅LICENSE。
👥 贡献者
本项目之所以存在,归功于所有贡献者。