Skip to content

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_FORMATA4页面尺寸(A4、Letter、A5 等)
TCPDF_PAGE_ORIENTATIONP纵向(P)或横向(L)
TCPDF_MARGIN_LEFT15左边距(mm)
TCPDF_MARGIN_TOP27上边距(mm)
TCPDF_MARGIN_RIGHT15右边距(mm)
TCPDF_MARGIN_BOTTOM25下边距(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_FAMILYHelvetica默认字体家族
TCPDF_FONT_SIZE11默认字体大小(pt)
TCPDF_FONT_DIRresource_path(...)自定义字体目录
TCPDF_FONT_CACHE_DIRstorage_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_ENABLEDfalse是否启用加密
TCPDF_ENCRYPTION_ALGOAES-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_ENABLEDfalse是否启用数字签名
TCPDF_CERT_PATH''PKCS#12 或 PEM 证书路径
TCPDF_KEY_PATH''私钥路径
TCPDF_CERT_PASSWORD''证书密码
TCPDF_TSA_URL''时间戳服务器(TSA)URL
TCPDF_PADES_LEVELB-LTAPAdES 签名等级(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_CONNECTIONredis队列连接驱动
TCPDF_QUEUE_NAMEpdf-generation队列名称
TCPDF_QUEUE_TRIES3最大重试次数
TCPDF_QUEUE_TIMEOUT120任务超时(秒)

输出

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_COMPRESSIONtrue启用 Flate 流压缩
TCPDF_PDF_VERSION2.0PDF 版本(1.7 或 2.0)
TCPDF_COLOR_PROFILEsRGBICC 色彩配置文件
TCPDF_TAGGED_PDFfalse生成标记式 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

下一步

以 LGPL-3.0-or-later 许可证发布。