Interactieve PDF forms renderen rendering-interactive-pdf-forms
De Forms-service rendert interactieve PDF forms naar clientapparaten, meestal webbrowsers, om informatie van gebruikers te verzamelen. Nadat een interactief formulier is gegenereerd, kan een gebruiker gegevens invoeren in formuliervelden en op een verzendknop op het formulier klikken om informatie terug te sturen naar de Forms-service. Adobe Reader of Acrobat moet zijn geïnstalleerd op de computer die als host fungeert voor de webbrowser van de client om een interactief PDF-formulier zichtbaar te maken.
Voorbeeldtoepassing van een lening
Er wordt een voorbeeldtoepassing voor leningen geïntroduceerd om aan te tonen hoe de Forms-service interactieve formulieren gebruikt om informatie van gebruikers te verzamelen. Met deze toepassing kan een gebruiker een formulier invullen met gegevens die nodig zijn om een lening te beveiligen en vervolgens gegevens verzenden naar de Forms-service. In het volgende diagram wordt de logische stroom van de toepassing van de lening weergegeven.
In de volgende tabel worden de stappen in dit diagram beschreven.
GetLoanForm
Java Servlet wordt aangeroepen vanaf een HTML-pagina.GetLoanForm
Java Servlet gebruikt de Forms Service Client API om het leningformulier te genereren naar de webbrowser van de client. (Zie Een interactief PDF-formulier renderen met de Java API.)HandleData
Java Servlet. (Zie "Formulier van lening".)HandleData
Java Servlet gebruikt de Forms Service Client API om de formulierverzending te verwerken en formuliergegevens op te halen. De gegevens worden dan opgeslagen in een ondernemingsgegevensbestand. (Zie Verzendde Forms afhandelen.)Lijnformulier
Dit interactieve leningformulier wordt gegenereerd door de voorbeeldleningaanvraag GetLoanForm
Java Servlet.
Bevestigingsformulier
Dit formulier wordt gegenereerd door de voorbeeldtoepassing van de leningaanvraag HandleData
Java Servlet.
De HandleData
Java Servlet vult dit formulier vooraf in met de voor- en achternaam van de gebruiker en het bedrag. Nadat het formulier vooraf is ingevuld, wordt het naar de webbrowser van de client verzonden. (Zie Forms vooraf vullen met stroombare indelingen)
Java Servlets
De voorbeeldtoepassing voor leningen is een voorbeeld van een Forms-servicetoepassing die als Java Servlet bestaat. Een Java Server is een Java-programma dat wordt uitgevoerd op een J2EE-toepassingsserver, zoals WebSphere, en bevat Forms Service Client API-code.
De volgende code toont de syntaxis van een Java-server met de naam GetLoanForm:
public class GetLoanForm extends HttpServlet implements Servlet {
public void doGet(HttpServletRequest req, HttpServletResponse resp
throws ServletException, IOException {
}
public void doPost(HttpServletRequest req, HttpServletResponse resp
throws ServletException, IOException {
}
Normaal gesproken plaatst u geen Forms Service Client API-code in een Java Server doGet
of doPost
methode. Het is beter programmeren om deze code in een afzonderlijke klasse te plaatsen, de klasse vanuit de doPost
methode (of doGet
methode) en roept de aangewezen methodes aan. Voor de beknoptheid van de code worden de codevoorbeelden in deze sectie echter tot een minimum beperkt en worden codevoorbeelden in de doPost
methode.
Overzicht van de stappen
Voer de volgende taken uit om een interactief PDF formulier te genereren:
- Inclusief projectbestanden.
- Maak een Forms Client API-object.
- Geef URI-waarden op.
- Bestanden aan het formulier koppelen (optioneel).
- Een interactief PDF-formulier 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, dient u de proxybestanden op te nemen.
Een Forms Client API-object maken
Voordat u een Forms Service Client API-bewerking programmatisch kunt uitvoeren, moet u een Forms Client API-object maken. Als u de Java API gebruikt, maakt u een FormsServiceClient
object. Als u de Forms-webservice-API gebruikt, maakt u een FormsService
object.
URI-waarden opgeven
U kunt URI-waarden opgeven die de Forms-service nodig heeft om een formulier te genereren. Een formulierontwerp dat is opgeslagen als onderdeel van een Forms-toepassing, kan worden gebruikt door de URI-waarde van de inhoudsbasis te gebruiken repository:///
. Neem bijvoorbeeld het volgende formulierontwerp met de naam Lening.xdp zich bevindt binnen een Forms-toepassing met de naam FormsApplication:
Als u dit formulierontwerp wilt openen, geeft u Applications/FormsApplication/1.0/FormsFolder/Loan.xdp
als de formuliernaam (de eerste parameter die aan de renderPDFForm
methode) en repository:///
als de URI-waarde van de inhoudsbasis.
Het pad naar een bron in een Forms-toepassing is:
Applications/Application-name/Application-version/Folder.../Filename
De volgende waarden tonen enkele voorbeelden van URI-waarden:
- Applications/AppraisalReport/1.0/Forms/FullForm.xdp
- Applications/AnotherApp/1.1/Assets/picture.jpg
- Applications/SomeApp/2.0/Resources/Data/XSDs/MyData.xsd
Wanneer u een interactief formulier genereert, kunt u URI-waarden definiëren, zoals de doel-URL waarnaar de formuliergegevens worden gepost. De doel-URL kan op een van de volgende manieren worden gedefinieerd:
- Op de knop Verzenden tijdens het ontwerpen van het formulierontwerp in Designer
- Door de Forms Service Client API te gebruiken
Als de doel-URL is gedefinieerd in het formulierontwerp, mag u deze niet overschrijven met de Forms Service Client API. Met andere woorden, als u de doel-URL instelt met de Forms API, wordt de opgegeven URL in het formulierontwerp teruggezet naar de URL die is opgegeven met de API. Als u het PDF-formulier wilt verzenden naar de doel-URL die in het formulierontwerp is opgegeven, stelt u de doel-URL programmatisch in op een lege tekenreeks.
Als u een formulier hebt dat een verzendknop en een berekeningsknop bevat (met een overeenkomstig script dat op de server wordt uitgevoerd), kunt u de URL programmatisch definiëren waarnaar het formulier wordt verzonden om het script uit te voeren. Met de knop Verzenden op het formulierontwerp geeft u de URL op waarnaar de formuliergegevens worden verzonden. (Zie Formuliergegevens berekenen.)
com.adobe.idp.Document
naar de Forms-service. De com.adobe.idp.Document
-exemplaar bevat een formulierontwerp. (Zie Documenten doorgeven aan de Forms-service.)Bestanden aan het formulier koppelen
U kunt bestanden aan een formulier koppelen. Wanneer u een PDF-formulier met bestandsbijlagen genereert, kunnen gebruikers de bestandsbijlagen in Acrobat ophalen via het venster Bestandsbijlage. U kunt verschillende bestandstypen aan een formulier koppelen, zoals een tekstbestand, of aan een binair bestand, zoals een JPG-bestand.
Een interactief PDF-formulier renderen
Als u een formulier wilt genereren, gebruikt u een formulierontwerp dat in Designer is gemaakt en als XDP- of PDF-bestand is opgeslagen. U kunt ook een formulier genereren dat is gemaakt met Acrobat en is opgeslagen als een PDF-bestand. Als u een interactief PDF-formulier wilt genereren, roept u de FormsServiceClient
object renderPDFForm
methode of renderPDFForm2
methode.
De renderPDFForm
gebruikt een URLSpec
object. De inhoudsbasis wordt aan het XDP-bestand doorgegeven via de Forms-service URLSpec
object setContentRootURI
methode. De naam van het formulierontwerp ( formQuery
) wordt doorgegeven als een afzonderlijke parameterwaarde. De twee waarden worden samengevoegd om de absolute verwijzing naar het formulierontwerp te verkrijgen.
De renderPDFForm2
methode accepteert een com.adobe.idp.Document
-instantie die het te renderen XDP- of PDF-document bevat.
Een interactief PDF-formulier renderen met de Java API render-an-interactive-pdf-form-using-the-java-api
Een interactief PDF-formulier renderen 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
ServiceClientFactory
object dat verbindingseigenschappen bevat. - Een
FormsServiceClient
object door de constructor ervan te gebruiken en door te gevenServiceClientFactory
object.
- Een
-
URI-waarden opgeven
- Een
URLSpec
object dat URI-waarden opslaat met de constructor ervan. - De
URLSpec
objectsetApplicationWebRoot
en geeft een tekenreekswaarde door die de hoofdmap van de toepassing vertegenwoordigt. - De
URLSpec
objectsetContentRootURI
methode en geef een tekenreekswaarde door die de URI-waarde van de inhoudsbasis opgeeft. Zorg ervoor dat het formulierontwerp zich in de URI van de inhoudsbasis bevindt. Als niet, werpt de dienst van Forms een uitzondering. Als u naar de gegevensopslagruimte wilt verwijzen, geeft urepository:///
. - De
URLSpec
objectsetTargetURL
en geeft een tekenreekswaarde door die de doel-URL-waarde opgeeft waarnaar formuliergegevens worden gepost. Als u de doel-URL in het formulierontwerp definieert, kunt u een lege tekenreeks doorgeven. U kunt ook de URL opgeven waarnaar een formulier wordt verzonden om berekeningen uit te voeren.
- Een
-
Bestanden aan het formulier koppelen
-
Een
java.util.HashMap
-object om bestandsbijlagen op te slaan met behulp van de constructor. -
De
java.util.HashMap
objectput
voor elk bestand dat aan het gegenereerde formulier moet worden gekoppeld. Geef de volgende waarden door aan deze methode:- Een tekenreekswaarde die de naam van de bestandsbijlage opgeeft, inclusief de bestandsnaamextensie.
-
A
com.adobe.idp.Document
object dat de bestandsbijlage bevat.
note note NOTE Herhaal deze stap voor elk bestand dat u aan het formulier wilt koppelen. Deze stap is optioneel en u kunt null
* als u geen bestandsbijlagen wilt verzenden.* -
-
Een interactief PDF-formulier renderen
De
FormsServiceClient
objectrenderPDFForm
en geeft de volgende waarden door:- Een tekenreekswaarde die de naam van het formulierontwerp opgeeft, inclusief de bestandsnaamextensie. Als u naar een formulierontwerp verwijst dat deel uitmaakt van een Forms-toepassing, moet u het volledige pad opgeven, zoals
Applications/FormsApplication/1.0/FormsFolder/Loan.xdp
. - A
com.adobe.idp.Document
object dat gegevens bevat die met het formulier moeten worden samengevoegd. Als u geen gegevens wilt samenvoegen, geeft u een lege waarde doorcom.adobe.idp.Document
object. - A
PDFFormRenderSpec
-object dat uitvoeringsopties opslaat. Dit is een optionele parameter en u kuntnull
als u geen runtime opties wilt opgeven. - A
URLSpec
object dat URI-waarden bevat die door de Forms-service worden vereist. - A
java.util.HashMap
object waarin bestandsbijlagen zijn opgeslagen. Dit is een optionele parameter en u kuntnull
als u geen bestanden aan het formulier wilt koppelen.
De
renderPDFForm
methode retourneert eenFormsResult
object dat een formuliergegevensstroom bevat die naar de webbrowser van de client moet worden geschreven. - Een tekenreekswaarde die de naam van het formulierontwerp opgeeft, inclusief de bestandsnaamextensie. Als u naar een formulierontwerp verwijst dat deel uitmaakt van een Forms-toepassing, moet u het volledige pad opgeven, zoals
-
De formuliergegevensstroom naar de webbrowser van de client schrijven
- Een
com.adobe.idp.Document
door het object aan te roepenFormsResult
object 'sgetOutputContent
methode. - Hiermee wordt het inhoudstype van het dialoogvenster
com.adobe.idp.Document
object aanroepengetContentType
methode. - Stel de
javax.servlet.http.HttpServletResponse
inhoudstype van object aanroepensetContentType
en geeft u het inhoudstype van het dialoogvenster doorcom.adobe.idp.Document
object. - Een
javax.servlet.ServletOutputStream
object dat wordt gebruikt om de formuliergegevensstroom naar de webbrowser van de client te schrijven door het aanroepen van dejavax.servlet.http.HttpServletResponse
objectgetOutputStream
methode. - Een
java.io.InputStream
door het object aan te roepencom.adobe.idp.Document
objectgetInputStream
methode. - Maak een bytearray en vul deze met de formuliergegevensstroom door de
InputStream
objectread
en de bytearray doorgeven als een argument. - De
javax.servlet.ServletOutputStream
objectwrite
methode om de formuliergegevensstroom naar de webbrowser van de client te verzenden. Geef de bytearray door aan dewrite
methode.
- Een
Een interactief PDF-formulier weergeven met de webservice-API render-an-interactive-pdf-form-using-the-web-service-api
Een interactief PDF-formulier renderen 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. -
URI-waarden opgeven
- Een
URLSpec
object dat URI-waarden opslaat met de constructor ervan. - De
URLSpec
objectsetApplicationWebRoot
en geeft een tekenreekswaarde door die de hoofdmap van de toepassing vertegenwoordigt. - De
URLSpec
objectsetContentRootURI
methode en geef een tekenreekswaarde door die de URI-waarde van de inhoudsbasis opgeeft. Zorg ervoor dat het formulierontwerp zich in de URI van de inhoudsbasis bevindt. Als niet, werpt de dienst van Forms een uitzondering. Als u naar de gegevensopslagruimte wilt verwijzen, geeft urepository:///
. - De
URLSpec
objectsetTargetURL
en geeft een tekenreekswaarde door die de doel-URL-waarde opgeeft waarnaar formuliergegevens worden gepost. Als u de doel-URL in het formulierontwerp definieert, kunt u een lege tekenreeks doorgeven. U kunt ook de URL opgeven waarnaar een formulier wordt verzonden om berekeningen uit te voeren.
- Een
-
Bestanden aan het formulier koppelen
-
Een
java.util.HashMap
-object om bestandsbijlagen op te slaan met behulp van de constructor. -
De
java.util.HashMap
objectput
voor elk bestand dat aan het gegenereerde formulier moet worden gekoppeld. Geef de volgende waarden door aan deze methode:- Een tekenreekswaarde die de naam van de bestandsbijlage opgeeft, inclusief de bestandsextensie
-
A
BLOB
object dat de bestandsbijlage bevat
note note NOTE Herhaal deze stap voor elk bestand dat u aan het formulier wilt koppelen. -
-
Een interactief PDF-formulier renderen
De
FormsService
objectrenderPDFForm
en geeft de volgende waarden door:- Een tekenreekswaarde die de naam van het formulierontwerp opgeeft, inclusief de bestandsnaamextensie. Als u naar een formulierontwerp verwijst dat deel uitmaakt van een Forms-toepassing, moet u het volledige pad opgeven, zoals
Applications/FormsApplication/1.0/FormsFolder/Loan.xdp
. - A
BLOB
object dat gegevens bevat die met het formulier moeten worden samengevoegd. Als u geen gegevens wilt samenvoegen, geeft u doornull
. - A
PDFFormRenderSpec
-object dat uitvoeringsopties opslaat. Dit is een optionele parameter en u kuntnull
als u geen runtime opties wilt opgeven. - A
URLSpec
object dat URI-waarden bevat die door de Forms-service worden vereist. - A
java.util.HashMap
object waarin bestandsbijlagen zijn opgeslagen. Dit is een optionele parameter en u kuntnull
als u geen bestanden aan het formulier wilt koppelen. - Een leeg
com.adobe.idp.services.holders.BLOBHolder
object dat door de methode wordt gevuld. Hiermee slaat u het gerenderde PDF formulier op. - Een leeg
javax.xml.rpc.holders.LongHolder
object dat door de methode wordt gevuld. (In dit argument wordt het aantal pagina's in het formulier opgeslagen.) - Een leeg
javax.xml.rpc.holders.StringHolder
object 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
renderPDFForm
wordt decom.adobe.idp.services.holders.FormsResultHolder
object dat wordt doorgegeven als de laatste argumentwaarde met een formuliergegevensstroom die naar de webbrowser van de client moet worden geschreven. - Een tekenreekswaarde die de naam van het formulierontwerp opgeeft, inclusief de bestandsnaamextensie. Als u naar een formulierontwerp verwijst dat deel uitmaakt van een Forms-toepassing, moet u het volledige pad opgeven, zoals
-
De formuliergegevensstroom naar de webbrowser van de client schrijven
- Een
FormResult
object door de waarde van het object op te halencom.adobe.idp.services.holders.FormsResultHolder
objectvalue
lid. - Een
BLOB
object dat formuliergegevens bevat door hetFormsResult
objectgetOutputContent
methode. - Hiermee wordt het inhoudstype van het dialoogvenster
BLOB
object aanroepengetContentType
methode. - Stel de
javax.servlet.http.HttpServletResponse
inhoudstype van object aanroepensetContentType
en geeft u het inhoudstype van het dialoogvenster doorBLOB
object. - Een
javax.servlet.ServletOutputStream
object dat wordt gebruikt om de formuliergegevensstroom naar de webbrowser van de client te schrijven door het aanroepen van dejavax.servlet.http.HttpServletResponse
objectgetOutputStream
methode. - Maak een bytearray en vul deze door het
BLOB
objectgetBinaryData
methode. Deze taak wijst de inhoud van toeFormsResult
object naar de bytearray. - De
javax.servlet.http.HttpServletResponse
objectwrite
methode om de formuliergegevensstroom naar de webbrowser van de client te verzenden. Geef de bytearray door aan dewrite
methode.
- Een
De formuliergegevensstroom naar de webbrowser van de client schrijven
Wanneer de Forms-service een formulier genereert, 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.