Suche // Search:

Posts mit dem Label File Name werden angezeigt. Alle Posts anzeigen
Posts mit dem Label File Name werden angezeigt. Alle Posts anzeigen

21.01.2014

Gesperrte PDF-Eigenschaften in XFA-Formularen ändern
//
Edit locked PDF properties in XFA forms

Wie schon zuvor beschrieben, ermöglicht das Service Pack 1 für Designer ES4, den Dokumenttitel anstelle des Dateinamens in der Titelleiste des PDF-Viewer anzeigen zu lassen.
Aber, das funktioniert nur mit statischen Formularen und eben nur wenn man ES4 hat.

Nun ist die Verwendung des Dokumenttitels aber die viel schönere Lösung, schließlich erlaubt er Zeichen, die in Dateinamen gar nicht erlaubt sind und Dateinamen sind nicht selten nichtssagend.
Bei regulären PDF's kann man das schnell mit Acrobat in den Dokumenteigenschaften ändern, aber bei XFA-Formularen ist hier alles ausgegraut.

Die Lösung des Problems liegt dennoch in Acrobat und funktioniert mit allen XFA-Formularen.
Gleich mehr dazu.

Ein positiver Nebeneffekt stellt sich hierbei noch ein, denn es lassen sich auch noch viele andere PDF-Eigenschaften ändern, die XFA-Formularen normalerweise vorenthalten werden.
So können Sie wie bei regulären PDF's die Dokumentbeschreibung ändern, festlegen ob Menüsleisten ausgeblendet werden sollen, wie die Seitenanpassung erfolgen soll oder welcher Seitenbereich gedruckt werden soll.


As I've already described earlier the service pack 1 for Designer ES4 allows you to set up your forms to display the document title instead of the file name in the PDF viewers title bar.
But, this only works for static forms and only if you use ES4.

The use of the document title is the much better solution, as it allows the usage of characters you cannot use in file names and those file names are quite often vacuous.
With regular PDF's you would open its document properties in Acrobat to edit the setting, but not so with XFA forms as everything is grayed out then.

The solution that for is also in Acrobat and it works with all XFA forms.
Of which more later.

It additionally has an excellent side effect which will allow you to change many more PDF properties that are regulary kept away from XFA forms.
You'll be able to edit the document description, set which menu bars to hide, how the intial view has to be or what page range should be printed by default.



Schritt 1 – Öffnen Sie Ihre XFA-Formular in Acrobat und öffnen Sie dessen Eigenschaften mit [Strg] + [D].
//
Step 1 – Open your XFA form in Acrobat and then open its properties by pressing [Ctrl] + [D].
Gesperrte Dokumenteigenschaften in XFA-Formualren
//
Locked PDF Properties in XFA forms


Schritt 2 – Unter dem Reiter [Sicherheit] ändern Sie das Sicherheitssystem auf „Kennwortschutz“.
//
Step 2 – Under the [Security] tab change the Security Method to 'Password Security'.


Schritt 3 – Geben Sie ein Passwort zum Öffnen des Dokuments ein und bestätigen Sie es im folgenden Dialog. Das Passwort muss nicht sicher sein — ein einzelnes Zeichen reicht hier völlig aus.
//
Step 3 – Enter a password to open the document and confirm it in the following dialog. You don't have to enter any strong password — a single character is enough.


Schritt 4 – Klicken Sie nun rechts auf die Schaltfläche [Einstellungen] ändern.
//
Step 4 – Click on the [Change Settings] button on the right.
Dokumenteinschränkungen bestehen noch
//
Document Restrictions are still there



Schritt 5 – In diesem Dialog müssen Sie nichts machen, klicken Sie einfach auf [OK] um ihn zu schließen. Danach passiert etwas Unerwartetes …
//
Step 5 – In this dialog you don't need to do anything, just click [OK] to close it. After that something unexpected happens …
Hier gibt's nichts zu tun, einfach nur OK klicken
//
Nothing to do here, just click OK

Schritt 6 – … Acrobat entfernt fasst alle Dokumenteinschräkungen vom Formular. Das ist genau was wir brauchen, also Klicken Sie auf [OK], um diese Dokumenteigenschaften zu speichern.
//
Step 6 – … Acrobat removes most of the Document Restrictions from the form. That's exactly what we need, so click [OK] to save the current document properties.
Dokumenteinschränkungen wurden ausgehoben
//
Document Restrictions are removed

Schritt 7 – Nun öffnen Sie die Dokumenteigenschaften erneut. Sie sind nun in der Lage Elemente unter den Reitern [Beschreibung], [Ansicht bei Öffnen] usw. zu ändern. Zum Beispiel können Sie den Dokumententitel anstelle des Dateinamens anzeigen lassen oder die Menüleiste beim Öffnen des Formulars ausblenden lassen.
//
Step 7 – Now open the Document Properties again. You're able to edit different elements under the [Description], [Inital View] tab etc. For example you can select the document title to be displayed instead of the file name or hide the menu bar when the form opens.
Felder der Dokumentbeschreibung veränderbar
//
Fields of Document Description now editable

Ansicht beim Öffnen veränderbar
//
Initial View Settings editable

Schritt 8 – Nachdem Sie alle Eigenschaften geändert haben, setzen Sie das Sicherheitssystem wieder auf keine Sicherheit und speichern das Formular ab.
//
Step 8 – After you applied all changes set the Security Method back to no Security and then save the form.


Beispielformular
https://files.acrobat.com/preview/2b06f176-acaf-4d6a-820b-fc881046b1e5
//
Sample form
https://files.acrobat.com/preview/b7c0ac80-23c2-4747-b37c-4254d7da002c


30.11.2009

Formulare in bestimmte Verzeichnisse speichern und nach Inhalt aus Formularfeld benennen
//
Save forms to specific directories and named after form field data

Dies Thema hat mich selbst eine lange Zeit beschäftigt.
Wie speichert man ein Formular in ein bestimmtes Vereichnis und wie benennt man es dann auch gleich noch nach einem Feldinhalt aus dem Formular selbst?

Programme wie MS Word können Letzteres ja, nicht so der Adobe Acrobat oder Reader.

Also muss JavaScript wieder her.
Damit klappt's, aber auch nur unter Verwendung von Folder Level Skripten, da die Sicherheitseinstellungen von Acrobat und Reader es ansonsten verbieten.
Eine einfache Variante des Ganzen könnte etwa so aussehen.
Ein Folder Level Script sowie ein Button und Formularfeld im Formular interagieren miteinander.

This issue took a long time for me to clear up.
How can I control the save directory of a form and how do I also rename the form after some data of the form itself?

Applications such as MS Word are able to do the latter, but Adobe Acrobat or Reader don't.

So you need JavaScript to realize this task.
But, because of Acrobat's and Reader's security restrictions this is only possible with folder level scripts.
A simple version can look like this.
The folder level script and also a button and field in the form interact with each other.


Beispiel-Formular – Speicherung in durch Skript angegebene Verzeichnisse
//
Sample form – Saving into directories specified through scripting


Beispiel-Ordner – Speicherung in einer der 4 Unterodner mittels JavaScript möglich
//
Sample folders – Saving directly into one of the 4 subfolder via JavaScript



Folder Level Script – JavaScript

var LCB_SaveAs = app.trustedFunction(function(doc) 
{         
    app.beginPriv();
  var LCB_SaveAsTarget = SaveAsTarget;
  doc.saveAs({cPath: LCB_SaveAsTarget});
    app.endPriv();
});


JavaScript zur Erstellung des Zielpfads
//
JavaScript to create save path 
// Variables we use in the filename taken from fields somewhere in the form
var Var1 = xfa.resolveNode("form1.#subform.cDepartment").rawValue;
var Var2 = xfa.resolveNode("form1.#subform.cName").rawValue;

// Create a time stamp for the new file
var TimeStamp = util.printd("ddmmyyyy", new Date());

// This functions checks the current file name. If it is not the correct file name we don't save the file under a new file name
if (event.target.documentFileName === "LCB_SaveAs_V2.pdf") 
 {
 // Name of a sub directory
 // To save in the same directory enter ""
 // To save in a named subfolder enter "Foldername/" (don't forget the trailing slash!)
 var Directory = Var1 + "/";
 // Concatenate the variables to a file name
 var NewFileName = "LCB_SaveAs_V2" + "_";
 NewFileName += Var2 + "_";
 NewFileName += TimeStamp;
 NewFileName += ".pdf";
 // Replace all characters that are not allowed to be used in a save path – this it to avoid an raise error
 NewFileName = NewFileName.replace(/[\s\!\?\<\>\'\"\*\/\\\=\?\^\`\{\}\|\~]+/g, "_");
 // Concatenate save path with new file name for this form and show it into this field
 this.rawValue = event.target.path.replace(event.target.documentFileName, "") + Directory + NewFileName;
 }
else
 {
 this.rawValue = event.target.path;
 }

JavaScript für Speichern-Button
//
JavaScript for Save Button


if (event.target.documentFileName === "LCB_SaveAs_V2.pdf")
  {
  //A variable for the Folder Level Script
  SaveAsTarget = xfa.resolveNode("form1.#pageSet.Page1.FileParameters.TargetSubDirectory").rawValue; 
  try
   {
   event.target.LCB_SaveAs(event.target);
  
   // Show message to inform the user, where the new file was saved.
   xfa.host.messageBox("File has beed saved under:\r\r" + SaveAsTarget, "File Saved", 3, 0);
   xfa.form.execInitialize();
   }
  catch(e)
   {
   xfa.host.messageBox(e.toString().replace("RaiseError: ","") + "\r\rEnsure the destination folder exists and there isn't already a file with the same file name in that folder!", "Failed to save file", 0, 0);   }
  }
else
  {
  // Open the 'Save As' dialog to let the user choose the target and filename.
  app.execMenuItem("SaveAs");
  }

Das Beispielformular geht noch weiter rein in die Materie und wird sie sicher interessieren.
Sie können z.B. in verschiedene Unterverzeichnisse speicher, je nach dem, welchen Wert Sie aus einer Dropdown-Liste ausgewählt haben.


The example form is much more detailed and will surely find your interest.
For example, you can save the form into one of several sub directories, depending on the selections you made in a drop down list.
Aktualisierung - Eine neuere Version ist hier verfügbar
//
Update - A newer version is available here
http://thelivecycle.blogspot.de/2015/06/save-with-new-name-in-specified.html