automatisiertes einfügen und löschen von Seiten

Fragen & Antworten zur Steuerung von 3D Inhalten in PDFs über JavaScript
C-J
Beiträge: 26
Registriert: 24.06.2008, 08:51

automatisiertes einfügen und löschen von Seiten

Beitrag von C-J » 24.06.2008, 08:58

Hallo zusammen!

Ich habe mich heute mal hier angemeldet, um eine Frage beantwortet zu bekommen (hoffentlich :)).

Also es geht darum, das ich eine Verzeichnisstruktur habe in der es "*_kompl.pdf" Dateien gibt.

In all diesen Dateien sollen die letzten drei Seiten gelöscht werden und dafür ein PDF (mit drei Seiten) ans Ende dieser Dateien neu eingefügt werden.

Geht so was auch mit Stapelverarbeitung oder einem anderen Tool?

Danke für alle Antworten ..

Gruß, Christoph

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

automatisiertes einfügen und löschen von Seiten

Beitrag von acronaut » 14.08.2008, 22:50

Hi Christoph,

also Seiten löschen und hinzufügen geht über Javascript, jedoch (Dein Glück) nur über die Stapelverarbeitung. Die Befehle dazu sind:

Code: Alles auswählen

this.deletePages({nStart: Anfagsseitenzahl  , nEnd: Endseitenzahl});

this.insertPages ({
nPage: Seitenzahl nach der eingefügt werden soll,
cPath: "/c/temp/myCoverPage.pdf",
nStart: 0
});
Aber Vorsicht, das zählen der Seitenzahlen fängt bei 0 an, nicht bei 1.

Wenn es nicht funktioniert musst Du mal ein bisschen rumprobieren. Kann auch sein, dass man bei der Stapelverarbeitung erst mal das aktive Dokument identifizieren muss.

Gruß,
Andi Vogel

C-J
Beiträge: 26
Registriert: 24.06.2008, 08:51

automatisiertes einfügen und löschen von Seiten

Beitrag von C-J » 15.08.2008, 07:28

Hallo Andi,

hier habe ich ja gar nicht mehr mit einer Antwort gerechnet :)

Also, die Situation ist mittlerweile eine andere.

Ich habe mir pdftk installiert und möchte nun aus einem "Pool" mit ca. 250 "Einzel-PDF's" (zwischen 1 und 40 Seiten), verschiedene "Sammel-PDF's" (immer unterschiedliche Kombinationen ca. 160 Stück, bis zu 90 Seiten) zusammenstellen lassen und in eine bestimmte Verzeichnisstruktur kopieren lassen.

Und das ganze möchte ich immer wiederholen können.

(Es werden diverse PDF's im Pool durch neuere Versionen ersetzt, und dann muss quasi alles neu generiert werden, deshalb will ich es per Batch machen lassen.)

Leider weis ich nicht, wie ich in einer "Batchdatei" pdftk dazu bringen kann mehrmals diese "Collate" Aktion ausführen zu lassen.:(

Wenn sowas auch mit dem Acrobat selber geht, wäre das natürlich perfekt.

Ich muss zu meiner Schande gestehen, dass ich über die normale Benutzung des Acrobaten noch nicht großartig hinaus gekommen bin.

Das mit dem Javascript klingt sehr interessant, wie kann ich denn solche Scripte dem Acrobaten mittteilen? Bzw. wo finde ich mehr Informationen darüber (möglichst Deutsch)

Bin für jede Hilfe und Info dankbar, das ganze ist ziemlich wichtig für mich :)

Ich habe Acrobat 5 WinXP

Gruß, Christoph



unexist
Beiträge: 2
Registriert: 05.11.2008, 13:37

automatisiertes einfügen und löschen von Seiten

Beitrag von unexist » 05.11.2008, 14:42

Hallo Community!

Bin noch relativ neu hier, jedoch habe ich ein wenig Ahnung von Acrobat und versuche nun auch ein kleines insertPages Script zu schreiben bei dem einfach ein paar Seiten in ein neues Dokument eingebunden werden sollen.
Nun besteht aber ein ganz anderes Problem und kann mir nicht erklären wie ich das umgehen kann. Diese Fehlermeldung tritt eigentlich bei jedem JavaScript Befehl auf, den ich versuche zum Laufen zu bekommen.

"NotAllowedError: Sicherheitseinstellungen verhindern den Zugriff auf diese Eigenschaft oder Methode.
Doc.insertPages:4:Field CSO_BNC_option_1:Mouse Up"

Das Script dazu lautet:

this.insertPages({
nPage : -1,
cPath : "/Q/DEWETRON/Bibliothek MArkus/js_api_reference.pdf",
nStart: 0
});


Lg aus Österreich

C-J
Beiträge: 26
Registriert: 24.06.2008, 08:51

automatisiertes einfügen und löschen von Seiten

Beitrag von C-J » 05.11.2008, 14:56

Hallo unexist,

ich vermute jetzt mal, dass es von den Internetsicherheitseinstellungen von deinem Rechner geblockt wird.

Überprüfe mal, ob javascript erlaubt ist oder nicht.

 

Übrigens mein oben beschriebenes Problem habe ich inzwischen gelöst.

Allerdings ganz ohne Acrobat ...

Gruß aus Deutschland, Christoph

unexist
Beiträge: 2
Registriert: 05.11.2008, 13:37

automatisiertes einfügen und löschen von Seiten

Beitrag von unexist » 05.11.2008, 16:07

Hallo C-J

Danke für deine Antwort, nur habe ich mich jetzt schon fast zum Idioten gesucht, aber keine passende Lösung für dieses Problem gefunden. Ich habe in der Windows Firewall nachgesehen, doch dort scheint kein Eintrag zu Java SUN o.ä. auf. Wo kann ich den noch nachgucken? Wollte nämlich auch Java zu den Listen der "Nicht blockierten" Anwendungen hizufügen, jedoch findet sich auf meinem Rechner keine exe Datei. Bei den Sicherheitseinstellungen in der Java Konsole habe ich auch nichts dementsprechendes gefunden, kannst du mir villeicht noch ein paar Tips geben?

Mit freundlichen Grüßen,
Christian

C-J
Beiträge: 26
Registriert: 24.06.2008, 08:51

automatisiertes einfügen und löschen von Seiten

Beitrag von C-J » 05.11.2008, 16:30

Hallo Christian,

was ich meine sind die Internetoptionen vom MSIE.

Wenn man im Internet Explorer auf EXTRAS Geht, gibt es dort ganz unten "Internetoptionen" dann der Reiter "Sicherheitseinstellungen" dann "Stufe anpassen" wählen und javascript erlauben ...  Vielleicht löst das dein Problem :)

 

Gruß, Christoph

Benutzeravatar
FileAffairs
Beiträge: 372
Registriert: 15.09.2008, 20:14

automatisiertes einfügen und löschen von Seiten

Beitrag von FileAffairs » 06.11.2008, 09:35

Hallo C-J, hall unexist,

die Meldung hat nichts mit dem IE zu tun sondern kommt von Acrobat resp. dem Reader selbst. Einfügen einer Seite ist eine eingeschränkte Funktion und geht nur in Batch, Console oder Menüaufrufen es sei denn man hat die Funktion vorher als Trusted definiert.

Details dazu finden sich im Acrobat SDK.

Gruß
FileAffairs

C-J
Beiträge: 26
Registriert: 24.06.2008, 08:51

automatisiertes einfügen und löschen von Seiten

Beitrag von C-J » 30.09.2010, 13:29

0
FileAffairs hat geschrieben:Hallo C-J, hall unexist,

die Meldung hat nichts mit dem IE zu tun sondern kommt von Acrobat resp. dem Reader selbst. Einfügen einer Seite ist eine eingeschränkte Funktion und geht nur in Batch, Console oder Menüaufrufen es sei denn man hat die Funktion vorher als Trusted definiert.

Details dazu finden sich im Acrobat SDK.

Gruß
FileAffairs
[fontsize=3]Hallo zusammen,
Ich habe eine ganze Weile nicht mehr an der Sache (Threadtitel) weitergearbeitet, aber nun wird es ernst :)

Ich bin mittlerweile ein minimales Stück schlauer geworden und habe jetzt verstanden, dass diverse Dinge als "Trusted Function" deklariert werden müssen ..[/fontsize] [fontsize=3]

Aber genau an dieser Stelle hänge ich [/fontsize] [fontsize=3]:(  .. ich habe mir den js Guide und die js Referenz heruntergeladen .. [fontsize=2]Javascript ist in den Grundeinstellungen (Acrobat Pro 8.2.4)  aktiviert .. die Option darunter (Sicherheitsrichlinie für globale Objekte) verstehe ich schon nicht mehr .. muss sie jetzt aktiv sein oder nicht?  .. Momentan ist sie aktiv.[/fontsize]

Jedenfalls möchte ich Scripte global (also für jedes x beliebige PDF) zur Verfügung haben und zwar unter einem neuen Menüpunkt im Hauptmenü ... [fontsize=2](Datei, Bearbeiten, Anzeige, [...] [/fontsize][/fontsize] [fontsize=3][fontsize=2]mein Menüpunkt).[/fontsize]

Im Guide habe ich einen Beispielcode gefunden ... [fontsize=2][fontsize=2]D[/fontsize]er scheinbar für die englische Acrobat Version ist (ich habe da halt schon die ersten Verständnisschwierigkeiten)  ...[/fontsize][/fontsize] [fontsize=3]

Original-Code:[/fontsize]

Code: Alles auswählen

app.addSubMenu({ cName: "New", cParent: "File", nPos: 0 })
app.addMenuItem({ cName: "Letter", cParent: "New", cExec: "app.newDoc();"});
app.addMenuItem({ cName: "A4", cParent: "New", cExec: "app.newDoc(420,595)"});
[fontsize=3]

Den Beispielcode habe ich folgendermaßen umgeschrieben ..[/fontsize] [fontsize=3]
[/fontsize]

Code: Alles auswählen

app.addSubMenu({ cName: "Neu_Test", cParent: "Datei", nPos: 0 })
app.addMenuItem({ cName: "Letter", cParent: "Neu_Test", cExec: "app.newDoc();"});
app.addMenuItem({ cName: "A4", cParent: "Neu_Test", cExec: "app.newDoc(420,595)"});
app.endPriv();
[fontsize=3]Jetzt habe ich auf jeden Fall begriffen, dass es als TrustedFunktion deklariert werden muss, richtig? (Im Grunde genommen sind das für mich drei Funktionen oder ist es eine Function mit drei Methoden? kein Plan)

Also habe ich in die "[/fontsize] [fontsize=3]glob.settings.js" Folgendes reingeschrieben ... (eine "config.js" existiert bei mir NICHT, so wurde es im Guide beschrieben)[/fontsize]  .. Ich verwende einen externen Editor (TextPad) .. dieser ist in den Grundeinstellungen von Acrobat auch als Standard Editor eingestellt

[fontsize=3]Hier der Code für die glob.settings.js:[/fontsize]

Code: Alles auswählen

trustedaddSubMenu = app.trustedFunction( function ( oArgs )
{
app.beginPriv();
app.addSubMenu({ cName: "Neu_Test", cParent: "Datei", nPos: 0 })
app.addMenuItem({ cName: "Letter", cParent: "Neu_Test", cExec: "app.newDoc();"});
app.addMenuItem({ cName: "A4", cParent: "Neu_Test", cExec: "app.newDoc(420,595)"});
app.endPriv();
}
);
[fontsize=3].. ist wahrscheinlich totaler Blödsinn.

[/fontsize]Die korrekten Verzeichnispfade habe ich mir in der Konsole mit diesen beiden Codeschnipseln ausgeben lassen ..

Code: Alles auswählen

// for App folder scripts
app.getPath("app", "javascript");
// for User folder scripts
app.getPath("user", "javascript");
[fontsize=3]
Trotzdem bekomme ich im Debugger halt immer die Meldung, dass Sicherheitsrichtlinien verletzt werden und dass darum das Script nicht ausgeführt wird .. nach dem Schließen von Acrobat werden die ".js" Dateien auch von selbst wieder geleert!!??[/fontsize] [fontsize=3]

Lange Rede ...  Ich möchte einfach nur einen persönlichen Menüpunkt global in Acrobat erzeugen (z.B. "Scripte") .. dort möchte ich dann verschiedene Scripte als Menüpunkt angezeigt bekommen und in jedem x beliebigen PDF ausführen können .. es geht immer noch darum GEZIELT Seiten innerhalb des ersten PDF zu löschen und aus einem zweiten geöffneten PDF Seiten in das erste PDF GEZIELT einzufügen/verschieben.[/fontsize] [fontsize=3]

Aber ich bekomme es ja nicht mal hin den Menüpunkt zu erzeugen [/fontsize] [fontsize=3]:( ..
Ein kleines Beispielscript, zum Löschen von Seiten, habe ich erfolgreich über die Konsole ausführen können. D.h. da beiss ich mich erst mal allein durch .. Die Lösch- Einfügescripte möchte ich später mit einer Dialogbox ausstatten, wo ich zu löschende/verschiebende Seiten in einem Textfeld angeben möchte, da immer die selben Funktionen –nur mit anderen Seitenbereichen– ausgeführt werden sollen .. (Ich möchte quasi in ein Loseblattwerk-PDF Aktualisierunglieferungen einfplegen .. nur zum Verständnis).[/fontsize]

[fontsize=3]Meine große Hoffnung ist, dass jemand diesen Roman hier durchliest und mir ein wenig unter die Arme greifen kann, damit ich wenigstens schon mal diesen Menüpunkt –mit sagen wir mal einem Item/Unterpunkt– erzeugt bekomme.
Ich denke mal, wenn ich das dann verstanden habe, bin ich schon mal einen großen Schritt weiter.

Ich habe wirklich[fontsize=3] [/fontsize][/fontsize][fontsize=3]sehr lange im Internet nach Beispielen gesucht, aber ich finde einfach gar nichts .. auch hier im Forum :([/fontsize]

[fontsize=3]Mir reichen auch schon Links zu funktionierenden Beispielen (also wirklich fertigen Code und keine "Syntax-Gerüste", die stehen ja schon im Guide und in der Referenz .. werd ich aber nicht schlau draus .. einfach zu abstrakt .. [fontsize=2]1.Ask the user to enable the Enable Menu Items JavaScript Execution Privileges option, in the JavaScript section of the Preferences. (hab ich kapiert)
2.Use the trusted function approach discussed above.
[/fontsize]
[fontsize=2](ja, bloß wie leite ich das auf meine Funktion ab?)[/fontsize] ).. am besten auf Deutsch .. aber zur Not auch in Englisch.

[/fontsize][fontsize=3]Also, bitte helft mir! :)[/fontsize]
[fontsize=3]
Vielen Dank und freundliche Grüße,
CJ[/fontsize]

C-J
Beiträge: 26
Registriert: 24.06.2008, 08:51

automatisiertes einfügen und löschen von Seiten

Beitrag von C-J » 01.10.2010, 06:54

Hallo zusammen,
ich bin wieder ein Stück weiter gekommen ..

Scheinbar kann man in Acrobat gar keine neuen Menüpunkte "auf Rootebene" erzeugen. Da kann ich auch lange suchen :D

Mit dem folgenden Code ist es mir dann schließlich gelungen, einen neuen Menüpunkt (mit Submenü) im "Dokument" Menü zu erzeugen.

Code: Alles auswählen

app.addSubMenu({ 
cName: "ICS_Scripte",
cUser: "ICS Scripte",
cParent: "Document",
nPos: 0 
})

app.addMenuItem( {
cName: "testscript",
cUser: "testscript",
cParent: "ICS_Scripte",
// nPos: 1
cExec: "---",
cEnable: "event.rc = (event.target != null);"
}); 
Diese TrustedFunction Geschichte ist wohl offenbar nur dafür zuständig die "hinterlegten" Scripte .. also die durch den Menüpunkt ausgelöst werden sollen, zu überwachen.

Bin mal gespannt ob ich das jetzt hinkriege, beim klicken auf "testscript" Acrobat dazu zu bringen mein erstes Script auch wirklich auszuführen :D ...

Also, das mit dem Menüpunkt erzeugen ist erst mal geklärt.

Über hilfreiche Informationen zu der TrustedFunction Sache würde ich mich sehr freuen!

VG,
CJ

Antworten