Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Multimedia (https://www.delphipraxis.net/16-multimedia/)
-   -   Delphi PDF ohne weitere Funktionen Anzeigen (https://www.delphipraxis.net/164096-pdf-ohne-weitere-funktionen-anzeigen.html)

Freiwilderer 28. Okt 2011 12:33


PDF ohne weitere Funktionen Anzeigen
 
Liste der Anhänge anzeigen (Anzahl: 1)
Hallo alle miteinander,

ich hab momentan ne kleine Sache an der Backe, die etwas ausartet und zwar soll eine Tabelle angelegt werden, in der man PDFs ablegen und später rechte gesteuert entweder downloaden, drucken oder anzeigen kann.
Die PDFs müssen in der DB liegen (MSSQL) und das Ganze läuft als remote App.

Ich bin jetzt so weit, dass ich über die Zwischenablage PDFs in ein NVARBinary(Max) feld hochladen kann, runterladen in die Zwischenablage funktioniert auch. Jetzt kommt das Problem:
Für die Vorschau habe ich versucht ein TWebBrowser objekt zu verwenden.
1. weiß ich nich, wie ich dieses objekt mit dem Stream aus dem DB Felf füllen kann (vielleicht geht das auch gar nicht und ich muss ggf auf eine Temp datei zurück greifen) für einen Tip hierzu wäre ich trotzdem sehr dankbar.
2. Wenn ich das PDF dort anzeigen lasse, werden die Funktionen für abspeichern und drucken angezeigt. Da es aber User gibt, die die PDFs nur sehen, aber nicht speichern oder drucken dürfen (ich weiß, totaler quatsch eigentlich ...) kann ich mit der Anzeige über den Webbrowser so nicht so viel anfangen.

lösungsansatz für 2.
Ich hab mir überlegt, ich lade die Datei in den Webbroser, der aber invisible ist.
Wenn ich Drucken will löse ich über
Delphi-Quellcode:
   WebBrowser.ExecWB(OLECMDID_PRINT, OLECMDEXECOPT_PROMPTUSER);
direkt den Druck aus.
Das funktioniert super.

Überlegung 2, wenn ich dort drucken kann, kann ich auch eine Vorschau anzeigen, versucht über:
Delphi-Quellcode:
   WebBrowser.ExecWB(OLECMDID_PRINTPREVIEW, OLECMDEXECOPT_PROMPTUSER);
das löst allerdings diese Fehlermeldung aus:
Es wurde versucht, ein Drop-Ziel zu widerrufen, das nicht registriert wurde.
(siehe Bild)


EDIT:
ich hab grad nochmal etwas rumgetestet, ... diese Fehlermeldung kommt, weil im Webbrowser ein PDF angezeigt wird, bei TXT dateien gehts. Allerdings kann man von da direkt auch drucken :(...

Jumpy 28. Okt 2011 12:54

AW: PDF ohne weitere Funktionen Anzeigen
 
Ein etwas anderer Gedanke. Beim erzeugen von PDFs kann man doch normalerweise festlegen, was man damit machen kann. Vllt. wäre es ja möglich jeweils 3 rechtlich unterschiedliche Versionen des PDFs zu speichern und je nach User das erlaubte aus der DB laden.

Freiwilderer 28. Okt 2011 13:02

AW: PDF ohne weitere Funktionen Anzeigen
 
hi,
danke schonmal für den gedanken, da war ich noch nicht drauf gekommen.

leider hilft das aber auch nix, da ich die PDFs nicht anlege, sondern user...

stahli 28. Okt 2011 13:18

AW: PDF ohne weitere Funktionen Anzeigen
 
Ich bezweifle etwas, dass der Webbrowser + PDF-Reader auf sichere Weise derart konfigurierbar ist. Vielleicht solltest Du Dich doch nach einer speziellen PDF-Komponente umsehen (ich kenne selbst keine).

Alternativ könnte man den Webbrowser vielleicht mit einer transparenten Form überlagern (so dass man ihn nicht per Maus erreicht) oder den Focus per Timer auf ein bestimmtes Control setzen. Das würde ich aber auch nur als unschöne Notlösung in Erwägung ziehen.

Freiwilderer 28. Okt 2011 13:20

AW: PDF ohne weitere Funktionen Anzeigen
 
hi,

ich versuch gerade ne den aloaha saver pdfviewer zu installieren, ....... aber der zickt rum wie sau...

über eine transparente form über dem webbrowser hab ich auch schon nachgedacht, aber habs nicht hinbekommen ...... wie mach ich denn ne form transparent? ... problem is sicher auch, dass man dann vermutlich probleme mit dem scrollen bekommt

EDIT:
eine Alternative wäre natürlich die PDFs direkt beim speichern zusätzlich als bild abzuspeichern, welches man dann anders anzeigen lassen kann.
Aber ich habe noch keine Möglichkeit gefunden ein PDF, das in meiner zwischenablage ist, in ein Bild umzuwandeln, das könnte auch zu komplikationen führen, nehme ich an...

Jumpy 28. Okt 2011 13:47

AW: PDF ohne weitere Funktionen Anzeigen
 
Nochmal zu den PDFs mit verschiedenen Rechten. Irgendwo übergibt ein User ja einen Pfad zu einer PDF-Datei, damit dieser der DB hinzugefügt wird. Dann kann man doch automatisch zunächst temporär weitere Versionen mit untersch. Rechtestufen erzeugen. Alle 3 Versionen in die DB laden und dann die temporären Dateien wieder löschen. Ein Tool, das das glaub ich könnte wäre pdftk.

Freiwilderer 28. Okt 2011 13:51

AW: PDF ohne weitere Funktionen Anzeigen
 
Der upload läuft über die Zwischenablage, weil es sich, wie gesagt um eine Remoteapp handelt und die lokalen resourcen nicht erreichbar sind. Abgesehen davon weiß ich ehrlich gesagt nicht, wie ich das automatisch machen kann :D
ich müsste dafür ja die pdf datei quasi öffnen, verändern und neu abspeichern, oder?

Jumpy 28. Okt 2011 13:59

AW: PDF ohne weitere Funktionen Anzeigen
 
Dafür hatte ich ja z.B. das Tool pdftk erwähnt. Das ist ein Kommandozeilenprogramm, das kriegt ein paar Parameter und das war es dann. Wenn dir auf dem Server natürlich niemals das PDF als Datei vorliegt, sondern nur als Binärer Datenstrom o.ä., weil du das über die Ablage bekommst, wird das natürlich nicht gehen, hast recht.

Freiwilderer 28. Okt 2011 14:02

AW: PDF ohne weitere Funktionen Anzeigen
 
ich behalte das mal im Hinterkopf,
wenns gar nicht anders geht, könnte ich die Datei vom stream natürlich wieder in eine Datei auf dem server schreiben und dann verändern, ... wirklich gefallen tut mir das allerdings nicht.

stahli 28. Okt 2011 14:37

AW: PDF ohne weitere Funktionen Anzeigen
 
Zitat:

Zitat von Freiwilderer (Beitrag 1133178)
wie mach ich denn ne form transparent? ... problem is sicher auch, dass man dann vermutlich probleme mit dem scrollen bekommt

Wie gesagt: Notlösung, aber

AlphaBlend gibt es schon in D7. Ich denke, das sollte so lösbar sein (wenn nix besseres geht). Das TranspForm müsste man allerdings mitführen, wenn das MainForm bewegt wird.

Zum Scrollen: Man könnte die Strollbars evtl. unverdeckt lassen (wobei der WebBrowser dann vielleicht direkt den Focus erhält!?) oder auf dem TranspForm Buttons für Scrollaktionen anbieten und Ereignisse an den Webbrowser senden.
Keine Ahnung, ob das ohne Probleme zu realisieren ist aber andere Ideen habe ich dazu nicht.

Freiwilderer 28. Okt 2011 15:36

AW: PDF ohne weitere Funktionen Anzeigen
 
mir wird wohl nix anderes übrig bleiben...
sieht auch gar nich mal so schlecht aus ... (hoffe nur, das klappt auch mit der remote app, das hab ich noch nich ausprobiert.)

aber vielleicht fällt noch jemandem was zu meiner ersten frage ein?

1. weiß ich nich, wie ich dieses objekt mit dem Stream aus dem DB Felf füllen kann (vielleicht geht das auch gar nicht und ich muss ggf auf eine Temp datei zurück greifen) für einen Tip hierzu wäre ich trotzdem sehr dankbar.


lg und danke schonmal für die unterstützung

Mithrandir 28. Okt 2011 21:52

AW: PDF ohne weitere Funktionen Anzeigen
 
Zitat:

Zitat von stahli (Beitrag 1133176)
Ich bezweifle etwas, dass der Webbrowser + PDF-Reader auf sichere Weise derart konfigurierbar ist.

Naja, wer ganz abgebrüht ist, der nimmt sich den Chromium-Source und passt ihn an - Chrome zeigt von Haus aus PDFs an.

Freiwilderer 31. Okt 2011 08:41

AW: PDF ohne weitere Funktionen Anzeigen
 
so weit ich weiß, (vielleicht is es bei chrome anders) nutzen die browser aber auch nur den jeweilig installierten pdf viewer und so weit bin ich ja quasi schon.

ich hab die alphablend geschichte meinem chef gezeigt und etwas gejammert, und jetzt wird er wohl doch n neuen pdf viewer kaufen, der das kann :) ...
hauptsache, das funktioniert jetzt auch so, wie gedacht ...
laut beschreibung kann man den auch direkt mit einem stream füllen.

Nennt sich: WPViewPDF und ist von WPCubed, falls jemand mal ähnliche Probleme haben sollte.

mfg

Mithrandir 31. Okt 2011 11:55

AW: PDF ohne weitere Funktionen Anzeigen
 
Zitat:

Zitat von Freiwilderer (Beitrag 1133642)
(vielleicht is es bei chrome anders) nutzen die browser aber auch nur den jeweilig installierten pdf viewer und so weit bin ich ja quasi schon.

Japp, bei Chrome ist es anders. Chrome hat einen eigenen Viewer. ;)

vagtler 31. Okt 2011 12:28

AW: PDF ohne weitere Funktionen Anzeigen
 
Zitat:

Zitat von Freiwilderer (Beitrag 1133642)
[...] Nennt sich: WPViewPDF und ist von WPCubed, falls jemand mal ähnliche Probleme haben sollte. [...]

Das ist bei unserer Evaluation gegenüber dem Produkt von Gnostice damals durchgefallen - kann mich aber nicht mehr genau an das Testszenario erinnern.

Freiwilderer 31. Okt 2011 13:25

AW: PDF ohne weitere Funktionen Anzeigen
 
@vagtler ...
danke, aber das kommt etwas spät :D

Bernhard Geyer 31. Okt 2011 20:34

AW: PDF ohne weitere Funktionen Anzeigen
 
Zitat:

Zitat von vagtler (Beitrag 1133674)
Das ist bei unserer Evaluation gegenüber dem Produkt von Gnostice damals durchgefallen - kann mich aber nicht mehr genau an das Testszenario erinnern.

Und bei uns sind die Gnostics PDF-Komponenten wegen mangelnder SW-Qualität wieder rausgeschmissen. Trotz kompletten Reimplementierung der Komponenten vor 2/3 Jahren hatten wir des öftern Abstürze beim Setzen von PDF-Sicherheitseinstellungen. Durch fehlerhafte Implementierung der PDF-Lese/Schreibprozesses (mit teilweise grauenhaften Quellcode) hatten wir öfters Abstürze in der Anwendung (Wilde Zeiger mit Überschreiben irgendwelcher Adressbereiche der Anwendung). Die Fehlersuche war insgesamt betrachtet viel teurerer als die Lizenzkosten.


Alle Zeitangaben in WEZ +1. Es ist jetzt 15:00 Uhr.

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz