Autor Téma: Komponenta WebBrowser  (Přečteno 7724 krát)

Offline Viktor Marek

  • Mladík
  • **
  • Příspěvků: 97
  • Karma: 1
    • Verze Delphi: Delphi 5
Komponenta WebBrowser
« kdy: 29-05-2014, 12:28:21 »
V aplikaci v Delphi 5 používán komponentu WebBrowser mimo jiné i k zobrazení souborů pdf

Soubory pdf jsou uloženy v tabulce v Blobu. Před načtením do WebBrowseru je ukládám do adresáře programu příkazem
TBlobField(DBISAMQuery1.FieldByName('historie')).SaveToFile('historie.pdf');
a následně je načítám příkazem WebBrowser1.Navigate('historie.pdf');

Je možné načítat soubor pdf přímo z tabulky do WebBrowseru?

Díky za radu

Offline pf1957

  • Padawan
  • ******
  • Příspěvků: 3527
  • Karma: 139
    • Verze Delphi: D2007, XE3, DX10
Re:Komponenta WebBrowser
« Odpověď #1 kdy: 29-05-2014, 12:38:37 »
Je možné načítat soubor pdf přímo z tabulky do WebBrowseru?
Primo asi ne, ale dal by se jako soucast aplikace napsat jednoduchy HTTP serverik na urovni dema ze Synapse a ten browser pomoci URL na nej nasmerovat. A ten serverik by pak vydal data k zobrazeni, aniz by nekam neco ukladal. Ale zalezi, jak se kamaradis s HTTP a MIME.

Offline Radek Červinka

  • Administrátoři
  • Padawan
  • *****
  • Příspěvků: 3466
  • Karma: 112
    • Verze Delphi: D2007, DXE + 2 poslední
    • O Delphi v češtině
Re:Komponenta WebBrowser
« Odpověď #2 kdy: 29-05-2014, 12:45:00 »
Je možné načítat soubor pdf přímo z tabulky do WebBrowseru?
Primo asi ne, ale dal by se jako soucast aplikace napsat jednoduchy HTTP serverik na urovni dema ze Synapse a ten browser pomoci URL na nej nasmerovat. A ten serverik by pak vydal data k zobrazeni, aniz by nekam neco ukladal. Ale zalezi, jak se kamaradis s HTTP a MIME.

To je pekne reseni, ale nezobrazi se pri Bind toho serveriku dialog firewallu? Aby to uzivatele nedesilo...
Embarcadero MVP - Czech republic

Offline pf1957

  • Padawan
  • ******
  • Příspěvků: 3527
  • Karma: 139
    • Verze Delphi: D2007, XE3, DX10
Re:Komponenta WebBrowser
« Odpověď #3 kdy: 29-05-2014, 12:54:15 »
To je pekne reseni, ale nezobrazi se pri Bind toho serveriku dialog firewallu? Aby to uzivatele nedesilo...
To nevim, z lokalu na local by snad nemusel...

Offline Viktor Marek

  • Mladík
  • **
  • Příspěvků: 97
  • Karma: 1
    • Verze Delphi: Delphi 5
Re:Komponenta WebBrowser
« Odpověď #4 kdy: 29-05-2014, 15:35:03 »
Není nějaká komponenta pro zobrazování pdf do Delphi 5, která by uměla spolupracovat přímo se záznamem v tabulce?

Nevadí mi i placená verze komponenty v přiměřené ceně.

Offline Radek Červinka

  • Administrátoři
  • Padawan
  • *****
  • Příspěvků: 3466
  • Karma: 112
    • Verze Delphi: D2007, DXE + 2 poslední
    • O Delphi v češtině
Re:Komponenta WebBrowser
« Odpověď #5 kdy: 29-05-2014, 15:45:17 »
A proc to nezobrazuješ přes Adobe Reader

http://www.zive.cz/clanky/tipy-a-triky-v-delphi-dil-128--prace-s-pdf/sc-3-a-116196/default.aspx

http://delphi.about.com/cs/howto/ht/htpdf.htm

Budto naimportujes COM rozhrani readeru, nebo to vytvoříš dynamicky, podobně jako se ovládá Word a spol. Myslím, že to bude umět číst i ze streamu, ale nejsem si jistý.
Embarcadero MVP - Czech republic

Viktor

  • Host
Re:Komponenta WebBrowser
« Odpověď #6 kdy: 29-05-2014, 19:43:28 »
Cesta cez ActiveX Adobe Reader je mozno jednoducha, ale je zavisla na Adobe. Ja som do dnes uspesne pouzival prave tuto metodu na zobrazenie pdf. Avsak dnes sa mi nainstalovala aktualizacia Adobe Reader (11.0.7) a moja aplikacia sa nedala spustit, nakolko nevedela inicializovat AcroPDF.dll. Tak som skusil otvorit Delphi, ta ista chybova hlaska. Pritom samostatne sa Acrobat Reader spustil bez problemov. Teda hladam aj ja alternativu pre otvorenie PDF v mojej aplikacii. A vdaka tomuto vlaknu som objavil komponentu WebBrowser aj na otvorenie PDF. Uz sa tesim ked si aj zakaznici aktualizuju Acrobat Reader :-)

Offline < z >

  • Administrátoři
  • Guru
  • *****
  • Příspěvků: 1205
  • Karma: 44
    • Verze Delphi: 7, 2010
Re:Komponenta WebBrowser
« Odpověď #7 kdy: 29-05-2014, 20:01:57 »
Zkus hledat nejake alternativy, zde pisou neco o Gnistice PDFtoolkit, QuickPDFLibrary a WPViewPDF
http://stackoverflow.com/questions/624246/what-is-the-best-way-to-display-a-pdf-file-in-delphi-2009

Offline Mi.Chal.

  • Guru
  • *****
  • Příspěvků: 577
  • Karma: 25
Re:Komponenta WebBrowser
« Odpověď #8 kdy: 29-05-2014, 23:47:50 »
Cesta cez ActiveX Adobe Reader je mozno jednoducha, ale je zavisla na Adobe.

A přes co myslíš, že to otevře ten webbrowser? Pokud nenainstaluješ reader, tak to taky nepůjde.

Offline pepak

  • Padawan
  • ******
  • Příspěvků: 1574
  • Karma: 37
    • Pepak.net
Re:Komponenta WebBrowser
« Odpověď #9 kdy: 30-05-2014, 07:05:22 »
A přes co myslíš, že to otevře ten webbrowser? Pokud nenainstaluješ reader, tak to taky nepůjde.
No tak za prvé některé browsery umí PDF "samy o sobě", je klidně možné, že to časem zvládne i IE. Za druhé, do browseru může být nainstalovaný PDF plugin vcelku od kohokoliv, zatímco když se Viktor napíchne na Acrobat Reader, tak to prostě bez AR nepůjde.

Viktor

  • Host
Re:Komponenta WebBrowser
« Odpověď #10 kdy: 30-05-2014, 08:10:20 »
Presne ako hovori Pepak. Ten WebBrowser to v pohode otvori aj ked vyuziva rovnaky Plugin. Pretoze Acrobat Reader bez problemov funguje. Problem nastane pri inicializacii aplikacie. Ak je pouzita vizualna komponenta (staci aby bola polozena na formulary) tak okamzite pri starte (komponenta sa este ani nepouzila) a uz aplikacia hlasi chybu. A to iste ak sa pokusim pridat komponentu na prazdny formular. V menu najdem TAcroPDF, ale pri pokuse o jej vlozenie uz uvidim chybu TAdroPDF.dll. Ak pouzijem WebBrowser, ten ani nevie, ze bude pouzity pre otvorenie PDF a poziada o otvorenie az v dobe ked potrebuje. Problem je skor v spojeni Delphi XE5 + ActiveX Acrobat Reader. Po tej aktualizacii na 11.0.7 sa s tym Delphi nevie spojit. Skusil som odinstalovat Active X z Delphi a nainstalovat z aktualne updatovanej verzie 11.0.7. Ale vysledok bol ten isty. TAcroPDF sa neprida na formular. Tak som preinstaloval Acrobat na 11.0.0 a uz to veselo funguje aj ked ActiveX v Delphi bolo vytvorene z verzie 11.0.7

Offline Mi.Chal.

  • Guru
  • *****
  • Příspěvků: 577
  • Karma: 25
Re:Komponenta WebBrowser
« Odpověď #11 kdy: 30-05-2014, 08:40:57 »
No tak za prvé některé browsery umí PDF "samy o sobě", je klidně možné, že to časem zvládne i IE. Za druhé, do browseru může být nainstalovaný PDF plugin vcelku od kohokoliv, zatímco když se Viktor napíchne na Acrobat Reader, tak to prostě bez AR nepůjde.

to je pravda, ale něco nainstalovaného nejspíš bude muset mít.

Jestli to podporuje jiný browser sám nevím, ale u rozšířených typu IE a Chrome bych na to přidání v budoucnu moc nespoléhal. Kdyby to přidali, tak se vyrojí spousta "výrobců pdf prohlížečů" a zažalují je za zneužití postavení na trhu. A i kdyby to jiný browser uměl, tak webbrowser je IE, takže uživatel stejně bude muset nainstalovat něco do něj, i když IE používat ani nechce.

Viktor

  • Host
Re:Komponenta WebBrowser
« Odpověď #12 kdy: 30-05-2014, 09:28:33 »
Nebranim sa pouzit Acrobat Reader. V podstate do aktualizacie 11.0.7 som s tym nemal problem. Ide mi len o to, aby sa nacital subor pdf. Teda akakolvek komponenta ktora to dokaze. Pouzival som aj TATViewer a ten tiez pouzival Acrobat Reader. Lenze vyssie verzie Delphi uz nepodporoval a tak som presiel na import ActiveX do Delphi

Viktor

  • Host
Re:Komponenta WebBrowser
« Odpověď #13 kdy: 30-05-2014, 09:44:29 »
Pozeral som komponenty ktore radil <z>. Niektore som poznal.

Debenu Quick PDF Library Lite is available as an 32-bit and 64-bit ActiveX component and works with C, C++, C#, Delphi, PHP, Visual Basic, VB.NET, ASP, PowerBASIC, Pascal or any other language that supports ActiveX.

Nainstaloval som, no neviem ako zobrazit obsah suboru

PDFLibrary1.LoadFromFile('C:\Program Files (x86)\Debenu\PDF Library\Lite\license.pdf', '');

Offline Viktor Marek

  • Mladík
  • **
  • Příspěvků: 97
  • Karma: 1
    • Verze Delphi: Delphi 5
Re:Komponenta WebBrowser
« Odpověď #14 kdy: 15-06-2014, 13:40:41 »
WebBrowser1.Navigate('file://c:\Temp\soubor.pdf');

Pokud načtu do WebBrowseru soubor pdf  nelze jej na disku smazat dokud WebBrowser nenačte jiný soubor , nebo mu nepošlu
about:blank

Chci se tedy zeptat :

Načte WebBrowser celý dokument najednou, nebo si ho v průběhu prohlížení "dotahuje"?

Pokud si WebBrowser načte celý dokument, jakým způsobem lze načtený soubor na disku "uvolnit" aby mohl být smazán