HotXLS bir çalışma sayfasını otomatik etiketleme etkin olarak PDF'e aktardığında, alternatif metin taşıyan çalışma sayfası resimleri artık Unicode /Alt girdili, yoğun sayfa yerel işaretli içerik tanımlayıcılı ve kesin ana ağaç girdili bağımsız /Figure yapı elemanları olarak yayılır. Alternatif metni olmayan resimler dekoratif artifact olarak kalır ve grafikler de artifact olarak kalır. O kesin kapsam önemlidir: bilgilendirici görüntüleri bir ekran okuyucuya erişilebilir kılar ve tam PDF/UA uyumluluğu ile aynı şey değildir
Arkasındaki mekanikler, özellik betimlemesinden daha ilginçtir; çünkü ikisi, sessizce yapısı yanlış içeriği gösteren yapısal olarak geçerli bir PDF üreten türden ayrıntılardır
Neyi bilgilendirici görüntü sayılır?
Yalnızca boş olmayan bir AltText. TXLSXImage.AltText özelliği, resmin görsel olmayan özelliklerindeki OOXML descr özniteliğini gidiş dönüşte taşır; Excel, kullanıcının alt metin bölmesine yazdığı metni orada saklar. Dosyada yazarın resmi dekorasyon değil bilgi taşıyan bir şey olarak gördüğünü söyleyen tek sinyal odur ve çıkarıcının güvendiği tek sinyal de odur
İki yaklaşmış durum bilinçli olarak kabul edilmez. Açıklamadan ayrı saklanan başlık alanı bir ikame değildir: başlık, nesnenin adıdır; metinsel eşdeğeri değildir ve onu /Alt girdisine yükseltmek, bir ekran okuyucuya "Picture 3" duyururken otomatik bir denetimi geçen bir belge üretirdi. Boş bir açıklama da bir yer tutucuyla doldurulacak boşluk değildir; görüntünün artifact olarak kalması demektir ve bir logo ya da ayraç çizgi için doğru sonuç odur. Grafikler de şimdilik artifact olarak kalır; çünkü bir grafiğin metinsel eşdeğeri verisidir ve serilerden birini sentezlemek çıkarma değil icat olurdu
uses
lxHandleX, lxPDF;
var
Book: TXLSXWorkbook;
Sheet: TXLSXWorksheet;
Exporter: TXLSPDFExport;
I: Integer;
begin
Book := TXLSXWorkbook.Create;
try
Book.Open('regional-review.xlsx');
Sheet := Book.Sheets.ByPos[0];
// Dışa aktarmadan önce denetleyin: açıklaması olmayan bir görüntü
// dekoratif artifact olarak dışa aktarılır
for I := 0 to Sheet.Images.Count - 1 do
if Sheet.Images[I].AltText = '' then
Sheet.Images[I].AltText := DescribeImage(Sheet.Images[I].Name);
Exporter := TXLSPDFExport.Create;
try
Exporter.TagMode := xlsPdfTagsAutomatic;
Exporter.DocumentLanguage := 'en-US';
Exporter.SaveAsPDF(Sheet, 'regional-review.pdf');
finally
Exporter.Free;
end;
finally
Book.Free;
end;
end;
Sayfa neden tek bir MCID ayırıcısına ihtiyaç duyar?
Çünkü ana ağaç, işaretli içerik tanımlayıcısıyla indekslenen bir dizidir ve iki ayırıcı, aynı yuvayı talep eden iki girdi üretir. Etiketli PDF, içeriği yapıya iki yönlü bağlar. İçerik tarafında sayfa içerik akışının bir aralığı, o sayfa içinde benzersiz bir /MCID numarası taşıyan BDC ve EMC operatörlerine sarılır. Yapı tarafında sayfa sözlüğü, belge /ParentTree ağacının bir satırını adlandıran bir /StructParents anahtarı taşır ve o satır, n indeksindeki elemanı MCID n değerinin sahibi olan yapı elemanı olan bir dizidir
Bir çalışma sayfası sayfası tablo hücreleri ve artık şekiller içerir. Hücre etiketleyicisi tanımlayıcılarını sıfırdan sayarsa ve şekil etiketleyicisi de sıfırdan sayarsa, ilk şekil ilk hücrenin zaten sahibi olduğu yuvayı talep eder. Ortaya çıkan dosyada bir ayrıştırıcının reddetmesine yetecek kadar bozuk hiçbir şey yoktur: yapı ağacı sağlamdır, işaretli içerik dengelidir ve doğrulayıcı bir ana ağaçlı belge görür. Ekran okuyucunun aldığı şey, görüntü olarak duyurulan bir tablo hücresi ya da bir hücrenin metniyle duyurulan bir görüntüdür. Çıkarıcı bu nedenle her iki etiketleyicinin paylaştığı tek bir sayfa düzeyi sayaçtan ayırır ve sayfa kaydını yalnızca sayfa nesne numarası bilindikten sonra dondurur; çünkü ana ağaç satırı, atıf yaptığı sayfa bir kimliğe sahip olmadan yazılamaz
Figure, görünür örneğin bütününü sarmalıdır
Naif yerleştirme, görüntü XObject'ini çağıran Do operatörünü sarmaktır; çünkü resmi çizen operatör odur. Yeterli değildir. Bir çalışma sayfası resmi sıklıkla arkasında bir gölgeyle ve çevresinde bir kırpma yoluyla çizilir ve o işaretler görünür nesnenin parçasıdır. /Figure kapsamının dışında bırakıldıklarında işaretsiz içeriğe dönüşürler; ki bir yapı denetiminin işaretlediği durum tam olarak odur
Bu yüzden işaretli içerik kapsamı gölgeden önce açılır ve görüntü çiziminden sonra kapanır; kırpma da kapsanır. Paylaşım, paylaşımın doğru olduğu yerde korunur: aynı resim yükünü gösteren iki hücre yine de tek bir görüntü XObject'ine atıf yapar, çünkü o bir kaynak düzeyi iyileştirmedir ve anlamla ilgisi yoktur. Her görünür örneğin aldığı şey kendi MCID değeri ve kendi yapı elemanıdır; çünkü aynı logonun farklı yerlerdeki iki geçişi, bir okuyucunun karşılaştığı iki şeydir. Görüntü yerleştirme ve bu nesneleri konumlandıran EMU geometrisi görüntü geometrisi makalesinde kapsanır
Bir çalışma sayfası sayfasında okuma sırası
Okuma sırası, çıkarıcının karar vermek zorunda olduğu bir karardır; çünkü bir elektronik tabloda belgedeki gibi yazılmış bir akış yoktur. Benimsenen kural kararlı ve açıklaması kolaydır: her sayfada önce tablo gelir, sonra çizim sırasıyla şekiller. Böylece okuyucu, çizim nesnelerinin dosyada tesadüfen kapladığı konumlara göre görüntüler iç içe geçmiş biçimde değil, sayfanın tablo içeriğini ve sonra görüntülerini duyar
O sıra belge başına değil sayfa başınadır; bu, düzinelerce sayfaya sayfalanan bir çalışma kitabında önemlidir: her sayfanın yapı dalı kendi içinde tamdır; dolayısıyla sayfalar arasında ilerleyen bir okuyucu önceki bir tabloya geri atlamaz. Sayfanın en başta nasıl sayfalanacağı üzerinde denetime ihtiyacınız varsa sayfa kurulumu ile baskı alanı etkileşimi koruma ve sayfa kurulumu makalesinde betimlenir
Bunun sertifikalandırdığı ve sertifikalandırmadığı
Bilgilendirici resimlerin yazarın sağladığı açıklamayla destekleyici teknolojiye ulaştığını ve içeriden yapıya eşlemenin yalnızca var olmakla kalmayıp doğru olduğunu sertifikalandırır. Çıktıyı PDF/UA uyumlu yapmaz ve onu bu şekilde betimlemek uygulamanın taşıyamayacağı bir iddia olurdu: grafikler hâlâ artifacttır ve tam bir uyumluluk beyanı her yapı türünün, her fontun ve belge metadata bilgisinin bütünü denetimini gerektirir
Gereksiniminiz erişilebilirlik iyileştirmesi değil arşiv ya da uyumluluk profiliyse o, farklı bir dışa aktarma yapılandırması ve farklı bir denetim kümesidir; PDF/A arşiv dışa aktarma makalesinde betimlenir. İkisi birleşir ama farklı denetçilere cevap verir
Bir raporlama hattı için pratik bir öneri: alternatif metni, çalışma kitabının üretildiği noktada denetleyin, dışa aktarma zamanında değil. Üretici, her grafik görüntüsünün ya da gömülü şemanın neyi temsil ettiğini bilir ve gerçek bir açıklamayı AltText alanına yazabilir; dışa aktarma zamanı geçişi size yalnızca bir açıklamanın eksik olduğunu söyleyebilir. HotXLS, XLS, XLSX, ODS ve CSV'yi Excel bağımlılığı olmadan Delphi ve C++Builder'dan yerel olarak okur ve yazar; dışa aktarma yapılandırma seçenekleri HotXLS Delphi spreadsheet component ürün sayfasında listelenir