Mehrere Dokumente mit JS schließen

Fragen & Antworten zur Steuerung von 3D Inhalten in PDFs über JavaScript
Antworten
Benutzeravatar
Stuttgarter
Beiträge: 40
Registriert: 29.03.2007, 12:59

Mehrere Dokumente mit JS schließen

Beitrag von Stuttgarter » 05.09.2007, 10:17

Hallo zusammen,

hab ein Problem und hoff ihr könnt mir weiterhelfen! ;)
Ich will zwei PDF Dokumente über ein Script schließen.
Zu Situation:
Ich habe ein PDF, dort liegt ein Button über den ich ein weiteres PDF öffne. Jetzt soll en in dem zweiten Dokument auch über einen Button, beide Dokumente geschlossen werden. Ich komm aber nicht drauf wie ich das nicht aktive PDF schließe.


Grüße aus Stuttgart,
Constantin

acronaut
Beiträge: 693
Registriert: 14.09.2006, 21:32
Kontaktdaten:

Mehrere Dokumente mit JS schließen

Beitrag von acronaut » 02.10.2007, 19:19

Hi Constantin,

dazu findest Du was in der JavaScript Referenz von Acrobat (http://www.adobe.com/devnet/acrobat/)
unter "app Object" und "Document Object".

Müsste dannirgendwie so aussehen:

Code: Alles auswählen

var d = app.activeDocs;
for (var i in d)
{
...
};
 
Kann nur gut sein, dass diese Geschichte nicht ganz so trivial ist, weil evtl. Sicherheitsbeschränkungen dagegen sprechen. Habs mal in der V8 ausprobiert (mit der Vorlage aus der JS Referenz von der V7 :( ) und da hats nicht so geklappt, wie ich mir das vorgestellt habe. Nämlich leider gar nicht.

Aber wenn Du da weiter gekommen bist, schreibs doch bitte auch hier rein.

Gruß,
Andi Vogel


Benutzeravatar
Stuttgarter
Beiträge: 40
Registriert: 29.03.2007, 12:59

Mehrere Dokumente mit JS schließen

Beitrag von Stuttgarter » 10.10.2007, 15:05

Hey Andi,

damit habs ichs auch schon probiert, leider erfolglos :X

Konnte mich die Tage/Wochen auch garnicht damit beschäftigen. Aber wenns noch jemand rausfindet, bitte reinstellen ;)

Liebe Grüße,
Constantin

spongebob
Beiträge: 41
Registriert: 09.02.2007, 20:49

Mehrere Dokumente mit JS schließen

Beitrag von spongebob » 30.10.2007, 20:53

[fontsize=2]Ja, also ich versuch mal auf die schnelle zu erklären wie das geht.

Als erstes klappt 'var d = app.activeDocs' nicht mehr so einfach :-( Wie Andreas schon erwähnt hat, gibt es seit V7 Sicherheitsblockaden.

Da wäre ...[/fontsize]
  • [fontsize=2] 'app.activeDocs' kann nicht mehr ohne weiteres von jedem Event ausgeführt werden. Diese Befehle müssen zwischen 'app.beginPriv();' und app.endPriv()' stehen und außerdem muß die komplette Funktion als trustedFunction deklariert werden.[/fontsize]
  • [fontsize=2]man muß das zu schliessende Dokument für JS 'sichtbar' machen. d.h. man muß mit 'doc.disclosed = false' oder 'this.disclosed = false' was ebenfalls in 'app.beginPriv();' und app.endPriv()' stehen und [/fontsize][fontsize=2]als trustedFunction deklariert werden.[/fontsize][fontsize=2] Wenn das nicht passiert, dann ist das vorhandene Dokument evtl. nicht im Array von 'activeDocs' aufgeführt.[/fontsize]
[fontsize=2]das Skript sollte ungefähr so aussehen:

[/fontsize] [fontsize=2]function DokumentSchliessen ( zielPDF )
  {
       app.beginPriv();
       var Dok = app.activeDocs;
       for (var i=0; i < Dok.length; i++)
          {
                if (Dok.info.Title == zielPDF)
                    { Dok.closeDoc(); }
          }
        app.endPriv();
  }
app.trustedFunction (DokumentSchliessen);[/fontsize]
[fontsize=2]

Aufrufen könnte man das zB. über ein Button starten. In dem Javascript sollte sowas stehen:

[/fontsize] [fontsize=2]DokumentSchliessen ("meinZuSchliessendesPDF");

Wie gesagt müssen die Dokumente auch mit 'this.disclosed = false' stehen, sonst kann man das nicht mit 'app.activeDocs' aufrufen bzw. finden.

Auch eine Schleife die alle Dokumente auf 'disclosed = false' stellt, wäre unsinnig, weil da die entsprechenden Dokumente nicht per JavaScript angesprochen werden können was 'disclosed' bewirken soll. Eine generelle Lösung hab ich dafür jetzt leider nicht parat.

Diese Beispiele sollten nur ungefähr erklären wie das funktionieren könnte. Ein fehlerfreies funktionieren nach Cut/Paste wäre reiner zufall :-) Da ich das in meinen eigenen Skripte so ähnlich benutzen muß, weiß ich das es klappt. Für weitere Fragen stehe ich gern zur Verfügung.

... achja:
evtl sollte man auch Abfrage einbauen, welche Acrobat-Version benutzt wird. Wenn eine ältere Version auf funktionen wie app.beginPriv() stößt, kommt es zum abbruch bzw zur Fehlermeldung. So kann man das Skript auch für ältere Versionen von Acrobat benutzt werden (so machen wir das zB).

Gruß René
[/fontsize]
[fontsize=2]

[/fontsize]

acronaut
Beiträge: 693
Registriert: 14.09.2006, 21:32
Kontaktdaten:

Mehrere Dokumente mit JS schließen

Beitrag von acronaut » 03.11.2007, 21:57

Hi René,

cool, vielen Dank.

Gruß,
Andi


Benutzeravatar
Stuttgarter
Beiträge: 40
Registriert: 29.03.2007, 12:59

Mehrere Dokumente mit JS schließen

Beitrag von Stuttgarter » 05.11.2007, 11:05

Hi René,

auch von mir vielen Dank ;)

Liebe Grüße,
Constantin

Antworten