Bỏ qua để đến nội dung

Cấu hình bundle Symfony của NextPDF

Định cấu hình toàn bộ hành vi của bundle dưới khóa gốc nextpdf trong config/packages/nextpdf.yaml. Mỗi khóa đều có giá trị mặc định, vì vậy bạn chỉ cần đặt những giá trị muốn thay đổi. Trang này phản ánh chính xác Configuration.php.

NextPDF\Symfony\DependencyInjection\Configuration định nghĩa schema cấu hình. Các giá trị không hợp lệ sẽ làm quá trình build container thất bại với một InvalidConfigurationException của Symfony.

KhóaKiểuMặc địnhKiểm tra
page_formatenumA4một trong số A4, A3, A5, Letter, Legal, Tabloid
orientationenumPmột trong số P, L
unitenummmmột trong số pt, mm, cm, in
pdfascalarnullmột trong số null, 4, 4e, 4f
fonts_pathscalar%kernel.project_dir%/resources/fonts
cache_pathscalar%kernel.cache_dir%/nextpdf
image_cache_mbsố nguyên50tối thiểu 0
font_cache_lockingbooleantrue
preload_fontsdanh sách chuỗi[]
KhóaKiểuMặc định
icc_profile.rgbscalarnull
icc_profile.cmykscalarnull

Áp dụng cho mọi tài liệu do PdfFactory tạo ra.

KhóaKiểuMặc định
defaults.creatorscalarNextPDF
defaults.authorscalar(trống)
defaults.languagescalaren
defaults.margin_topfloat10.0
defaults.margin_rightfloat10.0
defaults.margin_bottomfloat10.0
defaults.margin_leftfloat10.0
defaults.font_familyscalardejavusans
defaults.font_sizefloat12.0
defaults.trim_boxvariablenull
defaults.bleed_boxvariablenull

PdfFactory đọc creator, author, và language từ phần này rồi áp dụng chúng cho mỗi tài liệu mới. Bundle lưu các khóa còn lại dưới dạng tham số container để engine sử dụng.

Chỉ áp dụng khi nextpdf/artisan được cài đặt và phát hiện.

KhóaKiểuMặc định
artisan.chrome_binaryscalarnull
artisan.render_timeoutsố nguyên30
artisan.default_cssscalar(trống)
artisan.no_sandboxbooleanfalse
artisan.max_html_sizesố nguyên5000000

Chỉ áp dụng khi nextpdf/premium được cài đặt. Khi bundle và bậc Pro cùng hiện diện, cấu hình ký được hỗ trợ là hồ sơ baseline B-B. Khóa level chấp nhận các giá trị chuỗi bên dưới để schema tương thích với nhóm cấu hình NextPDF rộng hơn. Bundle này cung cấp khả năng ký B-B. Các hồ sơ vượt ngoài B-B được tài liệu hóa riêng trong NextPDF Premium và không được xác nhận ở đây.

KhóaKiểuMặc địnhKiểm tra
signature.enabledbooleanfalse
signature.certificatescalarnull
signature.private_keyscalarnull
signature.passwordscalar(trống)
signature.extra_certsdanh sách chuỗi[]
signature.levelenumB-Btập giá trị được chấp nhận: B-B, B-T, B-LT, B-LTA (B-B được cung cấp; B-T/B-LT/B-LTA là các giá trị tương thích schema, không phải khả năng Pro được cung cấp)

Compiler pass chỉ đăng ký service ký khi signature.enabled là true signature.certificate được đặt; nếu không, phần này không có tác dụng.

Cấu hình client của Time Stamp Authority (TSA), được tính năng ký Pro sử dụng khi đã cấu hình.

KhóaKiểuMặc định
tsa.urlscalarnull
tsa.usernamescalar(trống)
tsa.passwordscalar(trống)
tsa.certscalarnull
tsa.keyscalarnull
tsa.timeoutsố nguyên30
tsa.allow_insecure_httpbooleanfalse
tsa.pinned_public_keysdanh sách chuỗi[]
tsa.warn_on_key_rotationbooleantrue

Bundle chỉ đăng ký service client TSA khi tsa.url đã được đặt.

KhóaKiểuMặc định
ocsp_cache.enabledbooleantrue
ocsp_cache.ttlsố nguyên86400
ocsp_cache.directoryscalarnull

Các thiết lập cho quá trình tạo bất đồng bộ, được dùng khi symfony/messenger được cài đặt.

KhóaKiểuMặc định
messenger.transportscalarasync
messenger.timeoutsố nguyên120
messenger.retriessố nguyên3

Một tệp cấu hình hiển thị mọi phần cùng giá trị mặc định tương ứng:

nextpdf:
page_format: A4
orientation: P
unit: mm
pdfa: ~
fonts_path: '%kernel.project_dir%/resources/fonts'
cache_path: '%kernel.cache_dir%/nextpdf'
image_cache_mb: 50
font_cache_locking: true
preload_fonts: []
icc_profile:
rgb: ~
cmyk: ~
defaults:
creator: NextPDF
author: ''
language: en
margin_top: 10.0
margin_right: 10.0
margin_bottom: 10.0
margin_left: 10.0
font_family: dejavusans
font_size: 12.0
trim_box: ~
bleed_box: ~
artisan:
chrome_binary: ~
render_timeout: 30
default_css: ''
no_sandbox: false
max_html_size: 5000000
signature:
enabled: false
certificate: ~
private_key: ~
password: ''
extra_certs: []
level: B-B
tsa:
url: ~
username: ''
password: ''
cert: ~
key: ~
timeout: 30
allow_insecure_http: false
pinned_public_keys: []
warn_on_key_rotation: true
ocsp_cache:
enabled: true
ttl: 86400
directory: ~
messenger:
transport: async
timeout: 120
retries: 3

Bundle nạp các định nghĩa service từ config/services.php. Bảng bên dưới phản ánh chính xác tệp đó.

Service idSharedPublicGhi chú
NextPDF\Typography\FontRegistryđược tạo từ nextpdf.fonts_path; logger PHP Standard Recommendation 3 (PSR-3) tùy chọn
NextPDF\Contracts\FontRegistryInterface(alias)alias của FontRegistry
NextPDF\Graphics\ImageRegistryleast-recently-used (LRU) có giới hạn; được gắn tag kernel.reset (reset)
NextPDF\Core\DocumentFactorychia sẻ hai registry
NextPDF\Contracts\DocumentFactoryInterface(alias)alias của DocumentFactory
NextPDF\Symfony\Service\PdfFactoryđọc defaults, pdfa, và artisan dưới dạng tham số
NextPDF\Contracts\PdfDocumentInterfacekhôngfactory [PdfFactory, create]
NextPDF\Core\Document(alias)alias của PdfDocumentInterface
nextpdf.document(alias)alias của PdfDocumentInterface
NextPDF\Symfony\Http\PdfResponsehelper không trạng thái

Bundle cũng đăng ký các binding contract EInvoice (EmbedderInterface, ValidatorInterface, ProfileInterface, SchematronRunnerInterface) chỉ khi các lớp triển khai Premium tương ứng tồn tại. Mỗi service đều non-shared, nên bên gọi nhận được một thực thể mới. Trạng thái parser của từng lần gọi không bao giờ rò rỉ giữa các request.

nextpdf.document (và các alias của nó) là non-shared: mỗi lần container resolve sẽ trả về một tài liệu riêng biệt. Theo PHP Standard Recommendation 11 (PSR-11), một container có thể trả về giá trị khác nhau qua các lần gọi get() liên tiếp với cùng một định danh; xem PSR-11 §1.1.2. Font registry được chia sẻ và bị khóa sau khi warmup. Dữ liệu cấu trúc của phông chữ được parse một lần cho mỗi tiến trình và không thể bị thay đổi giữa chừng request.

Các service FontRegistryImageRegistry chấp nhận một Psr\Log\LoggerInterface tùy chọn; Symfony bind nó bằng nullOnInvalid(). Logger vẫn là một cộng tác viên tùy chọn, có thể thay thế, nhất quán với contract logger PSR-3.

PdfFactory, PdfResponse, document factory interface và font registry interface đều là public. Bạn có thể lấy chúng từ container hoặc type-hint trong các controller và service autowired. Constructor injection của NextPDF\Symfony\Service\PdfFactory là điểm vào được khuyến nghị.

Trường hợp đặc biệt và những điều cần lưu ý

Phần tiêu đề “Trường hợp đặc biệt và những điều cần lưu ý”
  • pdfa được đặt mà không có Pro — giá trị được lưu nhưng bị bỏ qua. PdfFactory chỉ áp dụng Portable Document Format/Archival (PDF/A) khi extension Pro được phát hiện tại thời điểm compile.
  • image_cache_mb: 0 — hợp lệ; tắt cache LRU ảnh. Các giá trị âm bị từ chối tại thời điểm build.
  • signature.enabled: true mà không có signature.certificate — service ký không được đăng ký; theo thiết kế, cấu hình không có tác dụng trong im lặng.
  • Placeholder %kernel.*% — các giá trị mặc định của fonts_pathcache_path dùng tham số container của Symfony; chỉ ghi đè bằng đường dẫn tuyệt đối khi cần đường dẫn nguyên văn.

Mỗi hàng là một khẳng định mang tính chuẩn mực trên trang này, được ghim vào một reference_id đầy đủ 64 ký tự hex từ kho ngữ liệu của tổ chức phát triển tiêu chuẩn (SDO) có kiểm soát truy cập. Nguồn gốc, bao gồm manifest kho ngữ liệu và transport truy xuất, nằm trong _sidecars/rag-citations.yaml.

SpecĐiều khoảnreference_idKhẳng định
PSR-11psr_11_container#1.1.2.p3.bget() có thể trả về giá trị khác nhau qua mỗi lần resolve
PSR-3psr_3_logger#x3.p17Cộng tác viên LoggerInterface tùy chọn

Các phần signature và tsa chỉ áp dụng khi nextpdf/premium (Pro) được cài đặt. Khả năng Pro tùy chọn này không yêu cầu thay đổi mã nào trong bundle Core được ghi lại ở đây. Xem </get-license/?intent=symfony-pro>.

  • /integrations/symfony/install/ — cài đặt và đăng ký bundle.
  • /integrations/symfony/overview/ — xem lại bản tóm tắt khả năng.
  • /integrations/symfony/production-usage/ — an toàn worker và các mẫu bất đồng bộ.
  • /integrations/symfony/boot-and-discovery/ — xem cách cấu hình được resolve trong quá trình boot.