![]() | |
![]() |
| | Thread Tools | Display Modes |
#1
| |||
| |||
|
|
| Neuer Tab +---+-------------+ +-----------------+ | Frame: f1 | | | | PDF -------->| Neue URL | | | | Inhalt von f1 | ändern | |
#2
| |||
| |||
|
|
Ich habe eine Seite, bei der innerhalb eines Frames eine PDF-Datei aufgerufen wird. Diese PDF-Datei sollte aber noch getaner Arbeit eine URL im gleichen Frame oder Fenster aufrufen(per LaunchURL). Sie tut es aber nicht, sondern die URL wird in einem zusätzlichen Tab geladen. |
|
Damit könnte ich leben, wenn ich innerhalb dieser URL mein Frame oder das ursprünglich Fenster mit einem neuen Inhalt belegen könnte. Ist das irgendwie möglich? |
#3
| |||
| |||
|
|
Stefan Dreyer wrote: Ich habe eine Seite, bei der innerhalb eines Frames eine PDF-Datei aufgerufen wird. Diese PDF-Datei sollte aber noch getaner Arbeit eine URL im gleichen Frame oder Fenster aufrufen(per LaunchURL). Sie tut es aber nicht, sondern die URL wird in einem zusätzlichen Tab geladen. Wenn ein bestimmtes Plugin verwendet wird, z.B. Adobe Reader, könnte es eine Möglichkeit geben, das zu verhindern. Das wäre hier aber off-topic. |
|
Damit könnte ich leben, wenn ich innerhalb dieser URL mein Frame oder das ursprünglich Fenster mit einem neuen Inhalt belegen könnte. Ist das irgendwie möglich? window.opener-basierte Referenzen könnten funktionieren, solange die SOP beachtet wird (so in Firefox/Iceweasel 3.0.11). |
#4
| |||
| |||
|
|
Thomas 'PointedEars' Lahn wrote: Stefan Dreyer wrote: Ich habe eine Seite, bei der innerhalb eines Frames eine PDF-Datei aufgerufen wird. Diese PDF-Datei sollte aber noch getaner Arbeit eine URL im gleichen Frame oder Fenster aufrufen(per LaunchURL). Sie tut es aber nicht, sondern die URL wird in einem zusätzlichen Tab geladen. Wenn ein bestimmtes Plugin verwendet wird, z.B. Adobe Reader, könnte es eine Möglichkeit geben, das zu verhindern. Das wäre hier aber off-topic. Kannst Du mir verraten, welche? Gerne per PM oder in dctp. Ich habe jedenfalls noch keine gefunden, die funktionieren. Die Lösung wäre mir ja die liebste. |
#5
| ||||
| ||||
|
|
Thomas 'PointedEars' Lahn wrote: Stefan Dreyer wrote: Thomas 'PointedEars' Lahn wrote: Stefan Dreyer wrote: Ich habe eine Seite, bei der innerhalb eines Frames eine PDF-Datei aufgerufen wird. Diese PDF-Datei sollte aber noch getaner Arbeit eine URL im gleichen Frame oder Fenster aufrufen(per LaunchURL). Sie tut es aber nicht, sondern die URL wird in einem zusätzlichen Tab geladen. Wenn ein bestimmtes Plugin verwendet wird, z.B. Adobe Reader, könnte es eine Möglichkeit geben, das zu verhindern. Das wäre hier aber off-topic. Kannst Du mir verraten, welche? Gerne per PM oder in dctp. Ich habe jedenfalls noch keine gefunden, die funktionieren. Die Lösung wäre mir ja die liebste. IIRC konnte man in Adobe Acrobat 8.0 bei Links das Zielfenster definieren. Es wird jetzt fast OffT: Das Problem ist, dass ich nicht Acrobat 8.0 nutze, sondern die PDFs direkt mit tcpdf erzeuge und per Embedded Javascript (jetzt wird es fast wieder OnT) |
|
die URL aufrufe. |
|
Dort habe ich ausser der URL leider nur den Parameter: bNewFrame (optional) If true, this method launches the URL in a new window of the browser application. The default is false. |
|
In [einem Popup] soll sich ein Link befinden, der im Hauptfenster ausgeführt werden soll. Habt ihr ne Ahnung, wie man das anstellt? Links werden niemals ausgeführt, denn es sind keine Hunde, mit denen man |
#6
| |||
| |||
|
|
"Embedded Javascript"? |
|
Dort habe ich ausser der URL leider nur den Parameter: bNewFrame (optional) If true, this method launches the URL in a new window of the browser application. The default is false. Faszinierend. Und welches tcpdf meinst Du? http://www.tecnick.com/pagefiles/tcpdf/doc/com-tecnick-tcpdf/TCPDF.html#methodaddHtmlLink ist es anscheinend nicht. |
#7
| |||
| |||
|
|
Thomas 'PointedEars' Lahn wrote: "Embedded Javascript"? Das ehrt mich, das ich Dir in Bezug auf Java^WECMAscript noch was beibringen kann, was Du nicht kennst;-) |

|
http://www.adobe.com/devnet/acrobat/javascript.html Damit kannst Du in PDF clientseitiges Javascript ausführen. |
|
Dort habe ich ausser der URL leider nur den Parameter: bNewFrame (optional) If true, this method launches the URL in a new window of the browser application. The default is false. Faszinierend. Und welches tcpdf meinst Du? http://www.tecnick.com/pagefiles/tcpdf/doc/com-tecnick-tcpdf/TCPDF.html#methodaddHtmlLink ist es anscheinend nicht. Das tcpdf ist schon korrekt, aber die Funktion ist: http://www.tecnick.com/pagefiles/tcpdf/doc/com-tecnick-tcpdf/TCPDF.html#methodIncludeJS Die Funktion musste ich allerdings etwas modifizieren, da das Original ein paar Funktionen einbaut, die nur für Formularfelder sinnvoll sind. Das Script druckt das PDF dann automatisch und anschließend eine neue Seite aufrufen, damit das PDF nicht mehr im Browser sichtbar ist. |
#8
| |||
| |||
|
|
Stefan Dreyer wrote: Thomas 'PointedEars' Lahn wrote: "Embedded Javascript"? Das ehrt mich, das ich Dir in Bezug auf Java^WECMAscript noch was beibringen kann, was Du nicht kennst;-) Da muss ich Dich leider enttäuschen ![]() |
|
ACK. Ohne Deinen Quelltext zu sehen, kann Mann[tm] aber leider nichts dazu sagen. |
#9
| |||||
| |||||
|
|
Thomas 'PointedEars' Lahn wrote: ACK. Ohne Deinen Quelltext zu sehen, kann Mann[tm] aber leider nichts dazu sagen. Der komplette Quelltext sieht dann so aus: $script=' // Dokument schliessen, wenn es ausserhalb eines Browsers ausgefuehrt // wird if (! this.external) { this.closeDoc(); } // Druckerparameter setzen var pp = this.getPrintParams(); pp.interactive = pp.constants.interactionLevel.silent; pp.pageHandling = pp.constants.handling.none this.print (pp); // URL aufrufen app.launchURL(\'/backurl/index.php\',false); |
|
'; |
|
$this->pdf->IncludeJS($script); Um das noch etwas sauberer zu gestalten bin ich noch dabei tcpdf JS-Aktionen einzubauen (Didprint,Willprint). Da ich aber noch keine passende Referenz gefunden habe, wo die Actions und das genaue einbauen in das PDF beschrieben wird, bleibt mir nur reverse Engineering und Trial-and-Error. |
|
PS: Wenn Du obiges Beispiel ausprobieren möchtest, musst Du noch aus der tcpdf.php folgende Zeilen rausschmeissen (oder die Funktion _putjavascript entsprechend überladen) // the following two lines are uded to avoid form fields duplication after saving $js = sprintf("ftcpdfdocsaved=this.addField('%s','%s',%d ,[%.2F,%.2F,%.2F,%.2F]);", 'tcpdfdocsaved', 'text', 0, 0, 1, 0, 1); $js = "getField('tcpdfdocsaved').value = 'saved';"; Die hat wohl irgendjemand mal zur Formularbehandlung eingebaut. Wenn man das nicht will oder nutzt, muss man die rausschmeißen, weil die sonst in der Reader JS-Konsole Fehler erzeugen. |
|
hoehe=screen.height; breite=screen.width; Was hat dies mit der Fenstergröße zu tun? Genauso kannst Du fragen: |
#10
| ||||||
| ||||||
|
|
Thomas 'PointedEars' Lahn wrote: Stefan Dreyer wrote: app.launchURL(\'/backurl/index.php\',false); CMIIW, aber das sieht irgendwie nicht nach einem Link aus, sondern nach einem Popup. Nein. Das ist schon der Link, der wird auch korrekt aufgerufen. |
|
D.h. Acrobat setzt brav die komplette URL zusammen. |
|
launchURL 7.0 S Launches a URL in a browser window. |
|
Note: This method does not support URLs that begin with either scheme name javascript or file. Parameters cURL A string that specifies the URL to launch. bNewFrame (optional) If true, this method launches the URL in a new window of the browser application. The default is false. Returns The value undefined is returned on success. An exception is thrown on failure. |
|
Example 2 Add an online help item to the menu system. This code should be placed in a folder-level JavaScript file, or executed from the JavaScript Debugger console. app.addMenuItem({ cName: "myHelp", cUser: "Online myHelp", cParent: "Help", cExec: "app.launchURL('www.example.com/myhelp.html');", nPos: 0 }); |
|
Um das noch etwas sauberer zu gestalten bin ich noch dabei tcpdf JS-Aktionen einzubauen (Didprint,Willprint). Da ich aber noch keine passende Referenz gefunden habe, wo die Actions und das genaue einbauen in das PDF beschrieben wird, bleibt mir nur reverse Engineering und Trial-and-Error. Ich denke nicht, dass Du vorhandene Funktionalität nachbauen musst oder solltest. Doch muss ich leider. Es gibt zwar auch eine PDF-Javascript Funktion, die das realisiert, aber die ist im Dokument nicht erlaubt [...] |
![]() |
| Thread Tools | |
| Display Modes | |
| |