Veri Primitifleri ve XMP Metadata
Veri Primitifleri ve XMP Meta Verileri
Aspose.PDF FOSS for Python, üst düzey API — Document, Page ve açıklama ve form sınıflarını — aspose_pdf.engine.data içinde tanımlanan küçük bir primitif veri tipi kümesi üzerine inşa eder. Bunların çoğunu doğrudan oluşturmanız nadiren gerekir, ancak sürekli olarak özellik tipleri ve dönüş değerleri olarak ortaya çıkarlar: bir sayfanın kaynaklar sözlüğü PdfName değerleriyle anahtarlanır, renkler Color örnekleridir ve Document.xmp_metadata bir XmpPacket döndürür. Bu kılavuz nesne-kimlik primitiflerini, primitif değer sarmalayıcılarını, Color, metin-kodlama enumlarını ve XMP meta veri modelini tanıtır.
Nesne kimliği ve nesne kayıt defteri
PdfObjectID, bir PDF dosyasındaki dolaylı bir nesneyi object_number ve generation_number ile tanımlar. PdfObjectRegistry, nesneler serileştirilirken bu tanımlayıcıları atar ve izler, ve PdfTrailerable, bir PDF trailer’ına yazılan sözlüğü üretebilen nesneler için ortak sözleşmedir.
import aspose_pdf
from aspose_pdf.engine.data import PdfObjectRegistry
registry = PdfObjectRegistry()
# register() assigns a PdfObjectID to a serializable object
object_id = registry.register(some_pdf_object)
print(object_id.object_number, object_id.generation_number)
# get() resolves an object back from its PdfObjectID
resolved = registry.get(object_id)Primitif değer sarmalayıcıları
PdfNumber ve PdfName, ham PDF değerlerini tiplenmiş Python nesnelerinde sarar. PdfNumber, sayısal value değerini yerel bir Python int veya float olarak tutar; PdfName, bir name dizesi tutar ve düşük seviyeli nesne modelinde sözlük anahtarları için kullanılan tiptir — örneğin, bir sayfanın kaynak sözlüğündeki Font ve Resources anahtarları. PdfNull, PDF null nesnesini temsil eder.
import aspose_pdf
from aspose_pdf.engine.data.number import PdfNumber
from aspose_pdf.engine.data.types import PdfName
number = PdfNumber(3.14)
raw_value = number.value # already the native int/float you passed in
resources_key = PdfName("Resources")
font_key = PdfName("Font")Renk değerleri
Color, r, g, b ve a float özelliklerine sahip bir RGBA rengi temsil eder. İki argüman artı alfa yapıcısının yanı sıra, tam bir adlandırılmış renk fabrikası kümesi sunar — hem küçük harfli (aqua(), blue(), azure(), red(), green(), yellow(), black(), white(), gray()) hem de PascalCase takma adları (Aqua(), Blue(), Azure(), Red(), Green(), Yellow(), Black(), White(), Gray()).
import aspose_pdf
from aspose_pdf.engine.data.types import Color
custom = Color(r=0.2, g=0.4, b=0.8, a=1.0)
# Named factories return ready-made Color instances
highlight = Color.yellow()
border = Color.Black()Metin kodlamaları ve akış filtreleri
EncodingType (WIN_ANSI, MAC_ROMAN, MAC_EXPERT, PDF_DOC, UNICODE) bir metin kodlamasını tanımlar ve Encoding, eşleşen kodlama sabitlerini (UTF8, UTF16, LATIN1, WIN_ANSI) bir encode(text, encoding_type) yöntemiyle birlikte sunar; bu yöntem kodlanmış bytes‘yi döndürür. FilterType (NONE, FLATE_DECODE, LZW_DECODE, DCT_DECODE, JPX_DECODE, CCITT_FAX_DECODE, JBIG2_DECODE) sıkıştırılmış PDF içeriğine uygulanan akış filtresini tanımlar.
import aspose_pdf
from aspose_pdf.engine.data import Encoding, EncodingType, FilterType
encoded = Encoding.encode("Hello, world", EncodingType.WIN_ANSI)
# FilterType values identify how a content or image stream is compressed
current_filter = FilterType.FLATE_DECODEXMP meta verileri
XmpPacket, bir belgenin XMP meta veri paketinin bellek içi modelidir — Document.xmp_metadata tarafından döndürülen tiptir. fields‘nin sıralı bir koleksiyonunu tutar (her biri bir XmpField, XmpArray veya XmpProperty) ve bir XmpNamespaceProvider aracılığıyla ad alanı öneklerini çözer. Tiplenmiş getter ve setter’lar (get_value tarzı erişimciler gibi get_bool, get_int, get_real, get_date, get_localized_text, get_array ve bunların set_* eşdeğerleri) ad alanı öneki veya URI ve özellik adıyla bireysel özellikleri okur ve yazar.
import aspose_pdf
doc = aspose_pdf.Document()
doc.load_from("input.pdf")
xmp = doc.xmp_metadata # XmpPacket
title = xmp.get_localized_text("dc", "title", lang="x-default")
xmp.set_value("dc", "creator", "Jane Doe")
serialized = xmp.serialize()XmpStruct, kendi get(name) aramasıyla yapılandırılmış bir (rdf:parseType="Resource") değeri modellemektedir, XmpArray ise add(item) ve remove(item) içeren sıralı bir dizi modellemektedir ve XmpProperty, kendi add_qualifier/remove_qualifier niteleyicilerine sahip bir özelliktir. Dördü de bireysel değerler için aynı XmpField yapı taşını paylaşır.
İpuçları ve En İyi Uygulamalar
Document.xmp_metadata‘yi okuyarak belgeninXmpPacket‘ini elde edin; sıfırdan bir şey oluşturmak yerine — bu, yüklü dosyadan zaten doldurulmuş durumdadır.- Doğrudan
PdfNumber.valueokuyun — zaten yapıcıya gönderdiğiniz yerel Pythonintveyafloatiçeriyor;to_double()veyato_int()dönüşüm yöntemi yoktur. - Yaygın renkler için el yapımı
r/g/b/ademetleri yerine adlandırılmışColorfabrikalarını (Color.red(),Color.Black()vb.) tercih edin — çağrı noktalarında daha net okunurlar. - Gönderdiğiniz
EncodingTypeEncoding.encode()öğesini hedefin (yazı tipi, akış veya görüntüleyici) gerçekte beklediği kodlamayla eşleştirin; PDF metin kodlaması uyumsuzlukları bozuk çıktının yaygın bir kaynağıdır. PdfObjectRegistryvePdfObjectIDöğelerini düşük seviyeli, motor odaklı tipler olarak ele alın — çoğu uygulama kodu nesneleri doğrudan kaydetmek yerineDocumentvePagearacılığıyla belge içeriğini okur.
Yaygın Sorunlar
| Sorun | Sebep | Düzeltme |
|---|---|---|
PdfNumber karşılaştırmaları beklenmedik bir şekilde davranıyor | Sarmalayıcıyı sayısal değeri yerine karşılaştırmak | Karşılaştırmadan veya aritmetik işlem yapmadan önce .value okuyun |
XMP özelliği araması None döndürür | Yanlış prefix veya uri get_value-stil erişimcilerine gönderildi | Okumadan önce XmpNamespaceProvider.get_uri() / get_prefix() aracılığıyla ad alanı önekini doğrulayın |
Encoding.encode() sonrasında kodlanmış metin bozuk görünüyor | EncodingType, hedefin beklediğiyle eşleşmiyor | Hedef yazı tipi ya da görüntüleyiciyle eşleşen EncodingType değerini (WIN_ANSI, MAC_ROMAN, MAC_EXPERT, PDF_DOC, UNICODE) kullanın |
Özel PdfObjectRegistry nesneleri daha sonra çözülmez | get(), o kayıt örneğinde hiç register()-ed edilmemiş bir PdfObjectID ile çağrıldı | Çözmeden önce her nesneyi aynı PdfObjectRegistry örneğine kaydedin |
FAQ
PdfObjectID veya PdfObjectRegistry nesnelerini kendim oluşturmalı mıyım?
Nadiren. Bunlar motorun serileştirme sürecini destekler; çoğu uygulama kodu, düşük seviyeli nesne modeliyle çalışmadıkça bunları doğrudan örneklemez.
XmpField, XmpArray, XmpStruct ve XmpProperty arasındaki fark nedir?
XmpField tek bir skaler değerdir. XmpArray değerlerin sıralı bir listesidir, XmpStruct alanların yapılandırılmış (rdf:parseType="Resource") bir gruplamasıdır ve XmpProperty kendi niteleyicilerini de taşıyan bir değerdir.
Bir belgenin XMP üst verilerini nasıl alırım?
Yüklenmiş bir Document üzerindeki xmp_metadata özelliğini okuyun — bu, yerinde sorgulayabileceğiniz ve güncelleyebileceğiniz bir XmpPacket döndürür.
Küçük harf ve PascalCase Renk fabrikaları farklı renkler mi?
Hayır — Color.red() ve Color.Red() aynı rengi döndüren takma adlardır; her iki yazım da kolaylık sağlamak için sunulmuştur.
API Reference Özeti
| Sınıf / Metot | Açıklama |
|---|---|
PdfObjectID | Dolaylı bir PDF nesnesini nesne ve nesil numarasına göre tanımlar |
PdfObjectRegistry.register | Serileştirilen bir nesneye PdfObjectID atar |
PdfObjectRegistry.get | Önceden kaydedilmiş bir PdfObjectID üzerinden bir nesneyi çözer |
PdfTrailerable.get_dictionary | PDF trailer’ına yazılan sözlüğü üretir |
PdfNumber.value | Sarmalanmış sayısal değer, zaten yerel bir Python int veya float |
PdfName | Düşük seviyeli nesne modelinde sözlük anahtarları olarak kullanılan bir PDF ad değerini sarmalar |
PdfNull | PDF null nesnesini temsil eder |
Color | Adlandırılmış fabrikalar (red, blue, Black ve benzeri) ile RGBA renk değeri |
Encoding.encode | Metni bytes‘a bir EncodingType kullanarak kodlar |
EncodingType | Metin kodlama tanımlayıcısı: WIN_ANSI, MAC_ROMAN, MAC_EXPERT, PDF_DOC, UNICODE |
FilterType | İçerik ve görüntü akışları tarafından kullanılan akış sıkıştırma filtresi tanımlayıcısı |
XmpPacket | Bellek içi XMP meta veri paketi, Document.xmp_metadata tarafından döndürülür |
XmpField | Tek bir XMP özelliği değeri |
XmpArray | Sıralı bir XMP dizi değeri |
XmpStruct | Yapılandırılmış (rdf:parseType="Resource") XMP değeri |
XmpProperty | Kendi niteleyicilerini taşıyan bir XMP özelliği |
XmpNamespaceProvider | XMP ad alanı öneklerini URI’lere ve URI’lerden çözer |