Suche // Search:

Posts mit dem Label JavaScript werden angezeigt. Alle Posts anzeigen
Posts mit dem Label JavaScript werden angezeigt. Alle Posts anzeigen

27.03.2017

Dynamischer QR-Code in XFA-Formular
//
Dynamic QR code in XFA form

In Zeiten wo jeder ein Smartphone hat, sind QR-Codes ja sehr praktisch geworden.
Nur kann man diese mit Bordmitteln in Designer leider nicht dynamisch erzeugen, Adobe erlaubt das nicht.
Nach etwas Suchen und Experimentieren, konnte ich das Problem aber JavaScript und ein paar eingebetten Teilformularen lösen. Die Lösung basiert auf dem Projekt https://code.google.com/p/jsqrencode/ und steht unter GNU GPL v3-Lizenz frei zur Verfügung.


In times where everybody has a smartphone, QR codes have become very useful.
Too bad you cannot create them dynamically with Designers onboard tools, Adobe doesn't allow it.
But, after some research and testing I found a solution based on JavaScript and a few nested subforms. The solution is based on the project found under https://code.google.com/p/jsqrencode/ and is released under GNU GLP v3 licence.

Mit dem Beispielformular dynamisch, erzeugter QR-Code
//
QR qode created dynamically with the sample form

Aktualisierungen in Version 1.2
//
Updates in Version 1.2

Nach diversen Anfragen und Anregungen von Nutzern habe ich das Skript zur Erzeugung des QR-Codes überarbeitet. Unnötiger Code wurde entfernt und die Ausgabe der QR-Codes optimiert,

After diverse questions and requests by users I've started to go over the script which generates the QR codes. Unneeded code segments where removed and the output of the QR codes optimized.


Beispielformular
//
Sample form

https://files.acrobat.com/a/preview/cb4b04f5-a8bc-48c3-8fc7-de067a709f5a

20.10.2015

Markierung modifizieren
//
Modify check mark

Kontrollkästchen und Optionsfelder kommen immer sehr farblos daher.
Dieses Beispiel zeigt, wie man ihnen mehr Farbe und einen anderen Markierungsstil verpasst.


Check boxes and radio buttons are by default very colorless.
This sample demonstrates how you can give them more color and different check mark styles.





Beispiel
//
Sample
https://files.acrobat.com/a/preview/786f55fc-242d-460a-badf-12b80a6e28db

21.07.2015

xmpMM-Entferner
//
xmpMM Remover

Heute gibt es eine Lösung abseits von LiveCycle Designer, die aber dennoch mit XFA-Technologie zu tun hat.
Aber der Reihe nach!

Acrobat DC verwendet neuerdings die Mozillas neue JavaScript-Engine SpiderMonkey 24.
Im Gegensatz zu der früheren Versionen unterstützt diese E4X (EcmaScript 4 XML) nicht mehr.
Adobe hat die E4X-Unterstützung zwar noch einmal nachgerüstet, aber ein Ende von E4X in Acrobat ist abzusehen.
Mit dem Ende von E4X werden alle JavaScript-Lösungen die E4X einsetzen nicht mehr unterstützt und benötigen daher eine Alternative.
Ein prominentes Beispiel wäre da der xmpMM-Entferner von UVSAR.
Mit diesem Tool kann man superleicht die Müllhalde von Metadaten, die z.B. InDesign gerne in PDF's hinterlässt, bereinigen.

Die neue Lösung basiert auch auch JavaScript, nutzt aber XFA-Technologie, um die Metadaten, die ja im XML-Format vorliegen, zu manipulieren.
Kurz gesagt: Wir wandeln mittels XMLData.parse() die Metadaten in ein XFA-Objekt um und können dann die Methoden für nodeList-Objekte wie remove() anwenden, um Elemente zu entfernen usw.


Today I present a solution apart from LiveCycle Designer which however uses XFA-Technology.
But let's take one thing at a time!

Acrobat DC newly uses Mozillas JavaScript engine SpiderMonkey 24.
In opposite to earlier version it doesn't support E4X (EcmaScript 4 XML) anymore.
Adobe were so kind it retrofit E4X support but this won't be for forever and the end of E4X support in Acrobat is conceivable.
This also means the end for all JavaScript solutions using E4X, so it's time to find alternatives.
A very popular Example is UVSAR's xmpMM Remover.
This nice tool enables you to remove easily the dump of needless metadata that for example InDesign adds to PDFs.

The new solution still bases on JavaScript but also uses XFA technology to manipulate the metadata that are just XML data.
In short: We convert the metadata into a XFA object using XMLData.parse() and then can use nodeList() methods like remove() to delete elements etc.


JavaScript
function removeMetadata (oDoc, aElements, aAttributes, bLog, bLang) {
 var oMetaData = XMLData.parse(oDoc.metadata, false),
  vRoot = oMetaData.nodes.namedItem("xmpmeta").nodes.namedItem("RDF").nodes.namedItem("Description"),
  vTemp = vRoot;
 
 if (bLog) {
  console.clear();
  console.show();
  console.println(bLang ? "Extrahiere aktuelle Metadaten." : "Extracting current metadata.");
 }
 
 for (var i = 0; i < vRoot.nodes.length; i += 1) {
  aElements.forEach(function (element) {
   if (element == vRoot.nodes.item(i).name) {
    vRoot.nodes.remove(vRoot.nodes.namedItem(element));
    if (bLog) {
     console.println((bLang ? "Entferne Element:\t" : "Removing Element:\t") + element);
    }
   }
  });
  
  aAttributes.forEach(function (element) {
   if (element == vRoot.nodes.item(i).name) {
    vRoot.nodes.remove(vRoot.nodes.namedItem(element));
    if (bLog) {
     console.println((bLang ? "Entferne Attribut:\t" : "Removing Attribute:\t") + element);
    }
   }   
  });
 }
 try {
  if (bLog) {
   console.println(bLang ? "Lade modifizierte Metadaten.\nSpeichern Sie das Dokument, um die Änderungen zu behalten." : "Loading modified metadata.\nSave the document to keep changes.");
  }
  oDoc.metadata = oMetaData.saveXML("pretty");
  app.execMenuItem("SaveAs");
 } catch (error) {
  app.alert(bLang ? "Sicherheitseinstellungen des Dokuments verhindern das Ändern der Metadaten." : "Security settings of the document prevent changes to metadata.");
 }
}

removeMetadata (this, ['DerivedFrom', 'History', 'PageInfo'], ['InstanceID', 'DocumentID', 'OriginalDocumentID', 'RenditionClass', 'DocChangeCount', 'CaptionWriter'], true, appLang);

xmpMM-Entferner - Folder Level Script

//
xmpMM Remover - folder level script
https://files.acrobat.com/a/preview/b3720e40-e862-49ae-853a-20e522c31565

15.07.2014

XML per Skript in Adobe Reader importieren
//
Import XML via Script into Adobe Reader

Wenn es im den Import und Export von Daten geht, gibt es im Adobe Reader viele Hürden.
Der Export klappt hier noch relativ einfach über eine E-Mail aber der Import bleibt einen ohne LiveCycle Reader Extensions ersteinmal verwehrt.

Dabei kann man schon seit Version 9.2 externe Dateien mit dem Reader importieren.
Möglich macht das die JavaScript-Methode readFileIntoStream().

Dieses Beispiel zeigt, wie man damit Daten einer XML-Datei in ein XFA-Formular importieren kann – in Adobe Reader natürlich!


When it comes to import and export of data you'll be faced to many barriers, especially in Adobe Reader.
Ok, you can export your data quite easily by sending an email, but the import is a forbidden fruit unless you have LiveCycle Reader Extensions at hand.

Well, since Reader version 9.2 you're already able to import files with Reader.
This is possible through the JavaScript method readFileIntoStream().

This example shows, how you can import data into XFA forms from external XML files – In Adobe Reader of course!

Skript zum Importieren einer XML-Datei
//
Script to import a XML file

var vStream = util.readFileIntoStream();
if (vStream) {
    var vImport, vImportData, vImportXML;
    vImport = util.stringFromStream(vStream)
    .replace(/(\<\?.*\?\>\s*)|(\<!-{2}(.|\n|\r)*-{2}\>)|(\r\n|\r|\n)/g, "");
    vImportData = eval(vImport);
    vImportXML = vImportData.toXMLString();
    xfa.datasets.data.loadXML(vImportXML, false, true);
}

Beispiel Dateien
//
Sample files
https://files.acrobat.com/a/preview/4bbd94e6-c3e9-413a-badc-5154731720a7

10.10.2013

Individuelle Masterseiten-Zähler
//
Individual Master Page Counter

Immer wieder fragen Anwender, wie man in einem XFA-Formulare für jede Masterseite einen eigenen Seitenzähler anlegen kann.
Die üblichen Methoden wie xfa.layout.page(this) oder xfa.layout.pageCount() helfen hier nicht weiter.

Die Lösung ist dennoch simpel.
Eine Masterseite hat wie jedes andere Objekt auch eine Indexnummer, beginnend bei 0 für die erste Instanz.
Auf jeder Seite, auf der diese Masterseite erneut auftritt, erhöht sich die Indexnummer um 1.

Platziert man nun ein Feld auf der Masterseite, kann man den Index der Masterseite einfach per Skript im layoutReady-Event fragen.

In FormCalc sieht das dann so aus:
$ = $.parent.index + 1

In JavaScript entsprechend so:
this.rawValue = this.parent.index + 1;


Um nun noch die Gesamtzahl aller Instanzen der Masterseite zu erhalten, zählt man einfach das auftreten der Masterseiten.
Dafür bietet sich die resolveNodes()-Methode an.

In FormCalc:
$ = xfa.resolveNodes(somExpression).length

In JavaScript:
this.rawValue = xfa.resolveNodes(somExpression).length;


Users frequently ask how to create individual page counts for each master page in a XFA form.
The common methods like xfa.layout.page(this) or xfa.layout.pageCount() don't help here.

The solution however is very simple:
As any object a master page has a index number for each occurence, which always begins at 0 for the first instance.
On each page the master page occurs again the index is increased by 1.

If you place a field on your master page you can determine its index easily with a script in the layoutReady Event.

In FormCalc it looks this way:
$ = $.parent.index + 1

In JavaScript that way:
this.rawValue = this.parent.index + 1;


Now you only need to determine how often the master page occurs.
Therefore you can use the resolveNodes() method, as it allows us to count repeatable objects.

In FormCalc:
$ = xfa.resolveNodes(somExpression).length

In JavaScript:
this.rawValue = xfa.resolveNodes(somExpression).length;



Beispiel-Formular
//
Sample form

https://files.acrobat.com/preview/99815d28-441f-47e4-a05b-88e478187157

 

25.09.2012

MailTo Macher Makro V1.0
//
MailTo Maker Macro V1.0

Vor einigen Monaten habe ich ein Makro zum Erstellen von Mail-Skripten in Schaltflächen entworfen.
Das funktionierte eigentlich ganz gut, hatte aber noch Verbesserungspotential.
Zwar konnte man damit die Empfängeradressen auch über SOM-Ausdrücke zur Laufzeit mit Feldwerte befüllen, aber jeweils nur von einem Feld.
Dasselbe war für den Betreff oder die Nachricht selbst gar nicht erst möglich.
Und dann war da noch das Problem, dass die hinzugefügten Skripte nur in der XML Quelle aber nicht im Skripteditor sichtbar waren.

Höchste Zeit für ein Update.
Nach reichlich Kopfzerbrechen kann das Makro nun viel flexibler eingesetzt werden als zuvor.
Mit den neuen Variablen können nun Teile der Empfängeradressen, des Betreff und der Nachricht zur Laufzeit mit Feldwerten aufgefüllt werden.
Auch mehrere Variablen hintereinander sind möglich, ebenso wie Variablen kombiniert mit gewöhnlichem Text.
Das Ergebnis ist nun auch unmittelbar im Skripteditor sichtbar, somit entfällt das nachträgliche Editieren der XML Quelle.


A couple of months ago I designed a macro to create mail scripts for buttons.
It worked but not very well and had room for improvements.
The receivers addresses could indeed be filled at runtime with field values using SOM expression but only on field at once.
And the same wasn't able for the subject nor message.
At least there was that nasty problem that the created scripts were not visible in the script editor but in the XML source.

It's about time for an Update.
After days of brain work the macro now is much more flexible than before.
You can add variables that will be used to fill portions of you receivers addresses, subject or message with field value at runtime.
You can use several variables at once and/or combine them with regular text.
The results now are in the script editor immediately.


Funktionsweise des Makro
//
How the macro works

Schritt 1 – Schaltfläche auswählen und Makro aufrufen
//
Step 1 – Select a button and execute the macro


Schritt 2 – Flex Dialog öffnet sich, ohne weitere Einstellungen
//
Step 2 – Flex Dialogs opens without further settings


Schritt 3 – Werte für Empfängeradresse(n), Betreff und Nachricht eingeben ...
//
Step 3 – Enter values for receiver adress(es), subject or message ...



Schritt 4 – ... oder Variablen zu diesen Felder hinzufügen.
//
Step 4 – ... or add variables to those fields.



Schritt 5 – Ein  Dialog informiert, wo das neue Skript hinzugefügt wurde.
//
Step 5 – A dialogs informs you where the new script was added to.





Schritt 6 – Das neue Skript ist im Skripteditor in click Event zu sehen.
//
Step 6 – The new script is visible under the click event in the script editor.





Aktualisierungen in Version 1.0.4
//
Updates in Version 1.0.4
  1. Anführungszeichen oder Apostrophe im Betreff und Nachricht werden nun automatisch escaped, damit die erzeugten Strings durch diese Zeichen nicht unterbrochen werden.
    //
    Quotation marks and apostrophe in the subject and message are now automatically escaped, so the generated string won't be interrupted by those characters.



MailTo Macher-Makro V1.0.4
//
MailTo Maker Macro V1.0.4
https://files.acrobat.com/a/preview/b01040ae-f0cb-4328-8ced-9e33928ee89f

10.09.2012

Standard-Funktionen im Skript-Editor anpassen
//
Modify default functions in script editor

Skripten im Designer erfordert viel Tipparbeit.
Das kann lästig sein, vor allem wenn man immer wieder dieselben Funktionen eintippt.
Von Haus aus hat Designer eine Funktion zum Erleichtern der Tipparbeit, allerdings nur spärlich ausgestattet mit einer Handvoll Funktionen.
Das ist aber kein Problem, ein Text-Editor reicht hier als Problemlöser.


Scripting requires a lot of typing work.
And it can be tedious to type the same functions over and over again.
Designer inherently already has a function to simplfy typing works, but it only offers a handful of functions.
That's not a problem, all you need is a text editor.



Standardmäßige Funktionen-Auswahl im Script-Editor (fn-Schaltfläche)
//
Default function-list in the script editor (fn-Button)




Funktionen-Auswahl im Script-Editor anpassen
//
Edit function-list in the script editor



Schritt 1 – Die Dateien "FormCalc_fn.ini" und "javaScript_fn.ini" im cfg-Ordner des Designers suchen (z.B. C:\Program Files (x86)\Adobe\Adobe LiveCycle Designer ES3\cfg) und kopieren.
//
Step 1 – Look for the files "FormCalc_fn.ini" and "javaScript_fn.ini" in the cfg-folder of Designer ( such as C:\Program Files (x86)\Adobe\Adobe LiveCycle Designer ES3\cfg) and copy them.



Schritt 2 – Kopierte Dateien in einem Text-Editor öffnen und nach Belieben weitere Funktionen oder Skripte hinzufügen.
ACHTUNG: Die Funktionen/Skripte dürfen nur einzeilig sein!
//
Step 2 – Open the copied files in a text editor and add any function or script you like.
ATTENTION: The added functions/script must be single-spaced.



Schritt 3 – Die veränderten Dateien zurück in den cfg-Ordner kopieren, um die alten Dateien zu überschreiben.
//
Step 3 – Copy the modified files back into the cfg folder to replace the old files.






Schritt 4 – Die geänderten Funktionen stehen sofort im Skript-Editor zur Verfügung. Ein Neustart des Designers ist nicht erforderlich.
//
Step 4 – All new functions are immediately available in the script editor. No need to restart Designer.





Alle FormCalc-Funktionen
//
All FormCalc-Functions
https://files.acrobat.com/preview/22f94e45-fb99-4552-9498-cf7100882b46

Alle JavaScript-Funktionen
//
All JavaScript functions
https://files.acrobat.com/preview/d13649a8-d4dd-446a-81b5-fb20c3dfa1be

07.03.2012

Bildrettungs-Makro
//
Image Recover Macro

Es ist schon etwas her, da hat John Brinkman mal erklärt, wie man eingebettete Bilder aus dem Template wiederherstellen kann.
Das ist erforderlich, wenn man die Originaldatei nicht (mehr) hat oder man Formularen von Dritten weiterbearbeitet.
John's Methode war allerdings noch auf die Hilfe eines Online-Konverters angewiesen, der die Base64-Daten in Binärdaten umwandeln konnte.
Mit diesem Makro nun, kann man die eingebetteten Bilder direkt exportieren und auf die Festplatte bannen.

Die Funktionsweise ist quasi selbsterklärend.
Einfach ein oder mehrere Bilder markieren und dann das Makro aufrufen.
Der Flex-Dialog zeigt dann alle extrahierten Bilder an, die man dann mit einer bestimmten Auflösung als PNG oder JPEG exportieren kann.


A while longer ago John Brinkman had explained how to recover embedded image from the template.
This is sometime neccessary when you don't have (any longer) the original files or edit forms of third parties.
However, John's method needs the help of an online converter, to converte the base64 data into binary data.
Now with this macro you're able to export the embedded images directly to your hard drive.

The functionality is quasi explaining itself.
Just select one or more images then load the macro.
It's Flex dialog will show all extracted images which you then can export with a specific resolution as PNG or JPEG file.




Bildrettungs- Makro (Version 0.1)
//
Image Recover macro (Version 0.1)

15.02.2012

JSLint Tester V2.2

Heute gibt's ein "neues" Makro für Designer ES2 und ADEP Designer.
Naja, so neu ist es eigentlich nicht, wurde der JSLint Checker doch schon vor einiger Zeit veröffentlicht.
Es ist auch nicht von direkt mir, sondern wurde von John Brinkman entwickelt.
Der JSLint Checker basiert auf den JSLint-Skript von Douglas Crockford und ist DAS! Tool, um seine Formularskripte auf Herz und Nieren zu testen und ggf. zu korrigieren.

Eine Warnung vorweg mit den Worten des Erfinders: "JSLint wird Ihre Gefühle verletzen".
Das stimmt und das ist gut so, schließlich kann man nur aus seinen Fehlern lernen, oder?!

Leider gibt's das JSLint Checker-Makro bislang nur auf Englisch, bislang.
Tada, der neue JSLint Tester in Deutsch!


Dialog des Makro - Einstellungen für die Überprüfung der Formularskripte festlegen


Bericht des Makro - Gefundene Fehler werden rot dargestellt


Hello, todays macro is only interesting for German-speaking developers.
It's a germanized version of the JSLint checker by John Brinkman.
The original english version of this marco is available at John's Formfeed blog.




Aktualisierungen in Version 2.1
  1. Unterstützung von deutschen Umlauten (äöüÄÖÜ) und dem Eszett (ß) für Bezeichner hinzugefügt, somit bricht das Makro die Überprüfung von Skripten, die diese Zeichen enthalten, nicht mehr ab.
  2. Fehlermeldungen im Bericht überarbeitet


Aktualisierungen in Version 2.2
  1. Bericht stellt FormCalc-Skripte ausgegraut dar, da diese vom Makro nicht auf Fehler überprüft werden können.
  2. Fehlerpositionen im Bericht werden nun mit einem Dreieck anstelle eines Zirkumflex angezeigt, um das Finden der Fehlerposition zu erleichtern.
  3. Das Makro meldet alle Aktionen nun auch im Protokollfenster von Designer.
  4. Das Makro prüft nur die Objekte die zuvor in der Design-Ansicht ausgewählt wurden bzw. das gesamte Formular wenn kein Objekt ausgewählt wurde.
  5. Das Makro kann nun einfach per Setup installiert/deinstalliert werden.
    Der Setup sucht nach bestehenden Installation von Designer (Standalone / mit Acrobat oder Workbench) und erstellt automatisch den Ordner für das Makro im Programmverzeichnis.


JSLint Tester Makro (Version 2.2)
https://cloud.acrobat.com/file/17fb604b-01d9-415c-8730-4e793917ae95

22.11.2011

Lesezeichen in XFA-Formularen
//
Bookmarks in XFA forms

Mit der Dokumentation von Features hat es Adobe ja manchmal nicht so.
So liefert die Suche nach dem Wort "bookmark" in der aktuellen ADEP Designer Hilfe genau 0 Treffer.
Dabei ist es sehr wohl möglich, Lesezeichen in XFA-Formularen zu erstellen.
Super praktisch das, kann man sich doch das nachträgliche Hinzufügen über Acrobat sparen.

Lesezeichen werden unter dem extras-Objekt von Teilformularen, Feldern oder Inhaltsbereichen erstellt.
Das können Sie entweder per Hand in der XML-Quelle machen oder dafür auch dieses Makro benutzen.

HINWEIS:
Das Makro funktioniert grundlegend auch mit Designer ES2, d.h. im Formularentwurf werden die Lesezeichen auch erstellt.
Aber Designer ES2 scheint die PDF's anders zu rendern als der ADEP Designer, weshalb die Lesezeichen im fertigen PDF-Formular dann nicht angezeigt werden.
Da es von Designer ES2 mehrere Versionen gibt (mit Acrobat, Stand-Alone, mit Workbench, with SAP ...) kann es sein, dass es in der einen funktioniert und in der anderen nicht.


It seems Adobe sometimes doesn't bother to document features.
So the search for the term "bookmark" in the actual ADEP Designer help returns exactly 0 results.
Thereby it's really possible to create bookmarks in XFA forms.
Damned useful as you don't have to do this in Acrobat afterwards.

Bookmarks are created under the extras object of subforms, fields or areas.
You can do this either manually in the XML source or with this macro.

PLEASE NOTE:
Basically this macro will also work in Designer ES2.
This means the bookmarks are created correctly in the form template.
But, Desiger ES2 seams to render the forms in another way as ADEP Designer does, which why the bookmarks aren't visible in the finale PDF form.
As there are several versions of Designer ES2 available (with Acrobat, stand alone, with Workbench, with SAP ...) it's possible that it works with one them but not with the others .



Funktionsweise des Makro
//
How the macro works

Schritt 1 – Zuerst ein oder mehrere Objekte markieren und Makro aus dem Menü aufrufen
//
Step 1 – Select one or more objects first and then execute macro from menu


Schritt 2 – Flex Dialog des Macros öffnet sich
//
Step 2 – Flex Dialog of the macro opens

Schritt 3 – Einstellungen für das erste Objekt vornehmen und mit ">" zum nächsten wechseln
//
Step 3 – Make settings for the first object and go to the next with ">"

Schritt 4 – Einstellungen für alle weiteren Objekte vornehmen und abschließend mit "OK" bestätigen
//
Step 4 – Make settings for all following objects and finally confirm with "OK"

Schritt 5 – Die Lesezeichen werden unter dem Extras-Objekt eines jeden ausgewählten Objekts erstellt
//
Step 5 – The bookmarks will be created under the extras object of each of the selected objects

Schritt 6 – Im PDF-Viewer werden die Lesezeichen angezeigt
//
Step 6 – The PDF viewer shows the bookmarks




Aktualisierungen in Version 0.6
//
Updates in Version 0.6
  1. Name des Lesezeichens lässt sich auch von einer Objekteigenschaft (Objektname, Klassenname oder Beschriftung) ableiten
    //
    The bookmark name can be deduced from an object property (object name, class name or caption) 
  2. Das Makro kann nun für mehrere, gleichzeitige Auswahlen Lesezeichen mit individuellen Einstellungen erstellen
    //
    The macro now can create bookmarks for several selections at once with individual settings 
  3. Objekte, bei denen keine Lesezeichen unterstützt werden, werden vom Makro ignoriert
    //
    Objects that do not support bookmarks are ignored by the macro 
  4. Wird kein Name für das Lesezeichen eingegeben, wird automatisch der Name "Lesezeichen" verwendet
    //
    When there is no name defined for the bookmark it will be automatically named "bookmark" 

Aktualisierungen in Version 0.7
//
Updates in Version 0.7
  1. Wenn das Marko aufgerufen wird, ohne dass ein Objekt markiert ist, läd das Makro alle unterstützten Objekte aus dem Formularentwurf
    //
    When the macro is executed without any selected object, the macro loads all supported objects from the template 
  2. Das Ändern der Anzeigesprache im Makro verändert nun auch die Sprache in den Berichten usw.
    //
    Changing the UI language of the macro now also changes the languages of the macro reports etc.

Aktualisierungen in Version 0.8
//
Updates in Version 0.8
  1. Unterstützung von Beschriftungen im Rich Text-Format
    //
    Support of captions with Rich Text formatting 
  2. Für eine bessere Übersicht wird der SOM-Ausdruck des ausgewählten Objekts im Makro angezeigt
    //
    The SOM expression of the currently selected object is displayed in the macro for a better overview


Lesezeichen-Makro - Version 0.8
//
Bookmarker Macro - Version 0.8
https://cloud.acrobat.com/file/6c846219-6c0f-4f3d-9769-68bcf2c086aa

07.11.2011

Feld Designer Makro
//
Field Designer Macro

Dass Designer ES2 ein API für Plug-Ins hat, wissen wohl nur die Wenigsten.
Tatsächlich kenne ich bislang nur eine Person, die davon berichtet hat - John Brinkman.
Höchste Zeit sich auch mal damit zu beschäftigen.

Also, sie können für Designer eigene kleine Plug-Ins basteln, um sich z.B. ungeliebte Aufgaben zu erleichtern.
Aber, das ist nicht gerade simpel.
Zum einen ist diese API nicht großartig dokumentiert, da sie noch im Beta-Stadium ist.
Zum anderen brauchen Sie andere Programme wie den Adobe Flex / Flash Builder, um Plug-Ins mit Benutzeroberfläche zu erstellen, denn Designer ES2 nutzt dafür Flex bzw. Flash.
Wenn Sie keine Benutzeroberfläche brauchen, dann reicht auch JavaScript, denn dies wird zur Steuerung der API-Funktionen verwendet.

Ich habe mich mal daran versucht, um Ihnen zu zeigen was möglich ist, und ein Makro erstellt, mit dem Sie die Kanten, Ecken und Beschriftung von Objekten bearbeiten können.
An die Flex-Entwickler — Tschuldigung für meine begrenzten Flex-Fertigkeiten ;-)

Um es zu installieren, machen Sie Folgendes ...
... bei Designer ES2 (9.x):
  1. Navigieren Sie zum Programmordner von Designer ES2 z.B:
    C:\Program Files (x86)\Adobe\Adobe LiveCycle Designer ES2\ (bei Stand-Alone-Installation)
    oder
    C:\Program Files (x86)\Adobe\Acrobat 10.0\Designer 9.0\ (bei Installation zusammen mit Acrobat)
  2. Erstellen Sie einen neuen Ordner "scripts".
  3. Erstellen Sie in "scripts" einen Unterorder mit beliebigen Namen und kopieren Sie dort hin die *.js und *.swf-Dateien.
  4. Starten Sie Designer neu.
  5. Sie können dann das Makro unter "Extras" > "Scripts" > "Makroname" ausführen.
... bei ADEP Designer (10.x):
  1. Navigieren Sie zum Programmordner von ADEP Designer z.B:
    C:\Program Files (x86)\Adobe Digital Enterprise Platform\Designer 10.0\ (bei Stand-Alone-Installation)
    oder
    C:\Program Files (x86)\Adobe Digital Enterprise Platform\Workbench 10.0\Designer 10.0\ (bei Installation zusammen mit Workbench)
  2. Erstellen Sie einen neuen Ordner "macros".
  3. Erstellen Sie in "macros" einen Unterorder mit beliebigen Namen und kopieren Sie dort hin die *.js , die *.swf und die macros.xml-Dateien.
  4. Sie können dann das Makro unter "Extras" > "Macros" > "Makroname" ausführen.


Only a few people possibly know that there is an API for Plug-Ins in Designer.
In fact, I actually only know one person, who already has spoken of it - John Brinkman.

Ok, you can create your own little Plug-Ins for Designer, maybe to streamline unpopular workflows or whatever.
But, this isn't a simple task.
On one hand, the API isn't documented very well so far as it's still in beta.
On the other hand you're possibly will need other applications like Adobe Flex / Flash Builder to create Plug-Ins with a graphical user interface as Designer ES2 uses Flex or Flash for this purpose.
If you don't need an UI then JavaScript is all you need because this is used for the API functions.

I have tried myself in this task to show you what is possible and I designed a Macro which you can use to edit the edges, corners and caption of objects.
@ Flex developers — Apologies for my limited Flex skills ;-)

To install macros, you have to do the following ...

... for Designer ES2 (9.x):
  1. Navigate to the programm folder of Designer ES2 like:
    C:\Program Files (x86)\Adobe\Adobe LiveCycle Designer ES2\ (stand-alone installation)
    or
    C:\Program Files (x86)\Adobe\Acrobat 10.0\Designer 9.0\ (installation together with Acrobat)
  2. Create a new Folder "scripts".
  3. In that folder create a subfolder with any name and copy the *.js and '.swf-files in that folder.
  4. Restart Designer.
  5. Now you can execute the macro from "Tools" > "Scripts" > "Macro name".

... for ADEP Designer (10.x):
  1. Navigate to the programm folder of ADEP Designer like:
    C:\Program Files (x86)\Adobe Digital Enterprise Platform\Designer 10.0\ (stand-alone installation)
    or
    C:\Program Files (x86)\Adobe Digital Enterprise Platform\Workbench 10.0\Designer 10.0\ (installation together with Workbench)
  2. Create a new Folder "macros".
  3. In that folder create a subfolder with any name and copy the *.js and *.swf- and macro.xml files in that folder.
  4. Now you can execute the macro from "Tools" > "Macros" > "Macro name".


Funktionsweise des Makro
//
How the macro works

Schritt 1 – Zuerst Objekt(e) markieren und Makro aus dem Menü aufrufen
//
Step 1 – Select object(s) first and then execute macro from menu


Schritt 2 – Flex Dialog des Macros öffnet sich - Standardansicht ohne Benutzereinstellungen
//
Step 2 – Flex Dialog of the macro opens - Default view without user settings

Schritt 3 – Einstellungen vornehmen und mit "OK" bestätigen
//
Step 3 – Make settings and confirm with "OK"

Schritt 4 – Ein Dialog meldet, welche Objekte verändert wurden
//
Step 4 – A dialog shows, which objects have been modified

Schritt 5 – Einstellungen wurden aus dem Flex Dialog in Designer übernommen
//
Step 5 – Settings from the Flex dialog were applied to Designer


Schritt 6 – Einstellungen wurden (wenn ausgewählt) in ein internes Stylesheet im Template gespeichert und werden in Designer ES2 als Referenzierte Objekte angezeigt bzw. im Stilkatalog von ADEP Designer.
//
Step 6 – Settings were (if selected) saved into an internal stylesheet in the template and  are displayen as references objects in Designer ES2 respectively in the style catalogue in ADEP Designer.
Stylesheet im Template // Style sheet in the template

Designer ES2
Stylesheet als refereziertes Objekt // Style sheet as referenced object
ADEP Designer
Stylesheets in Stilkatalog // Style sheets in style catalogue

Schritt 7 – Mit der usehref-Methode kann der Stile nun auf beliebige andere Objekte kopiert werden.
In Designer ES2 muss das per Hand in der XML-Quelle gemacht werden, in ADEP Designer geht das mit dem Stileditor.
//
Step 7 – With the usehref method you can copy the style on any other objects.
In Designer ES2 you have to do this manually in the XML source, in ADEP Designer you can use the Style catalogue.
Referenzsyntax für Zugriff auf Stylesheet // Reference syntax to style sheet
usehref=".#som($template.#subform.designer__stylesheet.LCB_Style_0_Textfeld)"




Aktualisierungen in Version 0.6
//
Updates in Version 0.6

  1. Sprache der Benutzeroberfläche kann auf englisch bzw. deutsch umgestellt werden
    //
    UI language can be changed to german respectively english 
  2. Füllfarbe für das Formularfeld und den Eingabebereich kann individuell festgelegt werden
    //
    Fill color for the form field and the ui can be set induvidually 
  3. Linienart für Kanten und Ecken kann individuell festgelegt werden
    //
    Line type for the edges and corners can be defined individually 
  4. Schriftart, -größe und -stil für die Beschriftung sind definierbar
    //
    Font, size and style of the caption can be defined


Aktualisierungen in Version 0.7
//
Updates in Version 0.7

  1.  Füllfarbe für Objekt und Eingabebereich kann deaktiviert werden
    //
    Fill color for object and UI can be deaktivated 
  2. Berücksichtigung der Eigenheiten von Flashfeldern
    //
    Consideration of peculiarities of Flash fields

Aktualisierungen in Version 0.8
//
Updates in Version 0.8

  1. Verbesserte Prüfungen nach unterstützen Objekttypen
    //
    Improved validation of supported object types 
  2. Beispieltext der Beschriftung kann ignoriert oder übernommen werden
    //
    Sample text for caption can be ignored or adopted 
  3. Einstellungen können als Prototypen (Stile) im internen Stylesheet gespeichert werden (auch in ES2)
    //
    Settings can be saved as pototypes (styles) within the internal stylesheet (even in ES2)

Aktualisierungen in Version 0.9.1
//
Updates in Version 0.9.1

  1. Stylesheets werden nun nach Feldtypen benannt (Textfeld, Numerisches Feld usw.)
    //
    Style sheets now are named by the field type (text field, numeric field etc.) 
  2. Skripte können bei Bedarf mit in Stylesheets übernommen werden, werden aber standarmäßig entfernt
    //
    Scripts will be removed by default but can be inherited into the style sheet if needed
  3. Das Makro ignoriert nun Skriptobjekte und ist somit wesentlich schneller
    //
    The macro now ignores script objects which why it it much faster 
  4. Unbenannte Felder führen nicht mehr dazu, dass das Erstellen eines Stylesheets scheitert
    //
    Unnamed fields do not cause the macro to fail when creating a style sheet
  5. Der Flex-Dialog funktioniert nun auch wieder in Designer ES2
    //
    The Flex dialog is now functioning in Designer ES2 again

Feld Designer-Makro - Version 0.9.1
//
Field Designer Macro - Version 0.9.1
https://cloud.acrobat.com/file/d9e175c9-acbc-426d-baf7-9b30360e76ab