Klick auf Bild: anderer Inhalt + Abfrage Adobe Reader?

Hallo,

Da mir hier schon oft gut geholfen wurde, möchte ich eine weitere Neuerung in meine Hompage einbauen.

Ich habe auf den Info-Seiten 3D-PDFs (also 3D drehbare Objekte in PDF Format), allerdings dauert das Laden bei mir auf diesen Seiten sehr lange. Vermutlich da Acrobat Reader gestartet werden muss.

Wenn man zB runterscrollt dann bleibt alles kurz “stecken” solange das PDF geladen oder geöffnet wird, getestet mit IE8 (ja ich weiß alt, aber die neuen sind eine Katastrophe zu bedienen) und FF3 (auch alt, aber verwende ich wegen den ewigen Updates und langsamen Start des Programms nicht). Immer steckt es

Nun zu meiner Frage:
Ich würde gerne ein Bild (Screenshot) des 3D Modells machen und erst wenn man auf das Bild klickt soll das PDF geladen und angezeigt werden statt dem Bild. Wie mache ich das am besten?

Zweite Frage - erweitert aber nicht nötig:
Kann man abfragen, ob ein Original Adobe Reader (Acrobat Reader) installiert ist? Da alle anderen viel weniger Funktionen haben rate ich zum Original, da keiner sonst 3D PDFs darstellen kann. Dann könnte man es nur laden wenn es installiert ist bzw. sonst eine Meldung (anderes Bild/Hinweis) anzeigen?

Bin mal gespannt, ob das lösbar ist. Ich seh mir das selbst mal an aber besser wäre von einem Profi gezeigt und richtig gemacht als von mir zusammengebastelt :wink:

Danke schon mal,
scacom

Bei PDF kann man ja ohnehin nicht sagen, ob das eingebettet in (X)HTML direkt dargestellt werden
kann, ist ja kein Standardformat wie (X)HTML oder SVG.

Somit wäre es also eine Option, generell per Element a einfach drauf zu verweisen.
Als Inhalt von a kann man ja ein Vorschaubild verwenden.

Eine Option zum Einbetten könnte darin liegen, ein Element object zu verwenden und damit
ein (X)HTML- oder SVG-Dokument zu referenzieren, in welchem ein Vorschaubild von einem
Verweis umgeben ist, der das PDF referenziert. Dies referenzierenden Dokument wird dann
gegebenenfalls durch das PDF ersetzt - oder der Nutzer bekommt ein Auswahlmenü, was
mit dem PDF gemacht werden soll.

Deklarative Abfragen gibt es zum Inhaltstyp (MIME-Typ) von Dokumenten, aber nicht zum
Programm oder plugin, welches der Nutzer gegebenenfalls dafür verwendet - da könnte man
allenfalls versuchen, über javascript oder sowas in den Voreinstellungen des
Darstellungsprogrammes herumzuwühlen, wenn die nicht gegen sowas abgesichert sind - nicht
meine Baustelle, aber in der Richtung könnte man mal suchen.

Du meinst einfach Bild als Link nehmen und mit dem Link eine neue Seite öffnen bzw. das PDF öffnen? Wäre nicht so schön wie in die Seite integriert und ich weiß auch nicht, ob es immer auf geht oder dann zum Download angeboten wird. Das wäre mir zwar egal, aber wer wird es nun downloaden, und dann öffnen usw. wäre zu viel Aufwand.

Problem ist sicher auch, dass es erst beim anklicken geladen werden soll, nicht beim öffnen der Seite? Muss ich mal versuchen ob das klappt und wie das mit dem Link so funktioniert.

Danke mal bin für weitere Vorschläge offen bzw. wie würdet ihr das als Nutzer der Seite am besten finden?

Danke,
scacom

Daß es erst durch Aktivierung des Nutzers geladen werden soll, ist ja bei beiden von mir
genannten Möglichkeiten der Fall.
Verwendet man das Element a, muß man ja erst den Verweis aktivieren, um das PDF zu laden.
Verwendet man die Variante mit object, ersetzt es ja gegebenenfalls im object die dort zuvor
stehende Datei, würde also auch erst durch Nutzerinteraktion geladen und dann irgendwie
behandelt - wie kann man als Autor kaum beeinflussen.
Deswegen steckt man ja nicht direkt das PDF ins object, sondern das Vorschaubild mit einem
Verweis auf das PDF drumherum - im Prinzip also die Variante mit dem Element a, nur eben
im Dokument eingebettet, wenn man das unbedingt braucht.
Weil das Attribut ‘declare’ bei den gängigen Darstellungsprogrammen ignoriert wird, kann man
die Aktivierung praktisch leider nicht direkt hinbekommen, sondern muß sie im eingebetteten
Dokument realisieren.
Mit der frame-Technik ginge das auch noch - die gilt aber als veraltet, daher habe ich diese
dritte Variante mal weggelassen.
Für den MSIE könnte man vielleicht auch per activeX irgend ein kryptisches Zeug angeben,
was beeinflussen kann, womit was angezeigt wird - keine Ahnung aber, ob man sich darauf
verlassen kann - bei den anderen Programmen wird das aber sicher nicht funktionieren, weil
die kein activeX interpretieren - kann man beim MSIE auch deaktivieren, wenn einem das
Sicherheitsrisiko zu groß ist ;o)
Auch per javascript kann man da zweifellos irgendwas zaubern, wonach das PDF erst durch
Aktivierung geladen wird, ist dann aber nicht allgemein zugänglich, ebensowenig wie die
activeX-Variante, daher lohnt sich da auch keine nähere Betrachtung.

Erwarten würde ich als Nutzer immer die Variante mit dem a - ob nun mit Bild oder Verweistext
ist reine Geschmacksache - da kann ich dann selbst entscheiden, ob mich das PDF interessiert
oder nicht und auch womit ich mir das angucke. Zudem kann es natürlich sinnvoll sein, als
Begleittext anzugeben, daß es sich um ein PDF handelt, wie groß das ist und ob man für den
3D-Teil ein besonderes Programm oder Programmversion braucht, um sich das anzugucken,
sonst läd man den Kram runter und stellt fest: Das PDF geht nicht ;o)

Hallo,

Derzeit sind es iframes die in html/php/css Seiten eingebettet sind.

Wenn ich das mal richtig verstanden habe könnte ich in das iframe, das einen Namen hat, ein Bild mit Link einfügen, dass dann das PDF referenziert, somit müsste im iFrame das PDF laden. Das wäre natürlich möglich, gute udn einfache Idee, nur muss ich dann je eine 3D Bild-Seite (also html mit Bild Inhalt) erstellen mit Link zum PDF, oder? Wäre natürlich einfacher, wenn es irgendwie anders gehen würde.

scacom

Bei frames geht das etwas einfacher. Da kannst du ja bei jedem Verweis per Attribut target
setzen, wo das Verweisziel angezeigt werden soll.
also

<a href="TRex.pdf" type="application/pdf" target="frame1">3D-Modell TRex, 3MiByte groß</a>,
<a href="Huhn.pdf" type="application/pdf" target="frame1">3D-Modell Huhn, 3MiByte groß</a>

Entsprechend hat der frame dann eben ein Attribut id (oder in der antiken Fassung zusätzlich auch
name) mit dem Wert ‘frame1’ - und der Nutzer kann sich aussuchen, ob er TRex oder Huhn sehen will.

target gibt es auch wieder in den aktuellen Varianten von XHTML, nur eben keine frames,
deswegen mag man zu der Lösung mit frames nicht ernsthaft raten.

Ja, das mache/kenne ich schon.

Frage wäre hier:
Geht der Link dann nur außerhalb des Frames, aber es sollte ja nicht unnötig kompliziert werden und einfach wenn man interesse hat, das 3D Modell zu drehen, der Acrobat Reader starten, also ein klick IM Frame sollte den Frameinhalt ändern, das geht aber nicht mit dem Attribut target, sondern wohl nur mit einer eigenen Seite die im Frage angezeigt wird?

scacom

Im frame steht dann ja schon das PDF, welches ja in aktuellen Versionen selbst eine
Verweisfunktionalität hat - man würde also die Verweise direkt im PDF unterbringen.
Betätigt man solch einen Verweis in einem per frame eingebetteten Dokument (egal welches
Format), bei dem selbst kein Ziel-frame angegeben ist, so wird nur dieses Dokument gegen
das Verweisziel getauscht, nicht das Dokument, wo der frame selbst notiert ist.
Generell führt das letztlich dazu, das (X)HTML möglichst komplett vom PDF zu trennen, dann
ist es auch nicht kompliziert. Wenn man durch Anklickern des PDF etwas bewirken will, setzt
man dazu am besten einen Verweis im PDF.
Sonst arrangiert man das besser so, daß man im (X)HTML etwas anklickert, um eine neues
PDF aufzumachen oder im Falle von frames dann eben auch ein altes gegen ein neues zu
tauschen.
Du solltest also klar festlegen, wo die Interaktivität stattfinden soll, im Bereich des
(X)HTML-Dokumentes oder im eingebetteten Dokument.

Nun ist es zwar so, daß man eine Pixelgraphik wie JPEG oder PNG auch gut als Inhalt eines
a-Elementes verwenden kann, bei komplizierteren Formaten wie (X)HTML, SVG, flash, PDF etc
ist es aber oft so, daß diese die Klickereignisse selbst behandeln und nicht an das einbettende
(X)HTML-Dokument weiterleiten, daher versucht man eher nicht, durch Anklickern solcher
Dokumente ein Ereignis im einbettenden (X)HTML-Dokument auszulösen - es hindert dich
niemand dran, das trotzdem so zu notieren und auszuprobieren - solltest dann nur im Auge
behalten, mit welchen browsern (und plugins) das funktioniert und ob sich da in Zukunft mit
neuen Programmversionen was ändert.

Puh, ich glaube, das ist mir etwas zu komplex erklärt. Nochmal meine Sicht:

Das PDF selbst ist fertig und kann ich nicht ändern, es enthält ein 3D Modell, das vom 3D Programm generiert wird. Da gibts keine Links im PDF.

Es gibt eine Info Seite zu einem Modell und weiter unten ein 3D Modell, eben jenes PDF. Das ist derzeit so gelöst, dass es ein iframe definiert mit Inhalt “3d.pdf”.

Ich möchte nun aber, dass hier mal ein Bild angezeigt wird und erst bei Klick auf das Bild das PDF erscheint.

Hier mal ein Link:
scacom.bplaced.net/Collection/1581/1581.php

Wenn ich nun als Inhalt ein Bild angebe, so ist es ja ohne Funktion. Kann ich hier noch eine Funktion hinzufügen? Oder könnte man das iFrame selbst als Link im a-Tag verwenden??? Also ?

lg
scacom

OK wie ich grade erfahren habe, kann man den pdf viewer im browser abschalten. Dann wird sowieso nichts angezeigt bzw. kommt ein download link bei jeder seite.

Natürlich sub optimal

Daher werde ich ein Bild machen und einfach mit einer neuen Seite target blank verlinken, dann kommt entweder das pdf oder ein download link je nach einstellung des browsers.

Danke,
scacom

Bei deiner Beispielseite zeigt sich bei mir beim Aufruf der Seite automatisch der
Anzeigebereich eines speziellen Programmes (KPDF heißt das bei mir und hat nichts mit dem
browser zu tun) - und das zeigt im wesentlichen ein leeres Dokument mit einem Rechteckt
drin an. Was da genau passiert, hängt immer von den Einstellungen im browser ab - nichts
kann einem Autoren da garantieren, wo, wie, womit und ob überhaupt PDF angezeigt wird.
Wenn jetzt dein PDF mehr als ein einfaches Rechteck enthält, scheint es zudem ja auch noch
verschiedene PDF-Versionen zu geben, von daher kann man sich auch nicht drauf verlassen,
daß alle Programme alle Bestandteile einer aktuellen PDF-Version interpretieren - es ist also
ähnlich kompliziert wie bei anderen Formaten auch, man kann sich nicht drauf verlassen.
Und da PDF nun deutlich weniger gut durchdacht ist als etwa (X)HTML, besteht da immer eine
gute Chance, daß die Inhalte anders als gedacht oder gar nicht dargestellt werden.

img und iframe, auch object sind alles inzeilige Elemente.
Die kann man alle in einem Element a notieren - wie beschrieben ergibt gegebenenfalls
Probleme, wenn man damit Formate wie SVG; PDF, flash, (X)HTML einbettet, die eine eigene
Ereignisbehandlung haben, daher sollte praktisch ein simples Format wie PNG, JPEG, GIF
für das Vorschaubild verwendet werden.

target="_blank" braucht man praktisch beim Element a nicht, da man ja davon ausgeht, daß der
jeweilige Nutzer selbst entscheiden kann, wo ein Verweisziel geöffnet werden soll.

hallo zusammen,

ich möchte hier noch eine weitere alternative vorschlagen, die natürlich auch nicht 100% das gelbe vom ei ist, aber als vorschlag in betracht gezogen werden sollte.

wenn ich es richtig sehe, hattest du in der ausgangssituation bereits das pdf so eingebunden, dass es bei clients direkt angezeigt wird (natürlich vorausgesetzt jemand hat tatsächlich das adobe-plugin installiert).

mein vorschlag wäre der folgende:

$('#container a').click(function() { $('#container').html(); // bisherige Ausgangssituation reinschreiben return false; }

verstehst du was ich meine? Das bietet einen einfachen a-fallback für benutzer die kein plugin installiert haben und gleichzeitig den komfort einer direktanzeige mit javascript, so wie du es bisher hattest.

gruß