Witam
W jaki sposób umożliwić podgląd pliku pdf w programie napisanym w Lazarusie? Dla Delphi jest coś takiego jak Acrobat ActiveX, w Lazarusie chyba (?) nie da się tego zainstalować. Wszelkie wskazówki mile widziane.
- Rejestracja:około 12 lat
- Ostatnio:prawie 11 lat
- Postów:37
- Rejestracja:ponad 22 lata
- Ostatnio:około 8 godzin
Witam,
w załączniku masz projekt, powinno Ci trochę pomóc. Program odnosi się bezpośredniu do pliku C:\a.pdf
- Lazarus_pdf.7z (179 KB) - ściągnięć: 499
- Rejestracja:około 12 lat
- Ostatnio:prawie 11 lat
- Postów:37
Witam
Wielkie dzięki, rewelacja :). Program korzysta jedynie z zawartej w nim biblioteki AcroPDF czy też w systemie musi być dodatkowo zainstalowany Adobe Reader ? Jakie są możliwości wykorzystania tej biblioteki i kodu w komercyjnych programach?
- Rejestracja:około 12 lat
- Ostatnio:prawie 11 lat
- Postów:37
Pozwolę sobie wznowić jeszcze ten temat. Przykład Pawła Dmitruka umożliwia załadowanie pliku pdf i pokazanie podglądu na panelu. W jaki sposób zresetować program z odłączeniem pliku (tj powrót do stanu pierwotnego)?
procedure TForm1.Button6Click(Sender: TObject);
var
aaa: TGUID = '{CA8A9780-280D-11CF-A24D-444553540000}';
atl:hmodule;
AtlAxAttachControl:TAtlAxAttachControl;
z: olevariant;
zzz: string;
begin
if OpenDialog1.Execute then
begin
zzz:=UTF8Decode(form1.opendialog1.FileName);
atl:=LoadLibrary('atl.dll');
AtlAxAttachControl:=TAtlAxAttachControl(GetProcAddress(atl, 'AtlAxAttachControl'));
EvenSink1:= TEvenSink.Create(Self);
WebBrower:=CreateOleObject(ClassIDToProgID(aaa));
//ShowMessage(ClassIDToProgID(aaa));
//EventSink1.Connect(WebBrower, IAcroAXDocShimDisp);
AtlAxAttachControl(WebBrower,panel4.Handle,nil);
//WebBrower.LoadFile(form1.opendialog1.FileName); //(opendialog1.FileName)
z:=zzz;
WebBrower.LoadFile('');
WebBrower.LoadFile(z);
label4.Caption:=zzz;
WebBrower.setPageMode('none');
WebBrower.SetShowScrollbars(0);
WebBrower.setShowToolbar(0);
WebBrower.setLayoutMode('SinglePage');
Webbrower.setView('Fit');
panel1.SetFocus;
end;
end;
- Rejestracja:około 12 lat
- Ostatnio:prawie 11 lat
- Postów:37
Niestety, ale po zastosowaniu tego sposobu w sposób jak poniżej (przy otwieraniu kolejnego pliku powinien się "zerować" poprzedni) nadal w panelu widać poprzedni plik. Nie działa oczywiście także próba samego "wyzerowania" panelu - plik nadal jest tam widoczny....
procedure TForm1.Button6Click(Sender: TObject);
var
aaa: TGUID = '{CA8A9780-280D-11CF-A24D-444553540000}';
atl:hmodule;
AtlAxAttachControl:TAtlAxAttachControl;
z: olevariant;
zzz: string;
begin
if OpenDialog1.Execute then
begin
zzz:=UTF8Decode(form1.opendialog1.FileName);
atl:=LoadLibrary('atl.dll');
AtlAxAttachControl:=TAtlAxAttachControl(GetProcAddress(atl, 'AtlAxAttachControl'));
EvenSink1:= TEvenSink.Create(Self);
WebBrower:=CreateOleObject(ClassIDToProgID(aaa));
AtlAxAttachControl(WebBrower,panel4.Handle,nil);
z:=zzz;
WebBrower.LoadFile(' '); // tu powinien się zerować poprzedni plik?
WebBrower.LoadFile(z);
WebBrower.setPageMode('none');
WebBrower.SetShowScrollbars(0);
WebBrower.setShowToolbar(0);
WebBrower.setLayoutMode('SinglePage');
Webbrower.setView('Fit');
panel1.SetFocus;
end;
end;
- Rejestracja:ponad 22 lata
- Ostatnio:około 8 godzin