Teknik makale

PDFium Component: Delphi'de açıklama inceleme arayüzü

Delphi ve C++Builder uygulamalarına PDFium VCL Component iş akışlarını, Lazarus/FPC projelerine PDFium LCL Component iş akışlarını; görüntüleme, render, formlar, yazdırma, preflight raporları ve standart odaklı doğrulama için kaynak kodlu bileşenlerle ekleyin.

Bu yazı ekipler için review, markup, approval, or quality-control panels to a Delphi PDF viewer için hazırlanmıştır. annotation review UI konusunu tek bir bileşen çağrısı olarak değil, üretim düzeyinde belge mühendisliği olarak ele alır.

Pratik risk şudur: sayfa döndürme, yazarlık, yanıtlar, gizli durumlar veya koordinat dönüşümleri tutarlı şekilde ele alınmadığında açıklamalar gösterilmesi kolay ama güvenilmesi zordur. Bu nedenle akışın yazılı sözleşmeye, gözlemlenebilir tanılara ve gerçekçi regresyon dosyalarına ihtiyacı vardır.

Mimari kararlar

İnceleme durumunu sayfa oluşturmadan ayırın. hangi açıklama türlerinin görüntülenebileceği, filtrelenebileceği, yanıtlanabileceği, dışa aktarılabileceği veya kilitlenebileceği / yazar kimliği, durum etiketleri ve inceleme verisinin PDF içinde saklanıp saklanmadığı

  • hangi açıklama türlerinin görüntülenebileceği, filtrelenebileceği, yanıtlanabileceği, dışa aktarılabileceği veya kilitlenebileceği
  • yazar kimliği, durum etiketleri ve inceleme verisinin PDF içinde saklanıp saklanmadığı
  • döndürme, yakınlaştırma, kırpma kutuları ve yüksek DPI ekranlar için koordinat dönüşümü
  • imzalı, korumalı veya harici olarak yönetilen belgeler için salt okunur mod

Uygulama akışı

İnceleme işlemlerini göstermeden önce açıklamaları dizine ekleyin. Aşağıdaki sıra, iş akışını Delphi ve C++Builder ekipleri için incelenebilir tutar.

  1. sayfa bindirmelerini çizmeye başlamadan önce açıklama meta verilerini bir inceleme dizinine yükleyin
  2. sayfa koordinatlarını normalleştirin ve her açıklama için sabit bir başvuru saklayın
  3. sayfaları yeniden ayrıştırmadan yazar, durum, tür, sayfa ve tarihe göre filtreler uygulayın
  4. inceleme listesindeki seçimi görünüm alanı gezinmesine ve vurgulama davranışına bağlayın
  5. görüntüleyici dışı iş akışları için yeterli bağlamla inceleme özetlerini dışa aktarın

Doğrulama kanıtı

İş birliğini destekleyen inceleme kanıtı. Bu alanları çıktı veya destek kaydıyla birlikte saklayın.

  • annotation type, author, page, bounds, status, and reply count
  • coordinate transform used for the current zoom, rotation, and crop box
  • permission decision when a user attempts to edit a locked or signed document
  • exported review summary with stable page references

Coordinates and intent matter

Profesyonel bir inceleme arayüzü, açıklamaları yazarlar, tarihler, sayfa konumları, görünüm, yanıtlar, durum ve izinlerle yapılandırılmış veri olarak ele alır. Kanvas görünümü bu modelin yalnızca bir sunumudur.

Müşteri tarafından görülen davranış

Kullanıcılar dahili çağrı sırasını görmez. Dosyanın açılıp açılmadığını, doğrulanıp doğrulanmadığını, yazdırılıp yazdırılmadığını, düzenlenip düzenlenmediğini, içe aktarılıp aktarılmadığını veya reddedilip reddedilmediğini görürler. İş akışı, açıklama inceleme arayüzü sonuçlarını kullanıcıların üzerinde işlem yapabileceği durumlara dönüştürmelidir.

  • sayfa bindirmelerini çizmeye başlamadan önce açıklama meta verilerini bir inceleme dizinine yükleyin
  • sayfa koordinatlarını normalleştirin ve her açıklama için sabit bir başvuru saklayın
  • sayfaları yeniden ayrıştırmadan yazar, durum, tür, sayfa ve tarihe göre filtreler uygulayın
  • rotated pages can make highlights appear detached from the original text
  • popup annotations and replies may be missed when only visible marks are scanned

Mühendislik inceleme notları: annotation review UI

Özelliğin bir demoyu aşıp sürüm, destek ve müşteri eskalasyonu sırasında savunulabilir olduğunu doğrulamak için bu inceleme notlarını kullanın.

  • Karar: hangi açıklama türlerinin görüntülenebileceği, filtrelenebileceği, yanıtlanabileceği, dışa aktarılabileceği veya kilitlenebileceği. Uygulama baskı noktası: sayfa koordinatlarını normalleştirin ve her açıklama için sabit bir başvuru saklayın. Kabul kanıtı: permission decision when a user attempts to edit a locked or signed document. Regresyon tetikleyicisi: annotations on cropped pages need coordinates tied to the intended page box
  • Karar: yazar kimliği, durum etiketleri ve inceleme verisinin PDF içinde saklanıp saklanmadığı. Uygulama baskı noktası: sayfaları yeniden ayrıştırmadan yazar, durum, tür, sayfa ve tarihe göre filtreler uygulayın. Kabul kanıtı: exported review summary with stable page references. Regresyon tetikleyicisi: rotated pages can make highlights appear detached from the original text
  • Karar: döndürme, yakınlaştırma, kırpma kutuları ve yüksek DPI ekranlar için koordinat dönüşümü. Uygulama baskı noktası: inceleme listesindeki seçimi görünüm alanı gezinmesine ve vurgulama davranışına bağlayın. Kabul kanıtı: annotation type, author, page, bounds, status, and reply count. Regresyon tetikleyicisi: popup annotations and replies may be missed when only visible marks are scanned
  • Karar: imzalı, korumalı veya harici olarak yönetilen belgeler için salt okunur mod. Uygulama baskı noktası: görüntüleyici dışı iş akışları için yeterli bağlamla inceleme özetlerini dışa aktarın. Kabul kanıtı: coordinate transform used for the current zoom, rotation, and crop box. Regresyon tetikleyicisi: read-only review must still allow selection, navigation, filtering, and export
  • Karar: hangi açıklama türlerinin görüntülenebileceği, filtrelenebileceği, yanıtlanabileceği, dışa aktarılabileceği veya kilitlenebileceği. Uygulama baskı noktası: sayfa bindirmelerini çizmeye başlamadan önce açıklama meta verilerini bir inceleme dizinine yükleyin. Kabul kanıtı: permission decision when a user attempts to edit a locked or signed document. Regresyon tetikleyicisi: annotations on cropped pages need coordinates tied to the intended page box
  • Karar: yazar kimliği, durum etiketleri ve inceleme verisinin PDF içinde saklanıp saklanmadığı. Uygulama baskı noktası: sayfa koordinatlarını normalleştirin ve her açıklama için sabit bir başvuru saklayın. Kabul kanıtı: exported review summary with stable page references. Regresyon tetikleyicisi: rotated pages can make highlights appear detached from the original text
  • Karar: döndürme, yakınlaştırma, kırpma kutuları ve yüksek DPI ekranlar için koordinat dönüşümü. Uygulama baskı noktası: sayfaları yeniden ayrıştırmadan yazar, durum, tür, sayfa ve tarihe göre filtreler uygulayın. Kabul kanıtı: annotation type, author, page, bounds, status, and reply count. Regresyon tetikleyicisi: popup annotations and replies may be missed when only visible marks are scanned

Sınır durumları

  • rotated pages can make highlights appear detached from the original text
  • popup annotations and replies may be missed when only visible marks are scanned
  • read-only review must still allow selection, navigation, filtering, and export
  • annotations on cropped pages need coordinates tied to the intended page box

Delphi / C++Builder notes

PDFium Component should sit behind a small service boundary that receives files, streams, profiles, and credentials, then returns output paths, warnings, metrics, and validation status. Important terms include annotation, markup, reply, page bounds, rotation, review status.

Delphi kod örneği

Aşağıdaki Delphi taslağı bu konu için pratik bir servis sınırını gösterir. Politika kontrollerini, günlüklemeyi ve doğrulamayı dar ürün çağrısı bölümünün dışında tutarak akışı test edilebilir bırakın.

procedure TReviewForm.LoadAnnotationQueue(const FileName: string);
var
  PageNo: Integer;
begin
  PdfView.LoadFromFile(FileName);
  FQueue.Clear;
  for PageNo := 1 to PdfView.PageCount do
    AddPageAnnotationsToQueue(PdfView, PageNo, FQueue);
  FQueue.SortByAuthorAndDate;
  ShowNextReviewItem;
end;

Üretim kontrol listesi

  • İş akışını boş bir dosyada, normal bir müşteri dosyasında ve en kötü durum dosyasında çalıştırın
  • Oluşturulan PDF'yi hedef görüntüleyici, doğrulayıcı, yazıcı veya aşağı akış uygulamasıyla açın
  • Ürün sürümünü, profil sürümünü, giriş karmasını, çıktı yolunu, geçen süreyi ve uyarı sayısını kaydedin
  • Parolaları, sertifikaları, geçici dosyaları ve müşteri verilerini açık saklama kuralları altında tutun
  • Bir müşteri dosyası yeni bir uç durum ortaya çıkardığında regresyon belgeleri ekleyin

Ürün belgeleri

PDFium Component

Ek kod örnekleri

A := Pdf.Annotation[Item.Index];
A.HasColor := True;
A.Color := $0000B0FF;       // amber
A.ColorAlpha := 160;
try
  Pdf.Annotation[Item.Index] := A;
except
  on EPdfError do
  begin
    // The annotation owns a pre-rendered /AP stream; the dictionary
    // color alone cannot change what viewers paint
    Item.AppearanceLocked := True;
    StatusBar.SimpleText := 'Color is fixed by the annotation appearance';
  end;
end;
Pdf.PageNumber := Item.PageNo;
Pdf.DeleteAnnotation(Item.Index);   // raises EPdfError on failure
Bmp := Pdf.RenderPage(0, 0, ViewWidth, ViewHeight, ro0, [reAnnotations]);
try
  PaintPageBitmap(Bmp);
finally
  Bmp.Free;  // RenderPage hands bitmap ownership to the caller
end;
RebuildPageEntries(Item.PageNo);  // indices after Item.Index shifted