Återger Forms efter värde rendering-forms-by-value
Exempel och exempel i det här dokumentet gäller endast för AEM Forms i JEE-miljö.
Vanligtvis skickas en formulärdesign som har skapats i Designer med referens till tjänsten Forms. Formulärdesigner kan vara stora och därför är det mer effektivt att skicka dem med referens för att undvika att behöva konvertera byte för formulärdesign efter värde. Forms-tjänsten kan även cachelagra formulärdesignen så att den inte behöver läsa formulärdesignen kontinuerligt när den cache-lagras.
Om en formulärdesign innehåller ett UUID-attribut cache-lagras den. UUID-värdet är unikt för alla formulärdesigner och används för att unikt identifiera ett formulär. När du återger ett formulär efter värde bör formuläret bara cachelagras när det används upprepade gånger. Om formuläret inte används upprepade gånger och måste vara unikt, kan du undvika att cache-lagra formuläret med cachelagringsalternativ som har angetts med AEM Forms API.
Forms-tjänsten kan också lösa platsen för det länkade innehållet i formulärdesignen. Länkade bilder som refereras inifrån formulärdesignen är till exempel relativa URL-adresser. Länkat innehåll antas alltid vara relativt till formulärdesignens plats. Att lösa länkat innehåll är därför en fråga om att fastställa dess plats genom att använda den relativa sökvägen på den absoluta formulärdesignplatsen.
I stället för att skicka en formulärdesign med referens kan du skicka en formulärdesign med värde. Att skicka en formulärdesign med värde är effektivt när en formulärdesign skapas dynamiskt, det vill säga när ett klientprogram genererar XML-koden som skapar en formulärdesign under körning. I det här fallet lagras inte en formulärdesign i en fysisk databas eftersom den lagras i minnet. När du dynamiskt skapar en formulärdesign vid körning och skickar den med värde, kan du cachelagra formuläret och förbättra prestanda för Forms-tjänsten.
Begränsningar för att skicka ett formulär med värde
Följande begränsningar gäller när en formulärdesign skickas med värde:
- Inget relativt länkat innehåll kan finnas i formulärdesignen. Alla bilder och fragment måste vara inbäddade i formulärdesignen eller refereras till absolut.
- Det går inte att utföra beräkningar på serversidan efter att formuläret har återgetts. Om formuläret skickas tillbaka till Forms-tjänsten extraheras data och returneras utan serverberäkningar.
- Eftersom HTML bara kan använda länkade bilder vid körning går det inte att generera HTML med inbäddade bilder. Detta beror på att Forms-tjänsten stöder inbäddade bilder med HTML genom att hämta bilderna från en refererad formulärdesign. Eftersom en formulärdesign som skickas med värde inte har någon referensplats, kan inbäddade bilder inte extraheras när HTML-sidan visas. Därför måste bildreferenser vara absoluta sökvägar för att kunna återges i HTML.
Sammanfattning av steg summary-of-steps
Så här återger du ett formulär efter värde:
- Inkludera projektfiler.
- Skapa ett Forms Client API-objekt.
- Referera formulärdesignen.
- Återge ett formulär efter värde.
- Skriv formulärdataströmmen till klientens webbläsare.
Inkludera projektfiler
Inkludera nödvändiga filer i utvecklingsprojektet. Om du skapar ett klientprogram med Java inkluderar du de JAR-filer som behövs. Om du använder webbtjänster måste du inkludera proxyfilerna.
Skapa ett Forms Client API-objekt
Innan du programmässigt kan importera data till ett klient-API i PDF måste du skapa en dataintegreringstjänstklient. När du skapar en tjänstklient definierar du de anslutningsinställningar som krävs för att anropa en tjänst.
Referera formulärdesignen
När du återger ett formulär efter värde måste du skapa ett com.adobe.idp.Document
-objekt som innehåller den formulärdesign som ska återges. Du kan referera till en befintlig XDP-fil eller så kan du dynamiskt skapa en formulärdesign vid körning och fylla i en com.adobe.idp.Document
med dessa data.
Återge ett formulär efter värde
Om du vill återge ett formulär med hjälp av ett värde skickar du en com.adobe.idp.Document
-instans som innehåller formulärdesignen till återgivningsmetodens inDataDoc
-parameter (kan vara någon av FormsServiceClient
-objektets återgivningsmetoder som renderPDFForm
, (Deprecated) renderHTMLForm
och så vidare). Det här parametervärdet är vanligtvis reserverat för data som sammanfogas med formuläret. På samma sätt skickar du ett tomt strängvärde till parametern formQuery
. I vanliga fall kräver den här parametern ett strängvärde som anger namnet på formulärdesignen.
xfa:datasets
. Mer information om XFA-arkitekturen finns på https://www.pdfa.org/norm-refs/XFA-3_3.pdf.Skriv formulärdataströmmen till klientwebbläsaren
När Forms-tjänsten återger ett formulär efter värde returneras en formulärdataström som du måste skriva till klientens webbläsare. När formuläret skrivs till webbläsaren visas det för användaren.
Se även
Återge ett formulär med hjälp av Java API
Återge ett formulär utifrån värde med hjälp av webbtjänstens API
Inkludera AEM Forms Java-biblioteksfiler
Återge ett formulär med hjälp av Java API render-a-form-by-value-using-the-java-api
Återge ett formulär med hjälp av Forms API (Java):
-
Inkludera projektfiler
Inkludera JAR-klientfiler, t.ex. adobe-forms-client.jar, i Java-projektets klassökväg.
-
Skapa ett Forms Client API-objekt
- Skapa ett
ServiceClientFactory
-objekt som innehåller anslutningsegenskaper. - Skapa ett
FormsServiceClient
-objekt med hjälp av dess konstruktor och skickaServiceClientFactory
-objektet.
- Skapa ett
-
Referera till formulärdesignen
- Skapa ett
java.io.FileInputStream
-objekt som representerar formulärdesignen som ska återges med hjälp av dess konstruktor och skicka ett strängvärde som anger platsen för XDP-filen. - Skapa ett
com.adobe.idp.Document
-objekt med hjälp av dess konstruktor och skickajava.io.FileInputStream
-objektet.
- Skapa ett
-
Återge ett formulär efter värde
Anropa
FormsServiceClient
-objektetsrenderPDFForm
-metod och skicka följande värden:- Ett tomt strängvärde. (Den här parametern kräver vanligtvis ett strängvärde som anger formulärdesignens namn.)
- Ett
com.adobe.idp.Document
-objekt som innehåller formulärdesignen. Normalt är det här parametervärdet reserverat för data som sammanfogas med formuläret. - Ett
PDFFormRenderSpec
-objekt som lagrar körningsalternativ. Det här är en valfri parameter och du kan angenull
om du inte vill ange körningsalternativ. - Ett
URLSpec
-objekt som innehåller URI-värden som krävs av Forms-tjänsten. - Ett
java.util.HashMap
-objekt som lagrar bifogade filer. Det här är en valfri parameter och du kan angenull
om du inte vill bifoga filer till formuläret.
Metoden
renderPDFForm
returnerar ettFormsResult
-objekt som innehåller en formulärdataström som kan skrivas till klientens webbläsare. -
Skriv formulärdataströmmen till klientens webbläsare
- Skapa ett
com.adobe.idp.Document
-objekt genom att anropa metodengetOutputContent
förFormsResult
-objektet. - Hämta innehållstypen för objektet
com.adobe.idp.Document
genom att anropa dessgetContentType
-metod. - Ange innehållstypen för objektet
javax.servlet.http.HttpServletResponse
genom att anropa desssetContentType
-metod och skicka innehållstypen för objektetcom.adobe.idp.Document
. - Skapa ett
javax.servlet.ServletOutputStream
-objekt som används för att skriva formulärdataströmmen till klientwebbläsaren genom att anropajavax.servlet.http.HttpServletResponse
-objektetsgetOutputStream
-metod. - Skapa ett
java.io.InputStream
-objekt genom att anropacom.adobe.idp.Document
-objektetsgetInputStream
-metod. - Skapa en bytearray och tilldela storleken på
InputStream
-objektet. AnropaInputStream
-objektetsavailable
-metod för att hämta storleken påInputStream
-objektet. - Fyll i bytearrayen med formulärdataströmmen genom att anropa
InputStream
-objektetsread
-metod och skicka bytearrayen som ett argument. - Anropa
javax.servlet.ServletOutputStream
-objektetswrite
-metod för att skicka formulärdataströmmen till klientens webbläsare. Skicka bytearrayen till metodenwrite
.
- Skapa ett
Se även
Snabbstart (SOAP): Återge efter värde med Java API
Återge ett formulär utifrån värde med hjälp av webbtjänstens API render-a-form-by-value-using-the-web-service-api
Återge ett formulär med hjälp av Forms API (webbtjänsten):
-
Inkludera projektfiler
- Skapa Java-proxyklasser som använder Forms tjänst-WSDL.
- Inkludera Java-proxyklasserna i klassökvägen.
-
Skapa ett Forms Client API-objekt
Skapa ett
FormsService
-objekt och ange autentiseringsvärden. -
Referera till formulärdesignen
- Skapa ett
java.io.FileInputStream
-objekt med hjälp av dess konstruktor. Skicka ett strängvärde som anger platsen för XDP-filen. - Skapa ett
BLOB
-objekt med hjälp av dess konstruktor. ObjektetBLOB
används för att lagra ett PDF-dokument som är krypterat med ett lösenord. - Skapa en bytearray som lagrar innehållet i objektet
java.io.FileInputStream
. Du kan bestämma storleken på bytearrayen genom att hämtajava.io.FileInputStream
-objektets storlek med hjälp av dessavailable
-metod. - Fyll i bytearrayen med strömdata genom att anropa
java.io.FileInputStream
-objektetsread
-metod och skicka bytearrayen. - Fyll i objektet
BLOB
genom att anropa desssetBinaryData
-metod och skicka bytearrayen.
- Skapa ett
-
Återge ett formulär efter värde
Anropa
FormsService
-objektetsrenderPDFForm
-metod och skicka följande värden:- Ett tomt strängvärde. (Den här parametern kräver vanligtvis ett strängvärde som anger formulärdesignens namn.)
- Ett
BLOB
-objekt som innehåller formulärdesignen. Normalt är det här parametervärdet reserverat för data som sammanfogas med formuläret. - Ett
PDFFormRenderSpec
-objekt som lagrar körningsalternativ. Det här är en valfri parameter och du kan angenull
om du inte vill ange körningsalternativ. - Ett
URLSpec
-objekt som innehåller URI-värden som krävs av Forms-tjänsten. - Ett
java.util.HashMap
-objekt som lagrar bifogade filer. Det här är en valfri parameter och du kan angenull
om du inte vill bifoga filer till formuläret. - Ett tomt
com.adobe.idp.services.holders.BLOBHolder
-objekt som fylls i av metoden. Det här används för att lagra det återgivna PDF-formuläret. - Ett tomt
javax.xml.rpc.holders.LongHolder
-objekt som fylls i av metoden. (Detta argument lagrar antalet sidor i formuläret.) - Ett tomt
javax.xml.rpc.holders.StringHolder
-objekt som fylls i av metoden. (Det här argumentet lagrar språkets värde.) - Ett tomt
com.adobe.idp.services.holders.FormsResultHolder
-objekt som innehåller resultatet av den här åtgärden.
Metoden
renderPDFForm
fyller i objektetcom.adobe.idp.services.holders.FormsResultHolder
som skickas som det sista argumentvärdet med en formulärdataström som måste skrivas till klientens webbläsare. -
Skriv formulärdataströmmen till klientens webbläsare
- Skapa ett
FormResult
-objekt genom att hämta värdet förcom.adobe.idp.services.holders.FormsResultHolder
-objektetsvalue
-datamedlem. - Skapa ett
BLOB
-objekt som innehåller formulärdata genom att anropaFormsResult
-objektetsgetOutputContent
-metod. - Hämta innehållstypen för objektet
BLOB
genom att anropa dessgetContentType
-metod. - Ange innehållstypen för objektet
javax.servlet.http.HttpServletResponse
genom att anropa desssetContentType
-metod och skicka innehållstypen för objektetBLOB
. - Skapa ett
javax.servlet.ServletOutputStream
-objekt som används för att skriva formulärdataströmmen till klientwebbläsaren genom att anropajavax.servlet.http.HttpServletResponse
-objektetsgetOutputStream
-metod. - Skapa en bytearray och fyll i den genom att anropa
BLOB
-objektetsgetBinaryData
-metod. Den här aktiviteten tilldelar innehållet i objektetFormsResult
till bytearrayen. - Anropa
javax.servlet.http.HttpServletResponse
-objektetswrite
-metod för att skicka formulärdataströmmen till klientens webbläsare. Skicka bytearrayen till metodenwrite
.
- Skapa ett
Se även
Anropa AEM Forms med Base64-kodning