ÐдиниÑна ÑÑÑаниÑа Ð4, изобÑазена Ñ Ñдобен за ÑеÑене маÑаб, е Ð¾Ñ Ð¿Ð¾ÑÑдÑка на нÑколко мегабайÑа 32-биÑова ÑаÑÑеÑна гÑаÑика. УмножеÑе Ñова по Ð´Ð¾Ð³Ð¾Ð²Ð¾Ñ Ð¾Ñ 400 ÑÑÑаниÑи и аÑиÑмеÑикаÑа пÑеÑÑава да бÑде абÑÑÑакÑна: ако изобÑазиÑе вÑÑка ÑÑÑаниÑа пÑедваÑиÑелно, Ñе изиÑкаÑе Ð¾Ñ Windows над един Ð³Ð¸Ð³Ð°Ð±Ð°Ð¹Ñ ÑаÑÑеÑни гÑаÑики, коиÑо поÑÑебиÑелÑÑ Ñе гледа екÑан по екÑан. ÐÑиложениеÑо или Ñе изÑеÑпи адÑеÑноÑо пÑоÑÑÑанÑÑво пÑи 32-биÑова компилаÑиÑ, или Ñе пÑекаÑа пÑÑвиÑе Ñи нÑколко ÑекÑнди в замÑÑзнало ÑÑÑÑоÑние, докаÑо гÑаÑиÑниÑÑ Ð¿ÑоÑеÑÐ¾Ñ (GPU) и паÑÑеÑÑÑ Ð½Ð° ÑÑÑаниÑи обÑабоÑÐ²Ð°Ñ ÑÑÑаниÑи, до коиÑо никой вÑе оÑе не е пÑевÑÑÑÑл. ЧеÑеÑÑÑ Ñ Ð½ÐµÐ¿ÑекÑÑнаÑо пÑевÑÑÑане ÑÑÑбва да Ñе ÑÑеÑа каÑо една дÑлга ленÑа Ð¾Ñ ÑÑÑаниÑи, но не може дейÑÑвиÑелно да дÑÑжи вÑиÑки ÑÑÑ Ð² памеÑÑа едновÑеменно.
Това напÑежение е ÑелиÑÑ Ð¿Ñоблем ÑÑк. PDFium VCL го ÑеÑава вÑÑÑе в TPdfView, Ñак Ñе по-голÑмаÑа ÑаÑÑ Ð¾Ñ ÑабоÑаÑа е в избоÑа на пÑÐ°Ð²Ð¸Ð»Ð½Ð¸Ñ Ñежим на показване и ÑазбиÑанеÑо на Ñова какво пÑави компоненÑÑÑ Ð²Ð¼ÐµÑÑо ваÑ. ЧаÑÑиÑе, коиÑо Ñой не пÑави авÑомаÑиÑно â?оÑазмеÑÑванеÑо на ÑÑÑаниÑиÑе за ÑеÑене и поддÑÑжанеÑо на бÑÑзоÑо пÑевÑÑÑане оÑзивÑиво â?Ñа меÑÑаÑа, кÑдеÑо малко код Ñи заÑлÑжава ÑÑилиÑÑа. Ðко вÑе оÑе ÑглобÑваÑе Ð¾ÐºÐ¾Ð»Ð½Ð¸Ñ Ð¸Ð½ÑеÑÑÐµÐ¹Ñ (ленÑа Ñ Ð¸Ð½ÑÑÑÑменÑи, миниаÑÑÑи, поле за ÑÑÑÑене), ÑÑководÑÑвоÑо за Ð±Ð¾Ð³Ð°Ñ Ð½Ð° ÑÑнкÑии ÑеÑÐµÑ Ð¿Ð¾ÐºÑива Ñази Ñема; ÑÑк пÑедмеÑÑÑ Ðµ ÑамоÑо пÑевÑÑÑане.
ÐÑоÑмлениеÑо е Ñежим на показване, а не панел Ð¾Ñ ÑаÑÑеÑни изобÑажениÑ
ÐнÑÑинкÑÑÑ Ð¿Ñи ÑабоÑа Ñ VCL ÑоÑми е да поÑÑÑÑиÑе кÑÑÐ¸Ñ Ð·Ð° пÑевÑÑÑане (scroll box) и да подÑедиÑе конÑÑолни елеменÑи за изобÑÐ°Ð¶ÐµÐ½Ð¸Ñ Ð² неÑ, по един за вÑÑка ÑÑÑаниÑа. ÐÑоÑивопоÑÑавеÑе Ñе на Ñова. Този дизайн ви пÑинÑждава да ÑпÑавлÑваÑе позиÑиониÑанеÑо на ÑÑÑаниÑиÑе, маÑемаÑикаÑа на пÑевÑÑÑанеÑо и ÑпÑавлениеÑо на памеÑÑа едновÑеменно, и Ñе пÑеоÑкÑиеÑе лоÑо вÑÑко едно Ð¾Ñ ÑÑÑ
. TPdfView веÑе моделиÑа докÑменÑа каÑо непÑекÑÑнаÑа поÑедиÑа Ð¾Ñ ÑÑÑаниÑи и излага оÑоÑмлениеÑо ÑÑез ÑвоеÑо ÑвойÑÑво DisplayMode.
Pdf := TPdf.Create(Self);
PdfView := TPdfView.Create(Self);
PdfView.Parent := Self;
PdfView.Align := alClient;
PdfView.Pdf := Pdf;
PdfView.DisplayMode := dmSingleContinuous; // one page wide, scrolls vertically
Pdf.FileName := 'contract.pdf';
Pdf.Active := True;
if not Pdf.Active then
ShowMessage('Could not open the document');
Това е ÑÑлаÑа наÑÑÑойка за непÑекÑÑнаÑо пÑевÑÑÑане. dmSingleContinuous подÑежда ÑÑÑаниÑиÑе в една веÑÑикална колона, каÑо ÑазÑÑоÑниÑÑа Ð¼ÐµÐ¶Ð´Ñ ÑÑÑ
Ñе обÑабоÑÐ²Ð°Ñ Ð²ÑÑÑеÑно, а изгледÑÑ Ñе пÑевÑÑÑа пÑез Ñази колона каÑо една повÑÑÑ
ноÑÑ. ÐÑма ÑпÑавление на оÑделни ÑÑÑаниÑи за ÑвÑÑзване и нÑма манипÑлаÑÐ¾Ñ Ð·Ð° пÑевÑÑÑане за пиÑане пÑи ноÑмална навигаÑиÑ. ÐбÑÑнеÑе внимание на пÑовеÑкаÑа на Pdf.Active Ñлед пÑиÑвоÑванеÑо: оÑваÑÑнеÑо на докÑÐ¼ÐµÐ½Ñ Ð½Ð¸ÐºÐ¾Ð³Ð° не Ñ
вÑÑÐ»Ñ Ð¸Ð·ÐºÐ»ÑÑение, Ñака Ñе повÑеден или заÑиÑен Ñ Ð¿Ð°Ñола Ñайл оÑÑÐ°Ð²Ñ Active в ÑÑÑÑоÑние False без изклÑÑение за ÑлавÑне, а ÑеÑеÑ, койÑо пÑопÑÑка Ñази пÑовеÑка, изобÑазÑва пÑазен панел и обвинÑва Ñебе Ñи.
СÑÑоÑо ÑвойÑÑво поддÑÑжа и ÑежимиÑе на ÑазгÑÑÑане. dmTwoPageContinuous поÑÑÐ°Ð²Ñ ÑÑÑаниÑиÑе една до дÑÑга, по две на Ñед, за ÑеÑене в ÑÑил книга, каквоÑо нÑкои докÑменÑи изиÑкваÑ; dmTwoPageContinuousWithCover пÑави ÑÑÑоÑо, но оÑÑÐ°Ð²Ñ Ð¿ÑÑваÑа ÑÑÑаниÑа ÑамоÑÑоÑÑелна каÑо коÑиÑа, Ñака Ñе оÑÑаналиÑе ÑазгÑÑÑÐ°Ð½Ð¸Ñ Ð´Ð° ÑÑÐ²Ð¿Ð°Ð´Ð°Ñ Ñ ÐµÑÑеÑÑвенаÑа ÑеÑно-неÑеÑна гÑаниÑа. Ð ÑÑиÑе Ñежима Ñе пÑевÑÑÑÐ°Ñ Ð½ÐµÐ¿ÑекÑÑнаÑо. ÐÑевклÑÑванеÑо Ð¼ÐµÐ¶Ð´Ñ ÑÑÑ
е Ñ ÐµÐ´Ð½Ð¾ пÑиÑвоÑване, коеÑо пÑави леÑно добавÑнеÑо на Ð¸Ð·Ð±Ð¾Ñ Ð½Ð° Ñежим по-кÑÑно.
Само видимиÑе ÑÑÑаниÑи Ñе ÑаÑÑеÑизиÑаÑ
ÐÑиÑинаÑа Ñова да ÑабоÑи за Ñайл Ð¾Ñ 400 ÑÑÑаниÑи е, Ñе колонаÑа е виÑÑÑална. TPdfView знае виÑоÑинаÑа на вÑÑка ÑÑÑаниÑа Ð¾Ñ Ð´ÑÑвоÑо на ÑÑÑаниÑиÑе на докÑменÑа, Ñака Ñе може да изÑиÑли обÑÐ¸Ñ ÑÐ°Ð·Ð¼ÐµÑ Ð½Ð° пÑевÑÑÑане и позиÑиÑÑа на вÑÑка ÑÑÑаниÑа, без да ÑаÑÑеÑизиÑа ниÑо. РаÑÑеÑизаÑиÑÑа â?ÑкÑпаÑа ÑÑÑпка, коÑÑо пÑевÑÑÑа поÑока Ð¾Ñ ÑÑдÑÑжание на ÑÑÑаниÑаÑа в пикÑели â?Ñе ÑлÑÑва Ñамо за ÑÑÑаниÑиÑе, коиÑо в моменÑа пÑеÑиÑÐ°Ñ Ð¿ÑозоÑеÑа за пÑеглед (viewport), плÑÑ Ð¼Ð°Ð»Ñк маÑж, за да бÑде ÑÑÑаниÑаÑа гоÑова, когаÑо Ñе поÑви на екÑана. ÐокаÑо пÑевÑÑÑаÑе надолÑ, ÑÑÑаниÑиÑе, влизаÑи в пÑозоÑеÑа за пÑеглед, Ñе изобÑазÑваÑ, а ÑÑÑаниÑиÑе, коиÑо го напÑÑкаÑ, оÑÐ²Ð¾Ð±Ð¾Ð¶Ð´Ð°Ð²Ð°Ñ ÑвоиÑе ÑаÑÑеÑни изобÑажениÑ. ÐамеÑÑа оÑÑава пÑопоÑÑионална на Ñова, коеÑо Ñе вижда на екÑана, а не на дÑлжинаÑа на докÑменÑа.
Това Ñи ÑÑÑÑва да Ñе ÑазбеÑе добÑе, заÑоÑо пÑÐ¾Ð¼ÐµÐ½Ñ Ð½Ð°Ñина, по койÑо ÑазÑÑждаваÑе за пÑоизводиÑелноÑÑÑа. ÐÑваÑÑнеÑо на докÑÐ¼ÐµÐ½Ñ Ð¾Ñ 400 ÑÑÑаниÑи е евÑино: Ñо анализиÑа ÑÑÑÑкÑÑÑаÑа, а не ÑÑдÑÑжаниеÑо. Ð Ð°Ð·Ñ Ð¾Ð´ÑÑ Ðµ на ниво ÑÑÑаниÑа и Ñе плаÑа оÑложено (lazily), в моменÑа, в койÑо Ñе пÑиближиÑе до ÑÑÑаниÑа пÑи пÑевÑÑÑане. ЧеÑеÑ, койÑо Ñе ÑÑеÑа мигновен пÑи оÑваÑÑне и плавен пÑи пÑевÑÑÑане, не вÑÑÑи по-малко ÑабоÑа каÑо ÑÑло; Ñой пÑоÑÑо ÑазпÑÐµÐ´ÐµÐ»Ñ ÑабоÑаÑа по дейÑÑвиÑÐµÐ»Ð½Ð¸Ñ Ð¿ÑÑ Ð½Ð° ÑеÑене на поÑÑебиÑÐµÐ»Ñ Ð¸ Ð¸Ð·Ñ Ð²ÑÑÐ»Ñ Ñова, коеÑо оÑÑава назад. ÐÑакÑиÑеÑкоÑо ÑледÑÑвие е, Ñе поÑÑи никога не ÑÑÑбва да налагаÑе пÑедваÑиÑелно изобÑазÑване на ÑÑÑаниÑи пÑед поÑÑебиÑелÑ. ÐÑÑавеÑе изгледа да ÑеÑи какво е видимо.
ÐÑазмеÑеÑе ÑÑÑаниÑиÑе по ÑиÑинаÑа, Ñлед коеÑо не пипайÑе маÑаба
ÐолонаÑа за ÑеÑене изиÑква ÑÑÑаниÑиÑе да бÑÐ´Ð°Ñ Ð¾ÑазмеÑени ÑпÑÑмо ÑиÑинаÑа на панела, а не да Ñа ÑикÑиÑани кÑм абÑолÑÑен маÑаб. FitMode пÑави ÑоÑно Ñова и пÑодÑлжава да го пÑави пÑи пÑеоÑазмеÑÑване на пÑозоÑеÑа.
PdfView.FitMode := pfmFitWidth; // each page fills the column width; height follows
ÐÑи pfmFitWidth компоненÑÑÑ Ð¿ÑеизÑиÑлÑва маÑаба вÑеки пÑÑ, когаÑо изгледÑÑ Ñе пÑеоÑазмеÑи, Ñака Ñе колонаÑа винаги запÑлва налиÑнаÑа ÑиÑина, а виÑоÑиниÑе на ÑÑÑаниÑиÑе и ÑÑоÑвеÑно обÑ
ваÑÑÑ Ð½Ð° пÑевÑÑÑане ÑÐ»ÐµÐ´Ð²Ð°Ñ Ð¾Ñ Ñова. Ðма един капан, койÑо ÑÐ»Ð°Ð²Ñ ÑазÑабоÑÑиÑиÑе: диÑекÑноÑо пÑиÑвоÑване на Zoom нÑлиÑа FitMode обÑаÑно до pfmNone. Това е ÑмиÑлено, ÑÑй каÑо ÑÑÑниÑÑ Ð¼Ð°Ñаб и авÑомаÑиÑноÑо напаÑване Ñа пÑоÑивоÑеÑиви намеÑениÑ, но ознаÑава, Ñе ÑлÑÑайно PdfView.Zoom := 1.0 нÑкÑде в кода ви ÑиÑ
омÑлком изклÑÑва напаÑванеÑо по ÑиÑина и ÑледваÑоÑо пÑеоÑазмеÑÑване ÑпиÑа да пÑеÑоÑмаÑиÑа изгледа. Ðко пÑедлагаÑе какÑо конÑÑол на маÑаба, Ñака и бÑÑон за напаÑване, ÑÑеÑиÑайÑе ги каÑо пÑевклÑÑване на Ñежими: задаванеÑо на едноÑо изÑиÑÑва дÑÑгоÑо и вие ÑеÑаваÑе кое да надделее.
Ðа конÑÑол на абÑолÑÑÐ½Ð¸Ñ Ð¼Ð°Ñаб, койÑо Ñе ÑÑеÑа еÑÑеÑÑвено, изгледÑÑ Ð¸Ð·Ð»Ð°Ð³Ð° маÑабиÑе за напаÑване каÑо ÑÑойноÑÑи, коиÑо можеÑе да пÑиложиÑе или покажеÑе: PageWidthZoom[PageNumber] вÑÑÑа маÑаба, койÑо би напаÑнал Ñази ÑÑÑаниÑа по ÑиÑинаÑа, а ÑÑоÑвеÑниÑÑ PageZoom напаÑва ÑÑлаÑа ÑÑÑаниÑа. ЧеÑенеÑо на Ñези ÑÑойноÑÑи е наÑинÑÑ Ð´Ð° попÑлниÑе Ð¼ÐµÐ½Ñ "Ðо ÑиÑина" / "ЦÑла ÑÑÑаниÑа", без да кодиÑаÑе ÑвÑÑди магиÑеÑки пÑоÑенÑи, коиÑо Ñе обÑÑÐºÐ²Ð°Ñ Ð¿Ñи пейзажни или извÑнгабаÑиÑни ÑÑÑаниÑи.
ÐоддÑÑжайÑе бÑÑзоÑо пÑевÑÑÑане оÑзивÑиво Ñ Ð¿ÑогÑеÑивно изобÑазÑване
ÐÑÑÑÑ Ð½Ð° изобÑазÑване по подÑазбиÑане ÑиÑÑва ÑÑÑаниÑаÑа докÑай, пÑеди да Ñе вÑÑне. Ðа една ÑÑÑаниÑа Ñова е добÑе. Ðо вÑеме на бÑÑзо пÑевÑÑÑане пÑез обемиÑÑ Ð´Ð¾ÐºÑÐ¼ÐµÐ½Ñ Ð¾Ð±Ð°Ñе не е: вÑÑка пÑеминаваÑа ÑÑÑаниÑа ÑÑаÑÑиÑа пÑлна ÑаÑÑеÑизаÑÐ¸Ñ Ð¸ ако поÑÑебиÑелÑÑ Ð¿ÑевÑÑÑа по-бÑÑзо, оÑколкоÑо ÑÑÑаниÑиÑе Ð¼Ð¾Ð³Ð°Ñ Ð´Ð° Ñе изобÑазÑÑ, Ñези пÑоÑеÑи Ñе наÑÑÑÐ¿Ð²Ð°Ñ Ð¸ панелÑÑ Ð·Ð°Ð¿Ð¾Ñва да наÑиÑа, ÑÑй каÑо Ñе вÑÑÑи ÑабоÑа за ÑÑÑаниÑи, коиÑо веÑе Ñа извÑн екÑана, когаÑо пÑоÑеÑÑÑ Ð¿ÑиклÑÑи. РеÑениеÑо е изобÑазÑванеÑо да бÑде пÑекÑÑваемо и да Ñе изоÑÑÐ°Ð²Ñ Ð² моменÑа, в койÑо поÑÑебиÑелÑÑ Ð¿ÑодÑлжи наÑаÑÑк.
RenderPageProgressive изобÑазÑва на ÑаÑÑи и пÑовеÑÑва Ñокен за оÑмÑна (cancellation token) на гÑаниÑаÑа на вÑÑка ÑаÑÑ, Ñака Ñе ÑекÑÑоÑо изобÑазÑване на ÑÑÑаниÑа, коÑÑо ÑокÑ-Ñо е била пÑевÑÑÑана извÑн екÑана, може да бÑде пÑекÑаÑено, вмеÑÑо да Ñе изпÑлнÑва докÑай.
type
TFormMain = class(TForm)
// ...
private
FRenderCancel: IPdfCancellationTokenSource;
procedure RenderPageToBitmap(PageNo: Integer; Bmp: TBitmap);
end;
procedure TFormMain.RenderPageToBitmap(PageNo: Integer; Bmp: TBitmap);
var
Status: TPdfProgressiveStatus;
begin
// Cancel whatever was rendering; the old token is now signaled.
if Assigned(FRenderCancel) then
FRenderCancel.Cancel;
FRenderCancel := TPdfCancellationTokenSource.New;
Pdf.PageNumber := PageNo;
Status := Pdf.RenderPageProgressive(Bmp, 0, 0, Bmp.Width, Bmp.Height,
FRenderCancel.Token);
case Status of
prsDone: ; // bitmap is complete, paint it
prsCancelled: Exit; // superseded, discard this result
prsFailed: ShowMessage('Render failed for page ' + IntToStr(PageNo));
end;
end;
ФоÑмаÑа, коÑÑо е Ð¾Ñ Ð·Ð½Ð°Ñение, е вÑÑнаÑаÑа ÑÑойноÑÑ. prsDone ознаÑава, Ñе ÑаÑÑеÑноÑо изобÑажение е напÑлно наÑиÑÑвано и е гоÑово за показване на екÑана; prsCancelled ознаÑава, Ñе по-нова позиÑÐ¸Ñ Ð½Ð° пÑевÑÑÑане е заменила Ñази ÑÑÑаниÑа, Ñака Ñе изÑ
вÑÑлÑÑе ÑаÑÑÐ½Ð¸Ñ ÑезÑлÑаÑ, вмеÑÑо да го показваÑе; prsFailed е Ñеална гÑеÑка на Ñази ÑÑÑаниÑа. ÐÑмÑнаÑа Ñе пÑовеÑÑва на гÑаниÑиÑе на ÑаÑÑиÑе, а не пÑеванÑивно, Ñака Ñе оÑаквайÑе деÑеÑки милиÑекÑнди закÑÑнение Ð¼ÐµÐ¶Ð´Ñ Ð¸Ð·Ð²Ð¸ÐºÐ²Ð°Ð½ÐµÑо на Cancel и дейÑÑвиÑелноÑо ÑпиÑане на изобÑазÑванеÑо. Това вÑе пак е много по-евÑино Ð¾Ñ Ð¾ÑÑавÑнеÑо на оÑÑаÑÑло изобÑазÑване на ÑÑла ÑÑÑаниÑа да блокиÑа опаÑкаÑа. ÐÑедаванеÑо на nil каÑо Ñокен води до пÑлно изобÑазÑване без пÑекÑÑване, коеÑо е пÑавилниÑÑ Ð¸Ð·Ð±Ð¾Ñ Ð·Ð° еднокÑаÑни изобÑазÑÐ²Ð°Ð½Ð¸Ñ ÐºÐ°Ñо пÑеглед пÑеди пеÑаÑ, кÑдеÑо нÑма ÑÑеÑÑ ÐºÐ°ÐºÐ²Ð¾ да Ñе извÑÑÑи оÑмÑна.
ÐогаÑо вмеÑÑо Ñова извикаÑе ÑÑнкÑиÑÑа RenderPage, коÑÑо вÑÑÑа нов Ð¾Ð±ÐµÐºÑ TBitmap, помнеÑе, Ñе извикваÑиÑÑ ÐºÐ¾Ð´ пÑиÑежава обекÑа и ÑÑÑбва да го оÑвободи Ñ Free. Ð ÑикÑл за пÑевÑÑÑане, койÑо ÑазпÑÐµÐ´ÐµÐ»Ñ ÑаÑÑеÑно изобÑажение на вÑÑка ÑÑÑаниÑа, забÑавÑнеÑо на Ñова е ÑÐµÑ Ð½Ð° памеÑ, койÑо ÑаÑÑе Ñ Ð²ÑÑка ÑÑÑаниÑа, коÑÑо поÑÑебиÑелÑÑ Ð¿Ñеминава â?коеÑо е ÑоÑно ÑÑивÑÑ Ð½Ð° неогÑаниÑена памеÑ, койÑо непÑекÑÑнаÑиÑÑ Ð´Ð¸Ð·Ð°Ð¹Ð½ ÑÑÑбваÑе да избегне. ÐзобÑазÑвайÑе в повÑоÑно използвано ÑаÑÑеÑно изобÑажение, кÑдеÑо е вÑзможно.
Ðакво полÑÑаваÑе в кÑайна ÑмеÑка
ЧеÑеÑÑÑ Ñ Ð½ÐµÐ¿ÑекÑÑнаÑо пÑевÑÑÑане Ñе оÑигÑÑÑва оÑновно Ð¾Ñ ÑÐ°Ð¼Ð¸Ñ ÐºÐ¾Ð¼Ð¿Ð¾Ð½ÐµÐ½Ñ. ÐзбиÑаÑе dmSingleContinuous за оÑоÑмлениеÑо, задаваÑе pfmFitWidth, Ñака Ñе колонаÑа да Ñе пÑеÑоÑмаÑиÑа ÑпÑÑмо пÑозоÑеÑа, и пÑовеÑÑваÑе Pdf.Active, за да може повÑеден Ñайл да ÑигнализиÑа ÑÑно за гÑеÑка. ÐдинÑÑвенаÑа ÑаÑÑ, коÑÑо Ñи ÑÑÑÑва да напиÑеÑе Ñами, е пÑекÑÑваемоÑо изобÑазÑване, ÑÑй каÑо един ÑеÑÐµÑ Ñе оÑенÑва по Ñова как Ñе дÑÑжи, когаÑо нÑкой дÑÑпне плÑзгаÑа за пÑевÑÑÑане до най-долнаÑа ÑаÑÑ Ð½Ð° дÑлÑг докÑÐ¼ÐµÐ½Ñ Ð¸ панелÑÑ Ð¸Ð»Ð¸ ÑÑпÑва да го наÑÑигне, или не. ÐÑиÑко Ñлед Ñова â?Ð¸Ð·Ð±Ð¾Ñ Ð½Ð° ÑекÑÑ Ð² ÑÑÑаниÑиÑе, подÑеÑÑаване на ÑÑÑÑенеÑо, дÑÑво Ñ Ð¾ÑмеÑки â?е инÑеÑÑейÑна ÑабоÑа, коÑÑо ÑÑои вÑÑÑ
Ñ Ñази повÑÑÑ
ноÑÑ Ð·Ð° пÑевÑÑÑане, а не вÑÑÑе в неÑ.
ÐнÑеÑÑейÑиÑе TPdfView, DisplayMode и RenderPageProgressive, показани ÑÑк, Ñа ÑаÑÑ Ð¾Ñ PDFium VCL компоненÑа за Delphi и Lazarus.