PDF Formular - Autocomplete

esCape

New member
Registriert
5 Sep. 2011
Beiträge
406
Guten Morgen,

Ich habe ein Problem, ich habe mit Scribus / Acrobat Writer ein ausfüllbares PDF erstellt, dort habe ich zwei Felder wo ich gerne ein Automatismus drin hätte.

Feld "fcode" besteht aus Nummer von 1-300, wenn der Mitarbeiter nun 202 eingibt soll im Feld "fcodetxt" automatisch der passende Text dafür ausgefüllt werden, kennt jemand eine Möglichkeit das einzubinden ?

Also eigentlich so in der Art:

Code:
if "fcode" = 202
then "fcodetxt" = Text202

Nur wie funktioniert sowas in einer PDF (ich glaub das nennt sich AcroForms)

edit: Wenn wir hier keine Lösung finden, muss ich es wohl mit PHP + MySQL austüfteln, aber das wäre die schlechtere Lösung.
 
Sooo, hab schonmal was gefunden ^^

Einfacher Java Script... das wird aber ein Aufwand das alles so zu schreiben :D

Code:
var one = this.getField("fcode");
var two = this.getField("fcodetxt");

if (one.value == '202') {two.value='Text zu 202'} 
if (one.value == '203') {two.value='Text zu 203'}
 
Zuletzt bearbeitet:
kenn mich mit AcroForms und Co. nicht aus, aber versuch mal mit diesem Code

Code:
var one = this.getField("fcode");
var two = this.getField("fcodetxt");

if (parseInt(one.value) > 0 && parseInt(one.value) < 301) {two.value='Text zu ' + one.value}
 
Zuletzt bearbeitet:
Hi oezix,

Dein Ansatz ist gut und funktioniert auch, nur ist mein Problem das ich natürlich nicht nur "Text zu 203" usw... reinschreiben muss sondern, zu jeder Zahl einen bestimmten Text (liegt in einer Excel Datei vor), also wird mir nichts übrig bleiben meinen Ansatz zu nehmen und alles zu übertragen.

Oder kennt jemand eine Möglichkeit, aus einer Excel bzw. csv Datei die Daten zu holen ?
 
du könntest versuchen die Texte in ein Array zu packen die du im Skript verwenden kannst, aber das macht auch nur sinn wenn das Text nicht zu groß ist
 
sind die Daten dynamisch oder eher statisch ?
 
Ist auf jeden Fall eine Statische Datei. Leider macht mein Acrobat X Pro nun Probleme, beim bearbeiten von Formulardateien, werde das ganze Thema daheim nochmal auffassen.

Datei ist so aufgebaut (Beispielhaft):

Code:
--------------------------------------------
T | 101 | PC-Störung
e | 102 | PC-Störung Vandalismus
c | 103 | PC Alarm
h | 104 | Anlage Einbruch
n | 105 | LAN Störung
i | 106 | LAN Störung Vandalismus
k | 107 | usw...
---------------------------------------------

So ist es einfacher:

Unben2annt.PNG
 
Zuletzt bearbeitet:
probier mal diesen Codeabschnitt

Code:
var fcode = new Array();
fcode["101"] ="PC-Störung" ;
fcode["102"] =  "PC-Störung Vandalismus";

var one = this.getField("fcode");
var two = this.getField("fcodetxt");

if (parseInt(one.value) > 0 && parseInt(one.value) < 301) {
two.value=fcode[one.value];
}

wobei ich ausgehe das die Schlüssel von 1 bis 300 existiert, sonst muss man es wieder ändern
 
Zuletzt bearbeitet:
- Es bestehen Codes von 101 -> 2007 (wovon aber viele nicht benutzt werden, wie z.B. bei 10x nur von 101 -> 107)

- Dein Code geht, wenn ich ihn abändere:

Code:
var fcode = new Array();
fcode["101"] = ["PC-Störung"];
fcode["102"] = ["PC-Störung Vandalismus"];

var one = this.getField("fcode");
var two = this.getField("fcodetxt");

if (parseInt(one.value) > 0 || parseInt(one.value) < 301) {
two.value=fcode[parseInt(one.value)];
}

- Aber ob das < 301 berücksichtigt wird weiß ich nicht, da bei deinem ersten Code konnte ich auch 3000 eingen und er hat "Text zu 3000" ausgegeben.
 
Code:
var one = this.getField("fcode");
var two = this.getField("fcodetxt");

var code = new Array();
code["101"] = "PC-Störung";
code["102"] = "PC-Störung Vandalismus";

for(var idx in code) {
  if (one.value == idx) {
    two.value=code[one.value];
  }
}
 
Zuletzt bearbeitet:
Ne bei deinem letzten Code kommt leider immer:

Code:
undefined

in dem Feld wo der Text kommen soll.
 
ich habe übersehen das du auch fcode als variable benutzt hattest, ich habe das arrayname von fcode => code geändert, nur ich kann hier nicht testen, fehler sind also weiterhin noch möglich :D
 
Um zu testen habe ich ein kleines html+javascript code geschrieben, es funktioniert
wie es bei dem PDF Programm aussieht kann ich dir nicht sagen, wahrscheinlich muss du in ein paar stellen Anpassungen machen müssen

Code:
<html>
  <head>
    <title>Testprogramm</title>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
    <script language="JavaScript"><!--
      function ausgabe() {
        var code = new Array();
        code["101"] = "PC-Störung";
        code["102"] = "PC-Störung Vandalismus";

        for(var idx in code) {
          if (document.formular.fcode.value == idx) {
            document.formular.fcodetxt.value = code[idx];
          }
        }
        }
    //--></script>
  </head>
  <body>
    <form name="formular">
      <input type="text" name="fcode" value="Code" /><br />
      <input type="text" name="fcodetxt" value="Beschreibung" /><br />
      <input type="button" name="schalt" onclick="ausgabe()" value="Klicken!" />
    </form>
  </body>
</html>
 
Danke schonmal für deine Hilfe,

Bin jetzt erstmal aufm Heimweg, und muss daheim erstmal die ganzen Tools installieren, dann kann ich später nochmal testen.

Darf ich fragen, warum du den zweiten Code (der Funktioniert hat) nun nochmal abändern willst, in das array könnte ich doch alle Fehlercodes und Nummer einfügen, und das selbe Spiel eben nochmal für die Lösungscodes.
 
in den skript wurde zweimal fcode als variable benutzt und ich habe die Indexabfrage 1 ... 300 abgeändert, weil die Fehlercodes nicht fortlaufend sind
 
so hab jetzt auch mit Scribus unter Debian getestet

Code:
var fcodeValue = this.getField("fcode").value;
var codetxt = this.getField("fcodetxt");

var code = new Array();
code["101"] = "PC-Störung";
code["102"] = "PC-Störung Vandalismus";

for(var idx in code) {
  if (fcodeValue == idx) {
     codetxt.value = code[idx];
  }
}
 
  • ok1.de
  • ok2.de
  • thinkstore24.de
  • Preiswerte-IT - Gebrauchte Lenovo Notebooks kaufen

Werbung

Zurück
Oben