این نسخه بومیسازی شده، PDFlibPas DLL, ActiveX, and dylib Bindings: Calling One PDF Engine from Any Language را بر اساس مقاله پایه انگلیسی بهروزرسانی شده برای تیمهایی که با Delphi، PDF و نرمافزارهای اسناد کار میکنند، بررسی میکند
این صفحه، نسخه پایه بهروزرسانی شده را به نقاط کنترلی عملی برای طراحی، پیادهسازی و اعتبارسنجی تبدیل میکند
محتوای همگامسازی شده از نسخه پایه
مقاله پایه با زمینههای عملی، تصمیمات فنی و مثالهای ملموس گسترش یافته است، بنابراین این صفحه به جای یک خلاصه کوتاه، به عنوان یک راهنمای کاری عمل میکند
نکات مهم نسخه بهروزرسانی شده:
- ابتدا از فایلهای ورودی کوچک و قابل بازتولید استفاده کنید
- نام محصولات، APIها، فایلها و مقادیر ثابت را دستنخورده نگه دارید
- خروجی اعتبارسنج و نسخهها را همراه با فایل تست تولید شده ذخیره کنید
تصمیمات عملی پیادهسازی
با نوع فایل، نتیجه مورد انتظار، و خطایی که کاربر باید ببیند شروع کنید؛ سپس هر فراخوانی API را به یک نتیجه قابل بررسی پیوند دهید تا اعتبارسنجی، لاگها و پشتیبانی بتوانند وضعیت مشتری را بازتولید کنند
- ابتدا از فایلهای ورودی کوچک و قابل بازتولید استفاده کنید
- نام محصولات، APIها، فایلها و مقادیر ثابت را دستنخورده نگه دارید
- خروجی اعتبارسنج و نسخهها را همراه با فایل تست تولید شده ذخیره کنید
نکات کد و API
مثالهای کد برای مقایسه مستقیم با پروژههای Delphi، C++Builder و Lazarus/FPC بدون تغییر حفظ شدهاند
// Windows binding (PDFlibDLL64.dll): Stdcall, plain export names
function DLCreateLibrary: Integer; stdcall;
external 'PDFlibDLL64.dll' name 'DLCreateLibrary';
function DLReleaseLibrary(InstanceID: Integer): Integer; stdcall;
external 'PDFlibDLL64.dll' name 'DLReleaseLibrary';
function DLLoadFromFile(InstanceID: Integer;
FileName, Password: PWideChar): Integer; stdcall;
external 'PDFlibDLL64.dll' name 'DLLoadFromFile';
// macOS binding: same function, Cdecl, and an underscore prefix on the export
function DLCreateLibrary: Integer; cdecl;
external 'PDFlibDylib.dylib' name '_DLCreateLibrary';var
Inst, Doc: Integer;
begin
Inst := DLCreateLibrary; // one instance per worker thread
try
Doc := DLLoadFromFile(Inst, 'in.pdf', ''); // returns a DocumentID, 0 on failure
if Doc <> 0 then
begin
DLEncrypt(Inst, 'owner-secret', 'user-secret', 3,
DLEncodePermissions(Inst, 1, 0, 0, 0, 0, 0, 0, 1));
DLSaveToFile(Inst, 'out.pdf');
end;
finally
DLReleaseLibrary(Inst); // frees every document the instance owns
end;
end;var
P: PWideChar;
PageText: string;
begin
P := DLGetPageText(Inst, 7); // pointer into a library-owned buffer
PageText := P; // copy now; a later call may reuse the buffer
end;بررسی قبل از انتشار
فایل خروجی را با همان ابزارهایی بررسی کنید که مشتری یا مخزن اسناد استفاده خواهد کرد؛ نسخه کامپوننت، دادههای تست، نسخه اعتبارسنج و نتیجه مشاهده شده را ثبت کنید