Forms renderen op waarde rendering-forms-by-value
Een formulierontwerp dat in Designer is gemaakt, wordt meestal doorgegeven via de Forms-service. Formulierontwerpen kunnen groot zijn en daarom is het efficiƫnter om ze door te geven als verwijzing, zodat het niet nodig is om bytes in het formulierontwerp op waarde te rangschikken. De Forms-service kan het formulierontwerp ook in cache plaatsen, zodat het formulierontwerp niet voortdurend hoeft te worden gelezen wanneer het in cache wordt geplaatst.
Als een formulierontwerp een UUID-kenmerk bevat, wordt het in de cache opgeslagen. De UUID-waarde is uniek voor alle formulierontwerpen en wordt gebruikt om een formulier op unieke wijze te identificeren. Als u een formulier op waarde weergeeft, mag het formulier alleen in de cache worden geplaatst wanneer het herhaaldelijk wordt gebruikt. Als het formulier echter niet herhaaldelijk wordt gebruikt en uniek moet zijn, kunt u voorkomen dat het formulier in cache wordt geplaatst met behulp van cacheopties die zijn ingesteld met de AEM Forms API.
De Forms-service kan ook de locatie van gekoppelde inhoud in het formulierontwerp oplossen. Bijvoorbeeld: gekoppelde afbeeldingen waarnaar in het formulierontwerp wordt verwezen, zijn relatieve URL's. Gekoppelde inhoud wordt altijd verondersteld relatief te zijn ten opzichte van de locatie van het formulierontwerp. Daarom is het oplossen van gekoppelde inhoud een kwestie van het bepalen van zijn plaats door de relatieve weg op de absolute plaats van het vormontwerp toe te passen.
In plaats van een formulierontwerp door te geven als referentie, kunt u een formulierontwerp op waarde doorgeven. Het doorgeven van een formulierontwerp op basis van waarde is efficiƫnt wanneer een formulierontwerp dynamisch wordt gemaakt. Dat wil zeggen, wanneer een clienttoepassing de XML genereert die tijdens runtime een formulierontwerp maakt. In dit geval wordt een formulierontwerp niet opgeslagen in een fysieke opslagplaats, omdat het in het geheugen wordt opgeslagen. Als u tijdens de runtime dynamisch een formulierontwerp maakt en dit op waarde doorgeeft, kunt u het formulier in cache plaatsen en de prestaties van de Forms-service verbeteren.
Beperkingen bij het doorgeven van een formulier op waarde
De volgende beperkingen zijn van toepassing wanneer een formulierontwerp wordt doorgegeven als waarde:
- Het formulierontwerp kan geen relatieve gekoppelde inhoud bevatten. Alle afbeeldingen en fragmenten moeten in het formulierontwerp worden ingesloten of absoluut worden vermeld.
- Berekeningen aan de serverzijde kunnen niet worden uitgevoerd nadat het formulier is gegenereerd. Als het formulier wordt teruggestuurd naar de Forms-service, worden de gegevens opgehaald en geretourneerd zonder berekeningen aan de serverzijde.
- Omdat HTML gekoppelde afbeeldingen alleen tijdens runtime kan gebruiken, is het niet mogelijk om HTML met ingesloten afbeeldingen te genereren. De reden hiervoor is dat de Forms-service ingesloten afbeeldingen met HTML ondersteunt door de afbeeldingen op te halen uit een formulierontwerp waarnaar wordt verwezen. Omdat een formulierontwerp dat via waarde wordt doorgegeven, geen locatie waarnaar wordt verwezen, kunnen ingesloten afbeeldingen niet worden uitgepakt wanneer de pagina HTML wordt weergegeven. Daarom moeten afbeeldingsverwijzingen absolute paden zijn die moeten worden gerenderd in HTML.
Overzicht van de stappen summary-of-steps
Voer de volgende stappen uit om een formulier op waarde te genereren:
- Inclusief projectbestanden.
- Maak een Forms Client API-object.
- Verwijs naar het formulierontwerp.
- Een formulier op waarde weergeven.
- Schrijf de gegevensstroom van het formulier naar de webbrowser van de client.
Projectbestanden opnemen
Neem de benodigde bestanden op in uw ontwikkelingsproject. Als u een clienttoepassing maakt met Java, neemt u de benodigde JAR-bestanden op. Als u webservices gebruikt, moet u ervoor zorgen dat u de proxybestanden opneemt.
Een Forms Client API-object maken
Voordat u via programmacode gegevens kunt importeren in een PDF formulier-client-API, moet u een Data Integration-service-client maken. Wanneer u een serviceclient maakt, definieert u verbindingsinstellingen die vereist zijn om een service aan te roepen.
Verwijzen naar het formulierontwerp
Wanneer u een formulier op waarde weergeeft, moet u een com.adobe.idp.Document object dat het formulierontwerp bevat dat moet worden weergegeven. U kunt verwijzen naar een bestaand XDP-bestand of u kunt tijdens runtime dynamisch een formulierontwerp maken en een com.adobe.idp.Document met die gegevens.
Een formulier op waarde weergeven
Als u een formulier op waarde wilt weergeven, geeft u een com.adobe.idp.Document instantie die het formulierontwerp bevat voor de rendermethode inDataDoc parameter (kan elk van de FormsServiceClient rendermethoden van object, zoals renderPDFForm, (Deprecated) renderHTMLForm, enzovoort). Deze parameterwaarde is gewoonlijk gereserveerd voor gegevens die met het formulier worden samengevoegd. Geef op dezelfde manier een lege tekenreekswaarde door aan de formQuery parameter. Normaal gesproken vereist deze parameter een tekenreekswaarde die de naam van het formulierontwerp opgeeft.
xfa:datasets element. Ga voor informatie over XFA-architectuur naar https://www.pdfa.org/norm-refs/XFA-3_3.pdf.De formuliergegevensstroom naar de webbrowser van de client schrijven
Wanneer de Forms-service een formulier op waarde weergeeft, wordt een formuliergegevensstroom geretourneerd die u naar de webbrowser van de client moet schrijven. Wanneer het formulier naar de webbrowser van de client wordt geschreven, is het zichtbaar voor de gebruiker.
Zie ook
Een formulier op waarde weergeven met de Java API
Een formulier op waarde weergeven met de API voor webservices
Inclusief AEM Forms Java-bibliotheekbestanden
Verbindingseigenschappen instellen
Documenten doorgeven aan de Forms-service
Webtoepassingen maken die Forms renderen
Een formulier op waarde weergeven met de Java API render-a-form-by-value-using-the-java-api
Een formulier op waarde weergeven met de Forms API (Java):
-
Projectbestanden opnemen
Neem client-JAR-bestanden, zoals adobe-forms-client.jar, op in het klassenpad van uw Java-project.
-
Een Forms Client API-object maken
- Een
ServiceClientFactoryobject dat verbindingseigenschappen bevat. - Een
FormsServiceClientobject door de constructor ervan te gebruiken en door te gevenServiceClientFactoryobject.
- Een
-
Verwijzen naar het formulierontwerp
- Een
java.io.FileInputStreamobject dat staat voor het formulierontwerp dat moet worden gegenereerd met de constructor ervan en dat een tekenreekswaarde doorgeeft die de locatie van het XDP-bestand aangeeft. - Een
com.adobe.idp.Documentobject door de constructor ervan te gebruiken en door te gevenjava.io.FileInputStreamobject.
- Een
-
Een formulier op waarde weergeven
De
FormsServiceClientobjectrenderPDFFormen geeft de volgende waarden door:- Een lege tekenreekswaarde. (Normaal gesproken vereist deze parameter een tekenreekswaarde die de naam van het formulierontwerp aangeeft.)
- A
com.adobe.idp.Documentobject dat het formulierontwerp bevat. Normaal gesproken is deze parameterwaarde gereserveerd voor gegevens die met het formulier worden samengevoegd. - A
PDFFormRenderSpec-object dat uitvoeringsopties opslaat. Dit is een optionele parameter en u kuntnullals u geen runtime opties wilt opgeven. - A
URLSpecobject dat URI-waarden bevat die door de Forms-service worden vereist. - A
java.util.HashMapobject waarin bestandsbijlagen zijn opgeslagen. Dit is een optionele parameter en u kuntnullals u geen bestanden aan het formulier wilt koppelen.
De
renderPDFFormmethode retourneert eenFormsResultobject dat een formuliergegevensstroom bevat die naar de webbrowser van de client kan worden geschreven. -
De formuliergegevensstroom naar de webbrowser van de client schrijven
- Een
com.adobe.idp.Documentdoor het object aan te roepenFormsResultobject 'sgetOutputContentmethode. - Hiermee wordt het inhoudstype van het dialoogvenster
com.adobe.idp.Documentobject aanroepengetContentTypemethode. - Stel de
javax.servlet.http.HttpServletResponseinhoudstype van object aanroepensetContentTypeen geeft u het inhoudstype van het dialoogvenster doorcom.adobe.idp.Documentobject. - Een
javax.servlet.ServletOutputStreamobject dat wordt gebruikt om de formuliergegevensstroom naar de webbrowser van de client te schrijven door het aanroepen van dejavax.servlet.http.HttpServletResponseobjectgetOutputStreammethode. - Een
java.io.InputStreamdoor het object aan te roepencom.adobe.idp.DocumentobjectgetInputStreammethode. - Maak een bytearray en wijs de grootte van de array toe
InputStreamobject. DeInputStreamobjectavailableom de grootte van deInputStreamobject. - Vul de bytearray met de formuliergegevensstroom door de
InputStreamobjectreaden de bytearray doorgeven als een argument. - De
javax.servlet.ServletOutputStreamobjectwritemethode om de formuliergegevensstroom naar de webbrowser van de client te verzenden. Geef de bytearray door aan dewritemethode.
- Een
Zie ook
Snel starten (SOAP-modus): Renderen op waarde met de Java API
Inclusief AEM Forms Java-bibliotheekbestanden
Verbindingseigenschappen instellen
Een formulier op waarde weergeven met de API voor webservices render-a-form-by-value-using-the-web-service-api
Een formulier op waarde weergeven met de Forms API (webservice):
-
Projectbestanden opnemen
- Maak Java-proxyklassen die gebruikmaken van de Forms-service WSDL.
- Neem de Java-proxyklassen op in het klassepad.
-
Een Forms Client API-object maken
Een
FormsService-object en stel verificatiewaarden in. -
Verwijzen naar het formulierontwerp
- Een
java.io.FileInputStreamobject met behulp van de constructor. Geef een tekenreekswaarde door die de locatie van het XDP-bestand aangeeft. - Een
BLOBobject met behulp van de constructor. DeBLOBwordt gebruikt om een PDF-document op te slaan dat met een wachtwoord is versleuteld. - Maak een bytearray waarin de inhoud van de
java.io.FileInputStreamobject. U kunt de grootte van de bytearray bepalen door dejava.io.FileInputStreamobjectgrootte gebruikenavailablemethode. - De bytearray vullen met streamgegevens door de
java.io.FileInputStreamobjectreaden geeft u de bytearray door. - Vul de
BLOBobject aanroepensetBinaryDataen geeft u de bytearray door.
- Een
-
Een formulier op waarde weergeven
De
FormsServiceobjectrenderPDFFormen geeft de volgende waarden door:- Een lege tekenreekswaarde. (Normaal gesproken vereist deze parameter een tekenreekswaarde die de naam van het formulierontwerp aangeeft.)
- A
BLOBobject dat het formulierontwerp bevat. Normaal gesproken is deze parameterwaarde gereserveerd voor gegevens die met het formulier worden samengevoegd. - A
PDFFormRenderSpec-object dat uitvoeringsopties opslaat. Dit is een optionele parameter en u kuntnullals u geen runtime opties wilt opgeven. - A
URLSpecobject dat URI-waarden bevat die door de Forms-service worden vereist. - A
java.util.HashMapobject waarin bestandsbijlagen zijn opgeslagen. Dit is een optionele parameter en u kuntnullals u geen bestanden aan het formulier wilt koppelen. - Een leeg
com.adobe.idp.services.holders.BLOBHolderobject dat door de methode wordt gevuld. Hiermee slaat u het gerenderde PDF formulier op. - Een leeg
javax.xml.rpc.holders.LongHolderobject dat door de methode wordt gevuld. (In dit argument wordt het aantal pagina's in het formulier opgeslagen.) - Een leeg
javax.xml.rpc.holders.StringHolderobject dat door de methode wordt gevuld. (In dit argument wordt de waarde van de landinstelling opgeslagen.) - Een leeg
com.adobe.idp.services.holders.FormsResultHolder-object dat de resultaten van deze bewerking bevat.
De
renderPDFFormwordt decom.adobe.idp.services.holders.FormsResultHolderobject dat wordt doorgegeven als de laatste argumentwaarde met een formuliergegevensstroom die naar de webbrowser van de client moet worden geschreven. -
De formuliergegevensstroom naar de webbrowser van de client schrijven
- Een
FormResultobject door de waarde van het object op te halencom.adobe.idp.services.holders.FormsResultHolderobjectvaluelid. - Een
BLOBobject dat formuliergegevens bevat door hetFormsResultobjectgetOutputContentmethode. - Hiermee wordt het inhoudstype van het dialoogvenster
BLOBobject aanroepengetContentTypemethode. - Stel de
javax.servlet.http.HttpServletResponseinhoudstype van object aanroepensetContentTypeen geeft u het inhoudstype van het dialoogvenster doorBLOBobject. - Een
javax.servlet.ServletOutputStreamobject dat wordt gebruikt om de formuliergegevensstroom naar de webbrowser van de client te schrijven door het aanroepen van dejavax.servlet.http.HttpServletResponseobjectgetOutputStreammethode. - Maak een bytearray en vul deze door het
BLOBobjectgetBinaryDatamethode. Deze taak wijst de inhoud van toeFormsResultobject naar de bytearray. - De
javax.servlet.http.HttpServletResponseobjectwritemethode om de formuliergegevensstroom naar de webbrowser van de client te verzenden. Geef de bytearray door aan dewritemethode.
- Een
Zie ook
AEM Forms aanroepen met Base64-codering