با سلام خدمت مهندسان نرم افزار:11:
می خواستم بدونم چه جوری میشه تو برنامه های دلفی فایل های Pdf رو باز کرد و مرور کرد و بست
واسه پروژم می خوام .
Printable View
با سلام خدمت مهندسان نرم افزار:11:
می خواستم بدونم چه جوری میشه تو برنامه های دلفی فایل های Pdf رو باز کرد و مرور کرد و بست
واسه پروژم می خوام .
یه راهش اینه که اگر adobe acrobat reader رو سیستمت نصب باشه با استفاده از چندتا تابع دنبال فایل exe اون بگردی
و با این برنامه بازش کنی.
از اين صفحه مي تونيد اطلاعاتي رو بدست بيارين
کد:http://www.torry.net/quicksearchd.php?String=pdf&Title=Yes
سلام
ميتونيد از اين كامپوننتهايي مثل :
Gnostice PDFtoolkit VCL ProPlus 2.5
XpdfViewer Activex 3.2.0.0
eXPert PDF ViewerX 2.0.420.0
و ...
استفاده كنيد.
سلام
اگر acrobat reader روی سیستم نصب هست، از اینجا:
بعد از تب ActiveX میتونی vcl رو روی فرم قرار بدیکد:
Delphi7 -> Component -> Import AvtiveX control -> Acrobat Control for ActiveX -> Install...
موفق باشی
ActiveX بالا تو بخش Import AvtiveX control من نیستش و به جاش Adobe Acrobat 7.0 Browser Control Type library 1.0 هست!
Acrobat Reader7.0 رو سیستمم نصب هست ، می شه توابع رو با نحوه استفادشون بگی ؟نقل قول:
ممنون میشم!:11:
خودشه، فقط اسمش با توجه به ورژن acrobat ی که شما نصب کردی اینجوریهنقل قول:
حالا میگردم برات پیداش میکنم.
خب چه جوری باهاش کار کنم . دستوراش چیه ؟نقل قول:
یه توضیحی می دی ؟
mer30
دستت درد نکنه.نقل قول:
یه دنیا لطف می کنی:11:
فعلا اینو بگیر:
در صورتی کار میکنه که Acrobat reader رو سیستم نصب باشه:
کد:ShellExecute(Handle,'Open','D:\delphi_amoozesh.pdf',nil,nil,SW_SHOW);
سلام
يك سوال، اگر طرف روي دستگاه اكروبات نصب نكرده باشه تكليف چيه؟
نقل قول:اینا تابع های اصلی هست، بقیه رو میتونی بعد از اینکه اسم کامپوننت رو نوشتی یه " . " بزنی و همه توابع رو ببینیکد:
pdf1.LoadFile('LocalPath');
pdf1.gotoFirstPage;
pdf1.gotoLastPage;
pdf1.gotoNextPage;
pdf1.gotoPreviousPage;
pdf1.Print;
pdf1.setZoom(100);
NoneForce عزیز درست میگن، باید دنبال یه همچین چیزی باشی. چون همه که روی سیستمشون آکروبات نصب نیست.نقل قول:
NoneForce شما چند تا کامپوننت معرفی کردی، اونا بدون نیاز به آکروبات کار میکنه؟
دستت درد نکنه آقا آرش:11:نقل قول:
از روش آقا farhad_g1 استفاده می کنم.
مرسی از راهنمایی هاتوننقل قول:
خود ابزار Acropdf که واسه ActiveX هست دکمه های مختلف و مفیدی برای کار با PDF ها داره.:46:
فقط مشکل من اینکه اگه کاربر اسم فایل رو اشتباه وارد کرد ،Acropdf خطا نمی ده که فایل رو پیدا نکردم و به جاش سیستم هنگ می کنه در نتیجه حتما اسم فایل باید درست وارد بشه که این عیب برنامه منه:19:
من واسه باز کردن فایل PDf دستورهای زیر رو به کار می برم:
می خوام یه دستور چک کردن وجود فایل قبل از باز کردن فایل به کار ببرم تا در صورت وجود فایل اونو فایل رو باز کنه.:21:
var f:String;
begin
f:=ExtractFilePath(Application.ExeName);
f:=f+'\PDF_Files\'+Edit2.Text+'.pdf';
AcroPDF1.src:=f;
end;
دستور یا تابع چک کردن وجود فایل رو می دونی؟؟؟
با FileExists('FileName.ext') میتونی وجود فایل رو چک کنی. اگر قراره کاربر اسم فایل رو وارد کنه چرا از OpenDialog استفاده نمیکنی؟
آخه برنامه طوریه که اسمش رو وارد کنه بهتر و راحت تره. اسم فایل ها رو هم کوتاه انتخاب می کنه مثل a.pdf
اطلاعات مربوط به فایل تو بانک ذخیره میشه
این کد فایلی رو که شما آدرسش رو میدید بدنبال برنامه سازگار با اون میگرده و اجراش میکنه برای امتحان میتونید جای فایل delphi_learn.pdf یه فایل Mp3 یا یه تصویری بزارید.کد:uses
Shellapi;
function StartAssociatedExe(FileName: string; var ErrorCode:
Cardinal): Boolean;
var
Prg: string;
ProcessInfo: TProcessInformation;
StartupInfo: TStartupInfo;
begin
SetLength(Prg, MAX_PATH);
Result := False;
ErrorCode := FindExecutable(PChar(FileName), nil,
PChar(Prg));
if ErrorCode >= 32 then
begin
SetLength(Prg, StrLen(PChar(Prg)));
FillChar(StartupInfo, SizeOf(TStartupInfo), 0);
with StartupInfo do
begin
cb := SizeOf(TStartupInfo);
wShowWindow := SW_SHOW;
end;
if CreateProcess(PChar(Prg), PChar(Format('%s %s', [Prg, FileName])),
nil, nil, False, NORMAL_PRIORITY_CLASS, nil, nil,
StartupInfo, ProcessInfo) then
begin
WaitForSingleObject(ProcessInfo.hProcess, INFINITE);
GetExitCodeProcess(ProcessInfo.hProcess, ErrorCode);
CloseHandle(ProcessInfo.hProcess);
CloseHandle(ProcessInfo.hThread);
Result := True;
end
else
ErrorCode := GetLastError;
end;
end;
--------------------------------------------------------
procedure TForm1.Button1Click(Sender: TObject);
var
ErrorCode: Cardinal;
begin
StartAssociatedExe('c:\delphi_learn.pdf', ErrorCode);
end;
مرسی آرش جاننقل قول:
دستت درد نکنه
کد با حال و جالبیه
سوال ؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟ ؟؟؟؟؟؟؟
وقتی من تو Acropdf یه فایل PDF باز میکنم و مرور می کنم ، بعد که ادرس فایل دیگه ای رو بهش می دم تا فایل جدید رو باز کنه ، فایل رو می خونه ولی نشونش نمی ده . یعنی وقتی فایل دیگه ای رو می گم بخونه CPU مشغول میشه (اگه فایل بزرگ باشه>20مگ چند ثانیه می کشه) ولی فایل جدید رو به جای فایل قبلی نشون نمیده انگار که فایل رو نخونده. فکر کنم Acropdf باید یه refresh یا update بعد از لود فایل جدید بشه.ولی دستورات زیر هم اینکار رو نمی کنن :
acropdf.refresh
acropdf.update
کسی می تونه منو کمک کنه؟!
یه سوال دیگه : آیا می تونیم توسط دستوراتی یه فایلی رو از یه جای هارد به یه جای دیگه کپی کرد؟(دستور کپی کردن فایل) همچنین دستور پاک کردن فایل؟
کسی این کار رو بلده؟
ممنون میشم از کمکتون:11:
___________
در مورد سوال اول من تست کردم همچین مشکلی رو نداشت. کدی رو که نوشتی چک کننقل قول:
برای کپی فایل:
برای حذف فایل:کد:
CopyFile('source path','destination path',false);
این دستورات در help دلفی هم خیلی راحت پیدا میشدن.کد:
DeleteFile('file path');
موفق باشی
کدی که من نوشتم برای باز کردن فایل و کارهای مربوطه به این صورته:نقل قول:
procedure Tform1.Button1Click(Sender: TObject);
var f:String;
begin
if Edit2.Text<>'' then
begin
f:=ExtractFilePath(Application.ExeName);
f:=f+'\PDF_Files\'+Edit2.Text+'.pdf';
if FileExists(f) then
begin
form1.Width:=936;
form1.Height:=674;
Button2.Visible:=true;
AcroPDF1.Visible:=true;
AcroPDF1.src:=f;
end
else MessageDlg('File Not Found', mtInformation, [mbOK], 0);
end;
end;
ولی همون مشکل هست.
در مورد دستورات کپی کردن و پاک کردن فایل هم دستت درد نکنه.
راستی false تو تابع زیر کارش چیه؟
CopyFile('source path','destination path',false);
به جای قسمتی که قرمز رنگ شده کد زیر رو قرار بده:نقل قول:
کد:
AcroPDF1.loadfile(f);
در قسمت سوم تابع کپی، false,true قرار میگیره و نحوه اجرا رو مشخص میکنه:نقل قول:
true: اگر فایلی همنام با فیلی که در قسمت destination path مشخص شده، وجود داشته باشه کپی انجام نمیشه
false: در صورت وجود فایل همنام در قسمت destination path عمل جایگزینی با فایل جدید انجام میشه
مرسی فرهاد جاننقل قول:
ولی loadfile هم کار نمی کنه چون acrobat reader من نسخه beta (آزمایشی)هستش واسه همین منم acrobat reader رو پاک کردم یه نسخه دیگه نصب کردم کامپوننت رو هم از نو نصب کردم (شکلش عوض شده بود ).
بعد به جای SRC از loadfile استفاده کردم. حالا درست و حسابی کار میکنه.
این Acrobat reader beta منو سرکار گذاشته بود.
از راهنمایی هاتون هم ممنون. خیلی منو تو پروژه کمک کردی. دستت درد نکنه. این گل هم خدمتتون:11: