Tham khảo API Artisan
Tổng quan nhanh
Phần tiêu đề “Tổng quan nhanh”Gói Artisan (nextpdf/artisan) cung cấp hai nhóm API liên quan. Lớp kết xuất Chrome — ChromeRendererConfig, ChromeHtmlRenderer, ChromeSecurityPolicy, ChromeRenderResult, ViewportCalculator và BrowserPool — chuyển một đoạn Hypertext Markup Language (HTML) thành tệp Portable Document Format (PDF) do Chrome tạo ra. Lớp trình phân tích cú pháp và trình nhập — PdfReader, PageImporter, ImportedFormXObject, cùng các lớp tokenizer và cross-reference hỗ trợ — nhúng kết quả kết xuất đó trở lại vào tài liệu NextPDF dưới dạng Form XObject có văn bản chọn được.
Bắt đầu từ đây: nếu bạn chỉ cần tạo một tệp PDF từ HTML, bạn hiếm khi phải dùng trực tiếp gói này. Hãy gắn một ChromeRendererConfig vào một Document của NextPDF rồi gọi writeHtmlChrome(); xem phần bắt đầu nhanh. Dùng các lớp bên dưới khi bạn nhúng bộ kết xuất vào worker hoặc chạy chẩn đoán trình phân tích cú pháp. Ví dụ đầu tiên trong phần Tác vụ thường gặp cho thấy cách thực hiện chỉ với một lệnh gọi.
Tác vụ thường gặp
Phần tiêu đề “Tác vụ thường gặp”Ba luồng bên dưới bao quát gần như mọi trường hợp dùng trong môi trường thực tế, từ lệnh gọi cấp cao nhất đến quy trình kết xuất và nhập tường minh. Mỗi mẫu đều đã được kiểm chứng với nextpdf-Artisan/src (và các tệp README.md / ci/tests/ của gói).
Kết xuất một đoạn HTML thành tệp PDF có văn bản chọn được bằng lệnh gọi chuẩn.
<?php
declare(strict_types=1);
use NextPDF\Core\Document;use NextPDF\Artisan\ChromeRendererConfig;
require __DIR__ . '/vendor/autoload.php';
$config = new ChromeRendererConfig(chromeBinaryPath: '/usr/bin/chromium');
$doc = Document::createStandalone();$doc->setChromeRendererConfig($config);$doc->addPage();$doc->writeHtmlChrome('<div style="display:flex;gap:20px"><h2>Revenue</h2><p>$124,500</p></div>');$doc->save('/tmp/report.pdf');Tác dụng: Chrome dàn trang cho đoạn HTML. Cầu nối nhúng trang 0 dưới dạng Form XObject, nhờ đó văn bản vẫn chọn được. writeHtmlChrome(string $html, ?float $width = null, ?float $height = null): static tự khớp chiều cao khi $height là null.
Tự chạy bộ kết xuất và nhập trang khi bạn cần quy trình tường minh phía sau writeHtmlChrome(), chẳng hạn trong worker hoặc các luồng đặt nội dung tùy chỉnh.
<?php
declare(strict_types=1);
use NextPDF\Artisan\ChromeHtmlRenderer;use NextPDF\Artisan\ChromeRendererConfig;use NextPDF\Artisan\ImportedFormXObject;use NextPDF\Artisan\PageImporter;use NextPDF\Parser\PdfReader;
$renderer = new ChromeHtmlRenderer(new ChromeRendererConfig(renderTimeout: 30));
try { $result = $renderer->render($html, widthPt: 595.28);
$reader = new PdfReader($result->getPdfData()); $reader->parse();
$form = (new PageImporter())->import($reader);} finally { $renderer->close();}Tác dụng: kết xuất các byte PDF của Chrome, phân tích cú pháp chúng và nhập trang 0 vào một ImportedFormXObject mà bạn có thể đặt vào tài liệu. Luôn gọi close() trên bộ kết xuất để giải phóng tiến trình Chrome.
Tạo cấu hình từ một mảng kiểu framework cho config/*.php hoặc các tham số gói, thay vì viết cứng các đối số của hàm khởi tạo.
<?php
declare(strict_types=1);
use NextPDF\Artisan\ChromeRendererConfig;
$config = ChromeRendererConfig::fromArray([ 'chrome_binary' => '/usr/bin/chromium', 'render_timeout' => 45, 'max_html_size' => 2_000_000, 'no_sandbox' => false,]);Tác dụng: ánh xạ mảng cấu hình kiểu snake-case sang hàm khởi tạo. Các khóa không được đặt sẽ dùng giá trị mặc định, và chrome_binary chỉ được áp dụng khi đó là một chuỗi không rỗng.
Bộ kết xuất Chrome
Phần tiêu đề “Bộ kết xuất Chrome”Các kiểu này vận hành đường dẫn kết xuất. Tạo một ChromeRendererConfig, truyền nó vào một ChromeHtmlRenderer, rồi gọi render() để nhận một ChromeRenderResult.
| Ký hiệu | Tham số | Hành vi mặc định | Trả về | Ném ngoại lệ hoặc thất bại với | Ghi chú |
|---|---|---|---|---|---|
new ChromeRendererConfig(?string $chromeBinaryPath = null, int $renderTimeout = 30, string $defaultCss = '', int $maxHtmlSize = 5000000, bool $noSandbox = false) | Đường dẫn tệp nhị phân, thời gian chờ, Cascading Style Sheets (CSS), giới hạn kích thước HTML, cờ sandbox. | Tự động phát hiện Chrome khi đường dẫn tệp nhị phân là null; sandbox vẫn bật trừ khi bị tắt. | ChromeRendererConfig | không có. | Chỉ đặt noSandbox khi môi trường chạy yêu cầu. |
ChromeRendererConfig::fromArray(array $config) | chrome_binary, render_timeout, default_css, max_html_size, no_sandbox. | Các giá trị bị thiếu sẽ dùng giá trị mặc định của hàm khởi tạo. | ChromeRendererConfig | Khi kiểu không khớp, các khóa tùy chọn sẽ quay về giá trị mặc định. | Phù hợp với các mảng cấu hình kiểu framework. |
new ChromeHtmlRenderer(ChromeRendererConfig $config, ?LoggerInterface $logger = null, ?HtmlSecurityPolicyInterface $htmlSecurityPolicy = null) | Cấu hình, logger tùy chọn, chính sách HTML tùy chọn ở lớp phân tích cú pháp. | Dùng DefaultHtmlSecurityPolicy khi không cung cấp chính sách nào. | ChromeHtmlRenderer | Lỗi thiết lập Chrome xảy ra ở lần kết xuất đầu tiên. | Bộ kết xuất sở hữu một browser pool cho đến khi gọi close(). |
ChromeHtmlRenderer::render(string $html, float $widthPt, float $heightPt = 0) | html: đoạn đầu vào; widthPt: chiều rộng trang; heightPt: chiều cao đích hoặc tự động. | Tự động tính chiều cao nội dung khi heightPt <= 0. | ChromeRenderResult | ChromeRenderException; lỗi kiểm tra kích thước HTML. | Chặn các yêu cầu mạng tới tài nguyên con thông qua Chrome DevTools Protocol (CDP). |
ChromeHtmlRenderer::getHtmlSecurityPolicy() | không có. | Trả về chính sách lớp phân tích cú pháp đã cấu hình. | HtmlSecurityPolicyInterface | không có. | Bổ sung cho các kiểm soát ở mức truyền tải của Chrome. |
ChromeHtmlRenderer::close() | không có. | Đóng browser pool và xóa nó. | void | Lỗi tắt trình duyệt có thể phát sinh từ thư viện bên dưới. | Gọi khi tắt worker. |
Chính sách bảo mật HTML
Phần tiêu đề “Chính sách bảo mật HTML”Hãy dùng các API này khi bạn cần kiểm tra và bao bọc HTML bên ngoài trước khi kết xuất, thay vì gọi trực tiếp ChromeHtmlRenderer::render(), vì phương thức đó đã gọi chúng.
| Ký hiệu | Tham số | Hành vi mặc định | Trả về | Ném ngoại lệ hoặc thất bại với | Ghi chú |
|---|---|---|---|---|---|
ChromeSecurityPolicy::validate(string $html, int $maxSize) | Đầu vào HTML và kích thước byte tối đa. | Chỉ chấp nhận đầu vào khi kích thước và các cấu trúc bị cấm vượt qua khâu kiểm tra. | void | ChromeRenderException hoặc ngoại lệ kiểm tra. | Chạy trước khi trình duyệt kết xuất nếu chấp nhận HTML bên ngoài. |
ChromeSecurityPolicy::wrapHtml(string $html, int $viewportWidth, string $defaultCss = '') | Đoạn HTML, chiều rộng viewport, CSS mặc định tùy chọn. | Tạo một tài liệu kết xuất hoàn chỉnh bao quanh đoạn HTML. | string | Lỗi kiểm tra hoặc lỗi dựng chuỗi. | Giữ CSS riêng của bộ kết xuất tách biệt với HTML của ứng dụng. |
Trình trợ giúp kết quả và chuyển đổi
Phần tiêu đề “Trình trợ giúp kết quả và chuyển đổi”Hãy dùng các trình trợ giúp này để đọc kết quả kết xuất (ChromeRenderResult) và chuyển đổi giữa điểm PDF với pixel CSS của Chrome khi xác định kích thước viewport hoặc tính chiều cao.
| Ký hiệu | Tham số | Hành vi mặc định | Trả về | Ném ngoại lệ hoặc thất bại với | Ghi chú |
|---|---|---|---|---|---|
new ChromeRenderResult(string $pdfData, float $widthPt, float $heightPt, float $contentHeightCssPx) | Các byte PDF thô, chiều rộng, chiều cao, chiều cao nội dung đo được. | Không kiểm tra thêm ngoài các thuộc tính hàm khởi tạo đã định kiểu. | ChromeRenderResult | không có. | Thường được trả về bởi ChromeHtmlRenderer::render(). |
ChromeRenderResult::getPdfData() | không có. | Trả về các byte PDF thô do Chrome tạo ra. | string | không có. | Dùng với PdfReader và PageImporter khi nhúng. |
ChromeRenderResult::getWidthPt() | không có. | Trả về chiều rộng được yêu cầu, tính bằng điểm. | float | không có. | Dùng để xác định kích thước cho đối tượng form đã nhập. |
ChromeRenderResult::getHeightPt() | không có. | Trả về chiều cao đã tính hoặc được yêu cầu, tính bằng điểm. | float | không có. | Chiều cao tự động bao gồm vùng đệm cho bố cục in. |
ViewportCalculator::pointsToCssPx(float $pt) | pt: điểm PDF. | Chuyển đổi theo tỷ lệ 96 px CSS trên 72 điểm PDF. | int | không có. | Được làm tròn cho chiều rộng viewport của Chrome. |
ViewportCalculator::cssPxToPoints(float $px) | px: pixel CSS. | Chuyển đổi theo tỷ lệ 72 điểm PDF trên 96 px CSS. | float | không có. | Dùng để tính chiều cao tự động. |
API nhập và phân tích cú pháp
Phần tiêu đề “API nhập và phân tích cú pháp”Đây là đường dẫn nhập. Phân tích cú pháp các byte PDF của Chrome bằng PdfReader, rồi truyền reader vào PageImporter::import() để nhận một trang có thể nhúng; các phương thức PdfReader còn lại dùng cho chẩn đoán.
| Ký hiệu | Tham số | Hành vi mặc định | Trả về | Ném ngoại lệ hoặc thất bại với | Ghi chú |
|---|---|---|---|---|---|
new PdfReader(string $data) | data: các byte PDF hoàn chỉnh. | Trình phân tích cú pháp không chạy cho đến khi gọi parse(). | PdfReader | không có. | Được thiết kế cho các tệp PDF do Chrome tạo ra. |
PdfReader::parse() | không có. | Phân tích cú pháp chuỗi cross-reference (xref) và trailer. | void | PdfParseException khi cấu trúc PDF không hợp lệ. | Phải được gọi trước khi truy cập object/page. |
PdfReader::getObject(int $objNum) | Số hiệu đối tượng. | Phân giải đối tượng đã phân tích theo số hiệu. | PdfObject | PdfParseException khi đối tượng bị thiếu hoặc sai định dạng. | Dùng sau parse(). |
PdfReader::getTrailer() | không có. | Trả về dictionary trailer đã phân tích. | array | PdfParseException khi không có dữ liệu trailer. | Được dùng cho chẩn đoán và phân tích revision. |
PdfReader::getObjectNumbers() | không có. | Trả về các số hiệu đối tượng đã phân tích. | array | không có sau khi phân tích cú pháp. | Hữu ích cho việc chẩn đoán trình nhập. |
PdfReader::getPage(int $pageIndex) | pageIndex: chỉ số trang bắt đầu từ 0. | Không tự động phân tích cú pháp. | PdfObject | PdfParseException khi thiếu hoặc nằm ngoài phạm vi. | Trình nhập mặc định lấy trang 0. |
PdfReader::getPageContentStream(PdfObject $page) | page: đối tượng trang đã phân tích. | Phân giải luồng nội dung. | string | PdfParseException khi luồng không hợp lệ. | Luồng rỗng khiến trình nhập thất bại. |
PdfReader::getPageResources(PdfObject $page) | page: đối tượng trang đã phân tích. | Phân giải tài nguyên trang. | array | PdfParseException khi tài nguyên không hợp lệ. | Dictionary tài nguyên được nhúng cùng với đối tượng form. |
PdfReader::getPageMediaBox(PdfObject $page) | page: đối tượng trang đã phân tích. | Quay về kích thước tương tự A4 khi không có giá trị. | array | Lỗi của trình phân tích cú pháp. | Trả về tọa độ trong không gian PDF. |
PdfReader::resolveRef(mixed $value) | Giá trị đã phân tích. | Phân giải các tham chiếu đối tượng theo cách đệ quy khi thích hợp. | mixed | PdfParseException khi tham chiếu không hợp lệ. | Trình trợ giúp kiểu nội bộ được mở ra cho các quy trình của trình nhập. |
PdfReader::collectPageResources(PdfObject $page) | page: đối tượng trang đã phân tích. | Duyệt qua các tham chiếu tài nguyên của trang. | array | Lỗi của trình phân tích cú pháp. | Dùng để nhúng các đối tượng phụ thuộc cùng với các trang đã nhập. |
PdfReader::getRevisionCount() | không có. | Đếm số revision tăng dần đã phân tích. | int | không có sau khi phân tích cú pháp. | Hữu ích cho các tệp PDF đã ký hoặc được cập nhật tăng dần. |
PdfReader::getRevisionXRef(int $index) | Chỉ số revision bắt đầu từ 0. | Trả về một bảng xref revision. | RevisionXRefTable | PdfParseException khi chỉ số không hợp lệ. | Dùng cho việc chẩn đoán revision ở mức thấp. |
PdfReader::getRevisions() | không có. | Trả về tất cả các bảng xref revision đã phân tích. | array | không có sau khi phân tích cú pháp. | Khung nhìn chỉ đọc về trạng thái trình phân tích cú pháp. |
PageImporter::import(PdfReader $reader, int $pageIndex = 0) | Reader đã phân tích và chỉ số trang bắt đầu từ 0. | Nhập trang đầu tiên khi bỏ qua tham số. | ImportedFormXObject | PdfParseException khi không thể trích xuất trang. | Thu thập luồng nội dung, media box, tài nguyên và các đối tượng được tham chiếu. |
Các đối tượng hỗ trợ trình phân tích cú pháp
Phần tiêu đề “Các đối tượng hỗ trợ trình phân tích cú pháp”Các value object và trình trợ giúp này được trình phân tích cú pháp trả về hoặc dùng nội bộ. Hãy dùng chúng khi bạn kiểm tra các đối tượng, tài nguyên, luồng hoặc bảng revision đã nhập.
| Ký hiệu | Tham số | Hành vi mặc định | Trả về | Ném ngoại lệ hoặc thất bại với | Ghi chú |
|---|---|---|---|---|---|
new ImportedFormXObject(string $contentStream, array $mediaBox, array $embeddedObjects, array $resourcesDict) | Luồng nội dung đã giải mã, media box, các đối tượng được nhúng, dictionary tài nguyên. | Lưu trữ payload form đã nhập, độc lập và khép kín. | ImportedFormXObject | không có. | Thường được trả về bởi PageImporter::import(). |
ImportedFormXObject::getWidth() | không có. | Trả về chiều rộng của form đã nhập, tính bằng điểm. | float | không có. | Dùng khi đặt kết quả của Chrome vào một trang. |
ImportedFormXObject::getHeight() | không có. | Trả về chiều cao của form đã nhập, tính bằng điểm. | float | không có. | Các kết quả kết xuất với chiều cao tự động được truyền qua giá trị này. |
ImportedFormXObject::getEmbeddedObjects() | không có. | Trả về các đối tượng mà form đã nhập cần đến. | array | không có. | Mã writer dùng các đối tượng này để giữ lại tài nguyên. |
ImportedFormXObject::getResourcesDict() | không có. | Trả về dictionary tài nguyên đã nhập. | array | không có. | Dùng khi dựng form XObject. |
ImportedFormXObject::getMediaBox() | không có. | Trả về media box đã nhập. | array | không có. | Dùng để chẩn đoán việc đặt nội dung. |
ImportedFormXObject::getContentStream() | không có. | Trả về luồng nội dung của trang đã nhập. | string | không có. | Dành cho việc tích hợp writer/import. |
new PdfObject(int $objectNumber, int $generation, array $dictionary, ?string $rawStreamData = null, ?string $decodedStreamData = null, ?string $rawDictionaryBytes = null) | Số hiệu đối tượng, generation, dictionary đã phân tích, các byte luồng tùy chọn, luồng đã giải mã tùy chọn, các byte dictionary thô tùy chọn. | Lưu trữ trạng thái đối tượng đã phân tích. | PdfObject | không có. | Được tạo bởi các thành phần nội bộ của trình phân tích cú pháp. |
PdfObject::getRawDictionaryBytes() | không có. | Trả về các byte dictionary gốc khi có sẵn. | `string | null` | không có. |
PdfObject::getRawStreamData() | không có. | Trả về các byte luồng chưa giải mã khi có sẵn. | `string | null` | không có. |
PdfObject::getDictionary() | không có. | Trả về các mục dictionary đã phân tích. | array | không có. | Khung nhìn chỉ đọc của trình phân tích cú pháp. |
PdfObject::get(string $key) | Khóa của dictionary. | Trả về null khi không có khóa. | mixed | không có. | Giúp bên gọi không phải tự phân tích các dictionary thô. |
PdfObject::getRef(string $key) | Khóa của dictionary. | Trả về tuple tham chiếu đối tượng khi giá trị là một tham chiếu. | `array | null` | không có. |
PdfObject::getArray(string $key) | Khóa của dictionary. | Trả về một giá trị mảng hoặc mảng rỗng khi không có sẵn. | array | không có. | Lớp bao tiện lợi cho các mục dictionary có giá trị là mảng. |
PdfObject::hasStream() | không có. | Kiểm tra xem các byte luồng có hiện diện hay không. | bool | không có. | Phân biệt các đối tượng chỉ có dictionary. |
PdfObject::getType() | không có. | Đọc /Type. | `string | null` | không có. |
PdfObject::getSubtype() | không có. | Đọc /Subtype. | `string | null` | không có. |
RevisionExtractor::extractRevision(string $pdfData, PdfReader $reader, int $revision) | Các byte PDF, một reader đã phân tích, và chỉ số revision bắt đầu từ 0. | Trích xuất một revision tăng dần. | string | PdfParseException khi ranh giới không hợp lệ. | Được dùng cho kiểm thử và chẩn đoán trình phân tích cú pháp. |
RevisionExtractor::getRevisionBoundaries(string $pdfData, PdfReader $reader) | Các byte PDF và một reader đã phân tích. | Tìm ra các dải byte cho các revision tăng dần. | array | PdfParseException khi cấu trúc xref sai định dạng. | Giúp phân tích các tệp PDF đã ký hoặc được cập nhật tăng dần. |
| `StreamDecoder::decode(string $data, string | array $filter)` | Các byte luồng và một hoặc nhiều bộ lọc PDF. | Áp dụng các bộ lọc theo thứ tự. | string | PdfParseException khi bộ lọc không được hỗ trợ hoặc không hợp lệ. |
new ResourceCollector(PdfReader $reader) | Reader đã phân tích. | Bắt đầu với tập đối tượng được thu thập rỗng. | ResourceCollector | không có. | Được dùng bởi PdfReader::collectPageResources(). |
ResourceCollector::traverse(mixed $value, int $depth = 0) | Giá trị đã phân tích và độ sâu đệ quy. | Duyệt qua các tham chiếu tài nguyên cho đến các giới hạn độ sâu nội bộ. | void | Lỗi của trình phân tích cú pháp khi tham chiếu không hợp lệ. | Trình trợ giúp nội bộ để khép kín tài nguyên khi nhập trang. |
ResourceCollector::getCollected() | không có. | Trả về các đối tượng tài nguyên đã thu thập. | array | không có. | Gọi sau traverse(). |
new RevisionXRefTable(int $index, int $xrefOffset, array $xrefEntries, array $trailer, ?int $prevOffset) | Chỉ số revision, offset của xref, các mục xref, trailer, offset trước đó tùy chọn. | Ảnh chụp bất biến của một revision tăng dần. | RevisionXRefTable | không có. | Được tạo bởi các thành phần nội bộ của trình phân tích cú pháp. |
RevisionXRefTable::getObjectNumbers() | không có. | Trả về các số hiệu đối tượng đang hoạt động trong bảng revision. | array | không có. | API chẩn đoán revision ở mức thấp. |
RevisionXRefTable::getActiveObjectCount() | không có. | Đếm các đối tượng đang hoạt động. | int | không có. | Hữu ích cho các phép khẳng định của trình phân tích cú pháp. |
RevisionXRefTable::hasRootUpdate() | không có. | Báo cáo xem revision có cập nhật root của tài liệu hay không. | bool | không có. | Hữu ích cho việc phân tích cập nhật tăng dần. |
RevisionXRefTable::getSize() | không có. | Trả về giá trị kích thước của bảng xref. | int | không có. | Phản ánh siêu dữ liệu xref của PDF đã phân tích. |
API tokenizer và xref mức thấp
Phần tiêu đề “API tokenizer và xref mức thấp”Chỉ dùng các API này cho chẩn đoán sâu trình phân tích cú pháp hoặc thu gọn fixture. Chúng mở ra bộ máy lexer và cross-reference bên dưới PdfReader và không cần thiết cho quy trình nhập thông thường.
| Ký hiệu | Tham số | Hành vi mặc định | Trả về | Ném ngoại lệ hoặc thất bại với | Ghi chú |
|---|---|---|---|---|---|
new PdfTokenizer(string $data, int $offset = 0) | Các byte PDF và offset ban đầu tùy chọn. | Bắt đầu tại offset 0. | PdfTokenizer | không có. | Trình phân tích từ vựng mức thấp. |
PdfTokenizer::getOffset() | không có. | Trả về offset byte hiện tại. | int | không có. | Trình trợ giúp chẩn đoán cho các lỗi của trình phân tích cú pháp. |
PdfTokenizer::setOffset(int $offset) | Offset byte. | Di chuyển con trỏ của tokenizer. | void | PdfParseException khi offset không hợp lệ. | Dùng cẩn thận; bên gọi sở hữu trạng thái của trình phân tích cú pháp. |
PdfTokenizer::isEof() | không có. | Kiểm tra xem con trỏ đã đến cuối hay chưa. | bool | không có. | Trình trợ giúp vòng lặp của trình phân tích cú pháp mức thấp. |
PdfTokenizer::skipWhitespace() | không có. | Bỏ qua khoảng trắng và chú thích của PDF. | void | không có. | Dùng trước khi đọc token. |
PdfTokenizer::readToken() | không có. | Đọc token vô hướng tiếp theo. | `string | int | float |
PdfTokenizer::readName() | không có. | Đọc một đối tượng name của PDF. | string | PdfParseException khi name sai định dạng. | Giải mã các ký tự escape trong name. |
PdfTokenizer::readLiteralString() | không có. | Đọc một chuỗi literal. | string | PdfParseException khi chuỗi sai định dạng. | Xử lý các dấu ngoặc đơn lồng nhau và các ký tự escape. |
PdfTokenizer::readHexString() | không có. | Đọc một chuỗi thập lục phân. | string | PdfParseException khi chuỗi hex sai định dạng. | Đệm thêm cho chuỗi hex có độ dài lẻ theo quy tắc của trình phân tích cú pháp. |
PdfTokenizer::readNumber() | không có. | Đọc một số nguyên hoặc số thực. | `int | float` | PdfParseException khi số không hợp lệ. |
PdfTokenizer::readKeyword() | không có. | Đọc một keyword của PDF. | string | PdfParseException khi keyword không hợp lệ. | Giữ việc phân tích keyword được tập trung một chỗ. |
PdfTokenizer::readDictionary() | không có. | Đọc một dictionary của PDF. | array | PdfParseException khi dictionary sai định dạng. | Được dùng cho các object, luồng và trailer. |
PdfTokenizer::readArray() | không có. | Đọc một array của PDF. | array | PdfParseException khi array sai định dạng. | Trình trợ giúp phân tích cú pháp đệ quy. |
PdfTokenizer::readValue() | không có. | Đọc bất kỳ giá trị PDF nào được hỗ trợ. | mixed | PdfParseException khi giá trị sai định dạng. | Primitive thông dụng của trình phân tích cú pháp. |
PdfTokenizer::readStreamData(int $length) | Độ dài luồng. | Đọc đúng số byte luồng được yêu cầu. | string | PdfParseException khi ranh giới luồng không hợp lệ. | Dùng sau khi phân giải độ dài luồng từ dictionary. |
PdfTokenizer::peek(int $length = 1) | Số byte. | Đọc trước mà không di chuyển con trỏ. | string | không có. | Hữu ích cho việc rẽ nhánh trong trình phân tích cú pháp. |
PdfTokenizer::searchBackward(string $pattern, int $startFrom = 0) | Mẫu cần tìm và offset bắt đầu tùy chọn. | Tìm ngược từ cuối hoặc từ offset được cung cấp. | `int | false` | không có. |
PdfTokenizer::readLine() | không có. | Đọc một dòng từ offset hiện tại. | string | không có. | Trình trợ giúp quét mức thấp. |
CrossRefParser::parseXRefTable(string $data, int $offset) | Các byte PDF và offset của bảng xref. | Phân tích cú pháp các mục của bảng cross-reference cổ điển. | array | PdfParseException khi dữ liệu xref sai định dạng. | API của trình phân tích cú pháp mức thấp. |
CrossRefParser::parseXRefStream(string $data, int $offset) | Các byte PDF và offset của luồng xref. | Phân tích cú pháp các mục của luồng cross-reference. | array | PdfParseException khi dữ liệu luồng sai định dạng. | Hỗ trợ các luồng xref của PDF hiện đại. |
Các factory tùy chọn và browser pool
Phần tiêu đề “Các factory tùy chọn và browser pool”EInvoiceServiceFactory phân giải lười các contract e-invoice tùy chọn của Premium và trả về null khi chúng không có. BrowserPool quản lý vòng đời của Chrome do bộ kết xuất sở hữu; chỉ quản lý trực tiếp nó trong các worker chạy lâu dài.
| Ký hiệu | Tham số | Hành vi mặc định | Trả về | Ném ngoại lệ hoặc thất bại với | Ghi chú |
|---|---|---|---|---|---|
EInvoiceServiceFactory::makeEmbedder() | không có. | Trả về null trừ khi đã cài phần hỗ trợ e-invoice của Premium Pro. | `EmbedderInterface | null` | Các lỗi khởi tạo gói tùy chọn. |
EInvoiceServiceFactory::makeValidator() | không có. | Trả về null trừ khi đã cài phần hỗ trợ kiểm tra của Premium Enterprise. | `ValidatorInterface | null` | Các lỗi khởi tạo gói tùy chọn. |
EInvoiceServiceFactory::makeDefaultProfile() | không có. | Trả về profile e-invoice mặc định khi có sẵn. | `ProfileInterface | null` | Các lỗi của gói tùy chọn. |
EInvoiceServiceFactory::makeSchematronRunner() | không có. | Trả về null trừ khi đã cài phần hỗ trợ Schematron của Premium Enterprise. | `SchematronRunnerInterface | null` | Các lỗi khởi tạo gói tùy chọn. |
new BrowserPool(ChromeRendererConfig $config, ?LoggerInterface $logger = null) | Cấu hình bộ kết xuất và logger tùy chọn. | Trình duyệt khởi động lười ở lần gọi getBrowser() đầu tiên. | BrowserPool | không có cho đến khi khởi động trình duyệt. | Trình trợ giúp vòng đời do bộ kết xuất sở hữu. |
BrowserPool::getBrowser() | không có. | Khởi động hoặc trả về thực thể trình duyệt Chrome hiện tại. | Browser | Các lỗi khởi động trình duyệt. | Trình trợ giúp vòng đời do bộ kết xuất sở hữu. |
BrowserPool::incrementRenderCount() | không có. | Tăng bộ đếm kết xuất và xoay vòng khi chính sách của pool yêu cầu. | void | Các lỗi vòng đời của trình duyệt. | Được dùng bởi các worker chạy lâu dài. |
BrowserPool::close() | không có. | Đóng thực thể trình duyệt được quản lý. | void | Các lỗi tắt trình duyệt. | Gọi khi tắt worker. |
Ghi chú phát triển
Phần tiêu đề “Ghi chú phát triển”- Bộ kết xuất không phải là sandbox trình duyệt cho HTML không đáng tin cậy. Hãy kiểm tra kích thước, chính sách tài nguyên và quyền của bên gọi trước khi kết xuất.
- Các API của trình phân tích cú pháp được cố ý giữ hẹp. Hãy dùng chúng để nhập kết quả của Chrome, không phải để sửa chữa PDF nói chung.
- Hãy đóng rõ ràng các bộ kết xuất trong các worker chạy lâu dài.