Avatar billede collin Nybegynder
08. april 2011 - 15:59 Der er 3 kommentarer og
1 løsning

Java Script til en PDF fil

Jeg prøver krafter lidt med java scripter for pdf filer. Er nået så langt:
Jeg har en xml fil jeg har placeret på adressen C:\Db\Kundedata.xml på min disk. Den indeholder følgende:
<?xml version="1.0" encoding="UTF-8"?>
<Kunder>
  <Kunde>
    <Navn>Lars Fischer</Navn>
    <Firma>Hamilton</Firma>
  </Kunde>
  <Kunde>
    <Navn>Lone Jensen</Navn>
    <Firma>K. Møller</Firma>
  </Kunde>
  <Kunde>
    <Navn>Annemette Voldsgaard</Navn>
    <Firma>Veritas</Firma>
  </Kunde>
  <Kunde>
    <Navn>Berit Nygaard</Navn>
    <Firma>cowell</Firma>
  </Kunde>
  <Kunde>
    <Navn>Anders Dalby</Navn>
    <Firma>FremTech</Firma>
  </Kunde>
</Kunder>


..og så en js fil (PopulateFieldsFromXML_Tool.js) ved adressen "C:\Users\[username]\AppData\Roaming\Adobe\Acrobat\10.0\JavaScripts". (Dette er en specielle folder for Acrobat hvis man har Acrobat eller Acrobat Reader installeret, hvor man kan placere scripter man vil have pdf dokumenter til at læse ved opstart). Indholdet af js filen er følgender:

var Personer = app.trustedFunction(function(oDoc)
{
  app.beginPriv();
  {    stmData = util.readFileIntoStream("C:/Db/Kundedata.xml");
        var kData = util.stringFromStream(stmData);
        var xmlData = eval(kData.replace(/^\<\?.*\?\>\s*/,"")); 
        {
            var oFld = oDoc.getField("Navn0");
              oFld.value = xmlData.Kunde[0].Navn.text();

            var oFld = oDoc.getField("Navn1");
              oFld.value = xmlData.Kunde[1].Navn.text();

            var oFld = oDoc.getField("Navn2");
              oFld.value = xmlData.Kunde[2].Navn.text();

            var oFld = oDoc.getField("Navn3");
              oFld.value = xmlData.Kunde[3].Navn.text();

            var oFld = oDoc.getField("Navn4");
              oFld.value = xmlData.Kunde[4].Navn.text(); 
        }
        }
  app.endPriv();
});


Så har jeg en pdf fil hvori jeg har (vha Adobe Acrobat) lagt en script på document level som ikke er andet end;
    Personer(this);
Dette udfylder de fem tekst felter i min pdf fil (som har navnene "Navn0", "Navn1" osv) med kundenavnene fra XML filen når jeg åbner pdf filen. Hvad jeg gerne vil have i stedet for er at funktionen i min js fil sørger for at min pdf importerer navnene til listen af navne i en ´dropdown´ felt (rullened list). Er der nogen der kan koden til dette? Det er sikkert utrolig nemt men jeg er begynder og har søgt nettet tyndt uden at have forstået hvordan man gør.
Avatar billede olebole Juniormester
09. april 2011 - 00:33 #1
Avatar billede collin Nybegynder
09. april 2011 - 22:31 #2
Hej ole, tak for linket - kommandoen insertItemAt brugt i en loop kunne ordne det. Først prøvede jeg med SetItems men kunne ikke få den til at acceptere en Array. Jeg tror mening med SetItems er at den bruges kun en gang hvorefter værdierne sidder fasttømret til pdf filen. Det er ikke hvad jeg vil, filen skal nemlig være dynamisk og kunne respondere til ændringer i XML filen uden andet redigering. Men jeg skal under alle omstændigheder bruge clearItems ser det ud til at nulstille feltlisten. Desværre kan intet af dette bruges på former der har været igennem LiveCycle møllen - da må jeg starte helt forfra.
Men du har besvarede mit spørgsmål så smid et svar.
Avatar billede olebole Juniormester
09. april 2011 - 23:22 #3
Ellers tak, jeg samler ikke points. Desværre har jeg ikke selv erfaring med JavaScripting i pdf'er, så et link til dokumentationen var det bedste, jeg kunne levere  =)
Avatar billede collin Nybegynder
06. juni 2011 - 21:44 #4
lukker
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester