Ustawianie metadanych dokumentu (tytuł, autor, język)
W skrócie
Dział zatytułowany „W skrócie”Ustaw pola metadanych dokumentu w formacie Portable Document Format (PDF): tytuł, autora, temat, słowa kluczowe oraz twórcę. W tym samym przebiegu ustaw język dokumentu. Pola te trafiają do informacji o dokumencie oraz do metadanych na poziomie dokumentu. Czytniki PDF wyświetlają te dane w panelu „Properties”, a narzędzia wyszukiwania i katalogowania mogą je indeksować. Ten przepis jest zgodny z examples/16-metadata.php.
Instalacja
Dział zatytułowany „Instalacja”composer require nextpdf/core:^3Omówienie koncepcyjne
Dział zatytułowany „Omówienie koncepcyjne”Metadane to ogólne informacje o dokumencie (ISO 32000-2 §14.3). PDF 2.0 przechowuje je w dwóch miejscach: w starszym słowniku informacji o dokumencie oraz w strumieniu metadanych Extensible Metadata Platform (XMP) na poziomie dokumentu. W PDF 2.0 większość pól słownika informacji, w tym Author, jest jawnie opcjonalna i wycofana na rzecz XMP.
Settery cechy HasMetadata aktualizują model metadanych silnika, a moduł zapisujący generuje odpowiadające im wpisy. setLanguage() ustawia w katalogu pole /Lang, którego używają technologie wspomagające. Profil to structural, ponieważ dokument zawiera w przyczepce wpis /ID oraz datę metadanych. Końcowy etap normalizuje oba elementy przed porównaniem dwóch uruchomień.
Powierzchnia API
Dział zatytułowany „Powierzchnia API”NextPDF\Core\Concerns\HasMetadata (Document korzysta z tej cechy):
setTitle(string $title): staticsetAuthor(string $author): staticsetSubject(string $subject): staticsetKeywords(string $keywords): staticsetCreator(string $creator): staticsetLanguage(string $lang): static— znacznik Best Current Practice (BCP) 47 (en,zh-Hant-TW,ja)isTaggedPdfEnabled(): bool— akcesor tylko do odczytu dla aktywnego trybu otagowanego
Przykład kodu — szybki start
Dział zatytułowany „Przykład kodu — szybki start”<?php
declare(strict_types=1);
require_once __DIR__ . '/vendor/autoload.php';
use NextPDF\Core\Document;
$doc = Document::createStandalone();
$doc->setTitle('Quarterly Report Q1 2026');$doc->setAuthor('Reporting Team');$doc->setSubject('Financial summary');$doc->setKeywords('finance, quarterly, report');$doc->setCreator('NextPDF Core');$doc->setLanguage('en');
$doc->addPage();$doc->setFont('helvetica', '', 12);$doc->cell(0, 10, 'See File > Properties for the metadata.', newLine: true);
$doc->save(__DIR__ . '/with-metadata.pdf');echo "Wrote with-metadata.pdf\n";Przykład kodu — produkcja
Dział zatytułowany „Przykład kodu — produkcja”Poniższy pełny przykład odpowiada examples/16-metadata.php i zapisuje wynik do NEXTPDF_COOKBOOK_OUTPUT na potrzeby uprzęży testowej.
<?php
declare(strict_types=1);
require_once __DIR__ . '/vendor/autoload.php';
use NextPDF\Core\Document;
$metadata = [ 'Title' => 'NextPDF Metadata Example', 'Author' => 'NextPDF Documentation Team', 'Subject' => 'Demonstrating PDF 2.0 document metadata fields', 'Keywords' => 'nextpdf, pdf, metadata, document-properties, php', 'Creator' => 'NextPDF Core v3.0', 'Language' => 'en',];
$doc = Document::createStandalone();$doc->setTitle($metadata['Title']);$doc->setAuthor($metadata['Author']);$doc->setSubject($metadata['Subject']);$doc->setKeywords($metadata['Keywords']);$doc->setCreator($metadata['Creator']);$doc->setLanguage($metadata['Language']);
$doc->addPage();$doc->setFont('helvetica', 'B', 20);$doc->cell(0, 14, 'Document Metadata', newLine: true);$doc->ln(4);
$doc->setFont('helvetica', '', 11);$doc->cell(0, 8, 'The following fields are embedded in this PDF.', newLine: true);$doc->cell(0, 8, 'Open File > Properties in your reader to verify.', newLine: true);$doc->ln(6);
$doc->setFont('helvetica', 'B', 11);$doc->cell(40, 9, 'Field', border: true);$doc->cell(0, 9, 'Value', border: true, newLine: true);foreach ($metadata as $field => $value) { $doc->setFont('helvetica', 'B', 10); $doc->cell(40, 9, $field, border: true); $doc->setFont('helvetica', '', 10); $doc->cell(0, 9, $value, border: true, newLine: true);}
$out = getenv('NEXTPDF_COOKBOOK_OUTPUT');$doc->save($out !== false ? $out : __DIR__ . '/metadata.pdf');
echo "Wrote document with metadata\n";Oczekiwane dane wyjściowe:
Wrote document with metadataPrzypadki brzegowe i pułapki
Dział zatytułowany „Przypadki brzegowe i pułapki”- PDF 2.0 wycofuje pola słownika Info. Wpis
Authororaz pozostałe wpisy słownika informacji są opcjonalne i wycofane w PDF 2.0. Dla konsumentów PDF 2.0 miarodajnym źródłem metadanych jest strumień XMP. NextPDF generuje oba zestawy dla zachowania zgodności, dlatego nie zakładaj, że rygorystyczny czytnik PDF 2.0 udostępni pola słownika Info. - Język jest zgodny z BCP 47. Używaj
zh-Hant-TW, a niezh_TWaniChinese. Nieprawidłowy znacznik zostaje zapisany dosłownie i może zostać zignorowany przez technologie wspomagające. Silnik weryfikuje znacznik w trybie fail-fast tylko wtedy, gdy włączony jest tryb ścisły otagowanego PDF. setKeywords()przyjmuje pojedynczy ciąg znaków. Przekaż terminy rozdzielone przecinkami. Silnik nie rozdziela automatycznie tablicy PHP.- Interakcja z otagowanym PDF. Gdy otagowany PDF zostanie włączony później, jawne wywołanie
setLanguage()wykonane wcześniej zostaje zachowane. Język strukturalny jest jedynie rozwiązaniem zapasowym, gdy wcześniej nie ustawiono żadnego języka. - Datami zarządza silnik. Znaczniki czasu utworzenia i modyfikacji pochodzą z zegara silnika, a uprząż powtarzalności je przypina. Dlatego profil to
structural, a niebitwise.
Wydajność
Dział zatytułowany „Wydajność”Ustawianie metadanych polega na przypisaniu pola w stałym czasie i nie wiąże się z żadnym kosztem renderowania. Mieści się z dużym zapasem w budżecie 1000 ms / 64 MB.
Uwagi dotyczące bezpieczeństwa
Dział zatytułowany „Uwagi dotyczące bezpieczeństwa”Metadane są przechowywane jako zwykły tekst i łatwo je wyodrębnić. Nie umieszczaj w polach tytułu, autora, tematu, słów kluczowych ani twórcy sekretów, wewnętrznych identyfikatorów ani danych osobowych, które nie powinny być publiczne. Te pola podążają wraz z plikiem i są indeksowane przez narzędzia wyszukiwania. Wyczyść metadane przed rozpowszechnieniem dokumentu utworzonego na podstawie wewnętrznego szablonu.
Zgodność
Dział zatytułowany „Zgodność”| Stwierdzenie | Specyfikacja | Klauzula | reference_id |
|---|---|---|---|
| Metadane to ogólne informacje o dokumencie. | ISO 32000-2 | §14.3 | |
Wpis Author w słowniku Info jest opcjonalny i wycofany w PDF 2.0. | ISO 32000-2 | §14.3 | |
| Do dokumentu może zostać dołączony strumień metadanych XMP na poziomie dokumentu. | ISO 32000-2 | §14.3 |
NextPDF generuje struktury metadanych opisane w przytoczonych klauzulach. Nie deklaruje całościowej zgodności z ISO 32000-2.