Laravel 配置
发布配置文件后,可在 config/tcpdf-next.php 中自定义所有默认行为。
bash
php artisan vendor:publish --tag=tcpdf-next-config以下是完整的配置区段与对应的环境变量。
页面默认值
php
'page' => [
'format' => env('TCPDF_PAGE_FORMAT', 'A4'),
'orientation' => env('TCPDF_PAGE_ORIENTATION', 'P'), // P=纵向, L=横向
'margin_left' => env('TCPDF_MARGIN_LEFT', 15),
'margin_top' => env('TCPDF_MARGIN_TOP', 27),
'margin_right' => env('TCPDF_MARGIN_RIGHT', 15),
'margin_bottom' => env('TCPDF_MARGIN_BOTTOM', 25),
'auto_page_break' => true,
],| 环境变量 | 默认值 | 说明 |
|---|---|---|
TCPDF_PAGE_FORMAT | A4 | 页面尺寸(A4、Letter、A5 等) |
TCPDF_PAGE_ORIENTATION | P | 纵向(P)或横向(L) |
TCPDF_MARGIN_LEFT | 15 | 左边距(mm) |
TCPDF_MARGIN_TOP | 27 | 上边距(mm) |
TCPDF_MARGIN_RIGHT | 15 | 右边距(mm) |
TCPDF_MARGIN_BOTTOM | 25 | 下边距(mm) |
字体
php
'font' => [
'default_family' => env('TCPDF_FONT_FAMILY', 'Helvetica'),
'default_size' => env('TCPDF_FONT_SIZE', 11),
'directory' => env('TCPDF_FONT_DIR', resource_path('fonts/tcpdf')),
'cache_directory' => env('TCPDF_FONT_CACHE_DIR', storage_path('framework/cache/tcpdf-fonts')),
'subsetting' => true,
],| 环境变量 | 默认值 | 说明 |
|---|---|---|
TCPDF_FONT_FAMILY | Helvetica | 默认字体家族 |
TCPDF_FONT_SIZE | 11 | 默认字体大小(pt) |
TCPDF_FONT_DIR | resource_path(...) | 自定义字体目录 |
TCPDF_FONT_CACHE_DIR | storage_path(...) | 字体缓存目录 |
启用 subsetting 可大幅减小嵌入 CJK 字体时的文件大小。
加密
php
'encryption' => [
'enabled' => env('TCPDF_ENCRYPTION_ENABLED', false),
'algorithm' => env('TCPDF_ENCRYPTION_ALGO', 'AES-256'), // AES-256 或 AES-128
'user_password' => env('TCPDF_USER_PASSWORD', ''),
'owner_password' => env('TCPDF_OWNER_PASSWORD', ''),
'permissions' => [
'print' => true,
'copy' => false,
'modify' => false,
'annotate' => true,
'fill_forms' => true,
'extract' => false,
'assemble' => false,
'print_highres' => true,
],
],| 环境变量 | 默认值 | 说明 |
|---|---|---|
TCPDF_ENCRYPTION_ENABLED | false | 是否启用加密 |
TCPDF_ENCRYPTION_ALGO | AES-256 | 加密算法 |
TCPDF_USER_PASSWORD | '' | 打开文件密码(空字符串表示无需密码可打开) |
TCPDF_OWNER_PASSWORD | '' | 所有者密码(控制权限变更) |
安全提醒
请勿将密码硬编码在配置文件中。务必使用环境变量或 Laravel 的加密存储。
数字签名
php
'signature' => [
'enabled' => env('TCPDF_SIGNATURE_ENABLED', false),
'certificate_path' => env('TCPDF_CERT_PATH', ''),
'private_key_path' => env('TCPDF_KEY_PATH', ''),
'password' => env('TCPDF_CERT_PASSWORD', ''),
'tsa_url' => env('TCPDF_TSA_URL', ''),
'pades_level' => env('TCPDF_PADES_LEVEL', 'B-LTA'),
],| 环境变量 | 默认值 | 说明 |
|---|---|---|
TCPDF_SIGNATURE_ENABLED | false | 是否启用数字签名 |
TCPDF_CERT_PATH | '' | PKCS#12 或 PEM 证书路径 |
TCPDF_KEY_PATH | '' | 私钥路径 |
TCPDF_CERT_PASSWORD | '' | 证书密码 |
TCPDF_TSA_URL | '' | 时间戳服务器(TSA)URL |
TCPDF_PADES_LEVEL | B-LTA | PAdES 签名等级(B-B、B-T、B-LT、B-LTA) |
队列
php
'queue' => [
'connection' => env('TCPDF_QUEUE_CONNECTION', 'redis'),
'name' => env('TCPDF_QUEUE_NAME', 'pdf-generation'),
'tries' => (int) env('TCPDF_QUEUE_TRIES', 3),
'timeout' => (int) env('TCPDF_QUEUE_TIMEOUT', 120),
'backoff' => [10, 30, 60],
],| 环境变量 | 默认值 | 说明 |
|---|---|---|
TCPDF_QUEUE_CONNECTION | redis | 队列连接驱动 |
TCPDF_QUEUE_NAME | pdf-generation | 队列名称 |
TCPDF_QUEUE_TRIES | 3 | 最大重试次数 |
TCPDF_QUEUE_TIMEOUT | 120 | 任务超时(秒) |
输出
php
'output' => [
'compression' => env('TCPDF_COMPRESSION', true),
'pdf_version' => env('TCPDF_PDF_VERSION', '2.0'),
'color_profile' => env('TCPDF_COLOR_PROFILE', 'sRGB'),
'tagged_pdf' => env('TCPDF_TAGGED_PDF', false),
],| 环境变量 | 默认值 | 说明 |
|---|---|---|
TCPDF_COMPRESSION | true | 启用 Flate 流压缩 |
TCPDF_PDF_VERSION | 2.0 | PDF 版本(1.7 或 2.0) |
TCPDF_COLOR_PROFILE | sRGB | ICC 色彩配置文件 |
TCPDF_TAGGED_PDF | false | 生成标记式 PDF(无障碍) |
环境变量范例
在 .env 中加入常用配置:
dotenv
# 页面
TCPDF_PAGE_FORMAT=A4
TCPDF_PAGE_ORIENTATION=P
# 字体
TCPDF_FONT_FAMILY=NotoSansTC
TCPDF_FONT_SIZE=11
# 加密
TCPDF_ENCRYPTION_ENABLED=true
TCPDF_ENCRYPTION_ALGO=AES-256
TCPDF_USER_PASSWORD=
TCPDF_OWNER_PASSWORD="${APP_KEY}"
# 队列
TCPDF_QUEUE_CONNECTION=redis
TCPDF_QUEUE_NAME=pdf-generation
TCPDF_QUEUE_TRIES=3
TCPDF_QUEUE_TIMEOUT=120