این نسخه بومیسازی شده، PDFlibPas Print Preview and Device-Context Output in Delphi را بر اساس مقاله پایه انگلیسی بهروزرسانی شده برای تیمهایی که با Delphi، PDF و نرمافزارهای اسناد کار میکنند، بررسی میکند
این صفحه، نسخه پایه بهروزرسانی شده را به نقاط کنترلی عملی برای طراحی، پیادهسازی و اعتبارسنجی تبدیل میکند
محتوای همگامسازی شده از نسخه پایه
مقاله پایه با زمینههای عملی، تصمیمات فنی و مثالهای ملموس گسترش یافته است، بنابراین این صفحه به جای یک خلاصه کوتاه، به عنوان یک راهنمای کاری عمل میکند
نکات مهم نسخه بهروزرسانی شده:
- ابتدا از فایلهای ورودی کوچک و قابل بازتولید استفاده کنید
- نام محصولات، APIها، فایلها و مقادیر ثابت را دستنخورده نگه دارید
- خروجی اعتبارسنج و نسخهها را همراه با فایل تست تولید شده ذخیره کنید
تصمیمات عملی پیادهسازی
با نوع فایل، نتیجه مورد انتظار، و خطایی که کاربر باید ببیند شروع کنید؛ سپس هر فراخوانی API را به یک نتیجه قابل بررسی پیوند دهید تا اعتبارسنجی، لاگها و پشتیبانی بتوانند وضعیت مشتری را بازتولید کنند
- ابتدا از فایلهای ورودی کوچک و قابل بازتولید استفاده کنید
- نام محصولات، APIها، فایلها و مقادیر ثابت را دستنخورده نگه دارید
- خروجی اعتبارسنج و نسخهها را همراه با فایل تست تولید شده ذخیره کنید
نکات کد و API
مثالهای کد برای مقایسه مستقیم با پروژههای Delphi، C++Builder و Lazarus/FPC بدون تغییر حفظ شدهاند
procedure TPreviewForm.PreviewBoxPaint(Sender: TObject);
begin
// these three are sticky library state, not per-call parameters:
FPdf.SetRenderDCOffset(FOffsetX, FOffsetY);
FPdf.SetRenderDCErasePage(1);
FPdf.SetRenderCropType(0);
FPdf.RenderPageToDC(FPreviewDpi, FCurrentPage, PreviewBox.Canvas.Handle);
end;var
Pdf: TPDFlib;
Virt: WideString;
Opt: Integer;
begin
Pdf := TPDFlib.Create;
try
if Pdf.LoadFromFile('report.pdf', '') <> 1 then
raise Exception.Create('load failed');
Virt := Pdf.NewCustomPrinter(Pdf.GetDefaultPrinterName);
Pdf.SetupPrinter(Virt, 1, 9); // setting 1 = paper, DMPAPER_A4
Pdf.SetupPrinter(Virt, 11, 1); // setting 11 = orientation, 1 = portrait
Opt := Pdf.PrintOptions(1, 1, 'Monthly Report'); // fit to paper, auto-rotate + center
Pdf.PrintDocument(Virt, 1, Pdf.PageCount, Opt);
finally
Pdf.Free;
end;
end;procedure ShowPrinterTruePreview(Pdf: TPDFlib; const Virt: WideString; Opt: Integer);
var
Data: AnsiString;
Strm: TMemoryStream;
Bmp: TBitmap;
begin
Data := Pdf.GetPrintPreviewBitmapToString(Virt, 1, Opt, 1200, 0);
Strm := TMemoryStream.Create;
try
Strm.WriteBuffer(PAnsiChar(Data)^, Length(Data));
Strm.Position := 0;
Bmp := TBitmap.Create;
try
Bmp.LoadFromStream(Strm);
PreviewImage.Picture.Assign(Bmp);
finally
Bmp.Free;
end;
finally
Strm.Free;
end;
end;بررسی قبل از انتشار
فایل خروجی را با همان ابزارهایی بررسی کنید که مشتری یا مخزن اسناد استفاده خواهد کرد؛ نسخه کامپوننت، دادههای تست، نسخه اعتبارسنج و نتیجه مشاهده شده را ثبت کنید