Veri Primitifleri ve XMP Metadata

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_DECODE

XMP 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 belgenin XmpPacket‘ini elde edin; sıfırdan bir şey oluşturmak yerine — bu, yüklü dosyadan zaten doldurulmuş durumdadır.
  • Doğrudan PdfNumber.value okuyun — zaten yapıcıya gönderdiğiniz yerel Python int veya float içeriyor; to_double() veya to_int() dönüşüm yöntemi yoktur.
  • Yaygın renkler için el yapımı r/g/b/a demetleri yerine adlandırılmış Color fabrikalarını (Color.red(), Color.Black() vb.) tercih edin — çağrı noktalarında daha net okunurlar.
  • Gönderdiğiniz EncodingType Encoding.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.
  • PdfObjectRegistry ve PdfObjectID öğelerini düşük seviyeli, motor odaklı tipler olarak ele alın — çoğu uygulama kodu nesneleri doğrudan kaydetmek yerine Document ve Page aracılığıyla belge içeriğini okur.

Yaygın Sorunlar

SorunSebepDüzeltme
PdfNumber karşılaştırmaları beklenmedik bir şekilde davranıyorSarmalayıcıyı sayısal değeri yerine karşılaştırmakKarşılaştırmadan veya aritmetik işlem yapmadan önce .value okuyun
XMP özelliği araması None döndürürYanlış prefix veya uri get_value-stil erişimcilerine gönderildiOkumadan ö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üyorEncodingType, hedefin beklediğiyle eşleşmiyorHedef 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ülmezget(), 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 / MetotAçıklama
PdfObjectIDDolaylı bir PDF nesnesini nesne ve nesil numarasına göre tanımlar
PdfObjectRegistry.registerSerileştirilen bir nesneye PdfObjectID atar
PdfObjectRegistry.getÖnceden kaydedilmiş bir PdfObjectID üzerinden bir nesneyi çözer
PdfTrailerable.get_dictionaryPDF trailer’ına yazılan sözlüğü üretir
PdfNumber.valueSarmalanmış sayısal değer, zaten yerel bir Python int veya float
PdfNameDüşük seviyeli nesne modelinde sözlük anahtarları olarak kullanılan bir PDF ad değerini sarmalar
PdfNullPDF null nesnesini temsil eder
ColorAdlandırılmış fabrikalar (red, blue, Black ve benzeri) ile RGBA renk değeri
Encoding.encodeMetni bytes‘a bir EncodingType kullanarak kodlar
EncodingTypeMetin 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ı
XmpPacketBellek içi XMP meta veri paketi, Document.xmp_metadata tarafından döndürülür
XmpFieldTek bir XMP özelliği değeri
XmpArraySıralı bir XMP dizi değeri
XmpStructYapılandırılmış (rdf:parseType="Resource") XMP değeri
XmpPropertyKendi niteleyicilerini taşıyan bir XMP özelliği
XmpNamespaceProviderXMP ad alanı öneklerini URI’lere ve URI’lerden çözer

Ayrıca Bakınız

 Türkçe