Tato lokalizovaná verze se věnuje tématu Delphi PDF Annotation Review with PDFium Component a bere aktualizovaný anglický článek jako technický základ pro týmy pracující s Delphi, PDF a dokumentovým softwarem
Stránka převádí aktualizovaný výchozí článek na konkrétní kontrolní body pro návrh, implementaci a ověření
Co bylo synchronizováno z anglického článku
Anglický výchozí text byl rozšířen o praktický kontext, technická rozhodnutí a konkrétní příklady, takže tato stránka funguje jako pracovní průvodce, nikoli jako krátké shrnutí
Důležité části aktualizovaného výchozího článku:
- Nejprve použijte malé reprodukovatelné vstupní soubory
- Názvy produktů, API, souborů a literálové hodnoty ponechte beze změny
- Uložte výstup validátoru a informace o verzích spolu s vytvořeným vzorkem
Praktická implementační rozhodnutí
Začněte typem souboru, očekávaným výstupem a chybovým stavem, který má vidět uživatel. Potom svažte každé volání API s ověřitelným výsledkem, aby validace, logování i podpora mohly zopakovat zákaznický scénář
- Nejprve použijte malé reprodukovatelné vstupní soubory
- Názvy produktů, API, souborů a literálové hodnoty ponechte beze změny
- Uložte výstup validátoru a informace o verzích spolu s vytvořeným vzorkem
Kód a body API
Ukázky kódu zůstávají beze změny, aby je vývojář mohl porovnat přímo s projekty Delphi, C++Builder a Lazarus/FPC
procedure TReviewPanel.BuildIndex;
var
PageNo, i: Integer;
A: TPdfAnnotation;
begin
FItems.Clear;
for PageNo := 1 to Pdf.PageCount do
begin
Pdf.PageNumber := PageNo;
for i := 0 to Pdf.AnnotationCount - 1 do
begin
A := Pdf.Annotation[i];
// Keep reviewer-relevant subtypes only; record the page and
// index pair because all later edits are addressed by it
if A.Subtype in [anText, anHighlight, anInk] then
FItems.Add(TReviewItem.Create(PageNo, i,
A.AuthorText, A.ContentsText, A.Rectangle, A.Color));
end;
end;
end;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 shiftedKontrola před vydáním
Výstupní soubor ověřte stejnými nástroji, jaké použije zákazník nebo archiv. Zaznamenejte verzi komponenty, testovací data, verzi validátoru a pozorovaný výsledek, aby šla pozdější regrese přesně dohledat
Doplňující technický rozbor
Tento rozšířený oddíl navazuje na článek Technický článek: Delphi PDF Annotation Review with PDFium Component v češtině a záměrně rozebírá stejný pracovní tok z pohledu týmu, který potřebuje mít jistotu, že rozhodnutí v generátoru, validátoru i v provozním logu zůstanou dohledatelné i po delší době. Anglický základ na navazující stránce přes hreflang ukazuje, proč není dostačující jen přeložit nadpisy; důležité je rozvést důvody, proč se má soubor považovat za hotový až ve chvíli, kdy jsou pravidla, výstup i kontrolní záznamy skutečně sladěné
U implementačních článků je klíčové oddělit návrh od ověření. Nejprve se určí typ souboru, očekávané chování a chyba, která má být vidět, potom se každé API volání sváže s výsledkem, který lze ověřit ve stejném scénáři znovu. To je praktické u PDF i tabulkových procesorů: kódové ukázky zůstávají beze změny, ale okolní text musí vysvětlit, proč se má logovat verze komponenty, identifikace šablony, vstupní data a stav validace spolu
Stejně důležité je zachovat pojmenování produktů, API, souborů a literálových hodnot přesně tak, jak se objevují v anglickém zdroji. Tím se drží společný referenční rámec pro vývoj, support i kontrolu kvality a zmenšuje se riziko, že by se z lokální verze stala jen volná parafráze bez konkrétního technického obsahu. Pokud je v článku uveden kód, jeho komentáře i tokeny mají zůstat nedotčené, protože právě ty spojují text s reálným projektem
Při čtení této stránky je užitečné přemýšlet i o tom, jak bude článek použit po zveřejnění. Dobrá validační poznámka popíše, co se testovalo, jaký nástroj vyhodnotil výsledek, které verze byly zapojené a kde je uložený důkaz o shodě nebo o selhání. Když později vznikne regresní problém, archivovaný report a související vstupní soubor jsou mnohem cennější než samotný dojem, že „to tehdy prošlo“.
Pro tuto lokalizovanou větev tedy platí jednoduché pravidlo: udržet hlavní rozhodnutí, ověřovací body a kontext kódu pohromadě tak, aby článek zůstal použitelný nejen při prvním čtení, ale i při pozdějším ladění, auditu a porovnání mezi verzemi. To je rozdíl mezi krátkým shrnutím a pracovním dokumentem, který má hodnotu i po několika releasích.
- Nejprve použijte malé reprodukovatelné vstupní soubory
- Názvy produktů, API, souborů a literálové hodnoty ponechte beze změny
- Ukládejte verzi komponenty, výsledky validátoru i vstupní data společně
- Kódové bloky a jejich komentáře zachovejte přesně tak, jak jsou ve zdroji