İçeriğe geç

Belge meta verilerini ayarlama (başlık, yazar, dil)

Portable Document Format (PDF) meta veri alanlarını ayarlayın: başlık, yazar, konu, anahtar sözcükler ve oluşturucu. Belge dilini de aynı akış içinde belirleyin. Bu alanlar belge bilgilerini ve belge düzeyindeki meta verileri doldurur. PDF okuyucular bu verileri “Özellikler” panelinde gösterir; arama ve kataloglama araçları da bunları dizine ekleyebilir. Bu tarif examples/16-metadata.php dosyasını izler.

Terminal window
composer require nextpdf/core:^3

Meta veri, bir belge hakkındaki genel bilgileri ifade eder (ISO 32000-2 §14.3). PDF 2.0 bu bilgileri iki yerde saklar: eski belge bilgi sözlüğünde ve belge düzeyindeki bir Extensible Metadata Platform (XMP) meta veri akışında. PDF 2.0’da, Author dahil çoğu bilgi sözlüğü alanı, XMP lehine açıkça isteğe bağlı ve kullanımdan kaldırılmıştır.

Söz konusu HasMetadata trait’indeki ayarlayıcılar motorun meta veri modelini günceller; yazıcı da bunlara karşılık gelen girdileri üretir. setLanguage(), yardımcı teknolojilerin kullandığı katalog /Lang değerini ayarlar. Profil structural olarak belirlenir; çünkü belge bir treyler /ID ve bir meta veri tarihi taşır. Son geçiş, iki çalıştırmayı karşılaştırmadan önce her ikisini de normalleştirir.

NextPDF\Core\Concerns\HasMetadata (Document içine karıştırılmıştır):

  • setTitle(string $title): static
  • setAuthor(string $author): static
  • setSubject(string $subject): static
  • setKeywords(string $keywords): static
  • setCreator(string $creator): static
  • setLanguage(string $lang): static — Best Current Practice (BCP) 47 etiketi (en, zh-Hant-TW, ja)
  • isTaggedPdfEnabled(): bool — etkin etiketli mod için salt okunur erişimci
<?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";

Aşağıdaki tam örnek examples/16-metadata.php dosyasını yansıtır ve test düzeneği için NEXTPDF_COOKBOOK_OUTPUT konumuna yazar.

<?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";

Beklenen çıktı:

Wrote document with metadata
  • PDF 2.0, Info sözlüğü alanlarını kullanımdan kaldırır. Author ve diğer bilgi sözlüğü girdileri PDF 2.0’da isteğe bağlıdır ve kullanımdan kaldırılmıştır. PDF 2.0 tüketicisi için yetkili meta veri kaynağı XMP akışıdır. NextPDF uyumluluk için her ikisini de üretir; bu nedenle katı bir PDF 2.0 okuyucusunun Info alanlarını göstereceğini varsaymayın.
  • Dil, BCP-47 biçimindedir. zh-Hant-TW kullanın; zh_TW ya da Chinese kullanmayın. Geçersiz bir etiket olduğu gibi saklanır ve yardımcı teknolojiler tarafından göz ardı edilebilir. Motor, etiketi hızlı başarısızlık davranışıyla yalnızca etiketli PDF katı modu etkinleştirildiğinde doğrular.
  • setKeywords() tek bir dize alır. Virgülle ayrılmış terimler geçirin. Motor sizin için bir PHP dizisini ayrıştırmaz.
  • Etiketli PDF etkileşimi. Etiketli PDF daha sonra etkinleştirildiğinde, önceden yapılan açık bir setLanguage() çağrısı korunur. Yapısal dil, yalnızca hiçbiri ayarlanmadığında devreye giren bir yedektir.
  • Tarihler motor tarafından yönetilir. Oluşturma ve değiştirme zaman damgaları motorun saatinden gelir; yeniden üretilebilirlik düzeneği de bunları sabitler. Bu nedenle profil structural olur, bitwise değil.

Meta verilerin ayarlanması sabit zamanlı bir alan atamasıdır ve işleme maliyeti oluşturmaz. 1000 ms / 64 MB bütçesinin oldukça içinde kalır.

Meta veri açık metin olarak saklanır ve kolayca çıkarılabilir. Yayımlamayacağınız sırları, dahili tanımlayıcıları veya kişisel verileri başlık, yazar, konu, anahtar sözcükler ya da oluşturucu alanlarına yerleştirmeyin. Bu alanlar dosyayla birlikte taşınır ve arama araçları tarafından dizine eklenir. Dahili bir şablondan türetilmiş bir belgeyi dağıtmadan önce meta verileri temizleyin.

İfadeStandartMaddereference_id
Meta veri, bir belge hakkındaki genel bilgilerdir.ISO 32000-2§14.3
Info sözlüğündeki Author girdisi PDF 2.0’da isteğe bağlıdır ve kullanımdan kaldırılmıştır.ISO 32000-2§14.3
Belgeye, belge düzeyinde bir XMP meta veri akışı eklenebilir.ISO 32000-2§14.3

NextPDF, alıntılanan maddelerde açıklanan meta veri yapılarını üretir. Genel bir ISO 32000-2 uygunluğu iddiasında bulunmaz.