Återger interaktiv PDF forms rendering-interactive-pdf-forms
Exempel och exempel i det här dokumentet gäller endast för AEM Forms i JEE-miljö.
Forms-tjänsten återger interaktiv PDF forms till klientenheter, vanligtvis webbläsare, för att samla in information från användare. När ett interaktivt formulär har återgetts kan användaren ange data i formulärfält och klicka på en Skicka-knapp som finns i formuläret för att skicka tillbaka information till Forms-tjänsten. Adobe Reader eller Acrobat måste vara installerade på den dator som är värd för klientwebbläsaren för att ett interaktivt PDF-formulär ska kunna visas.
Exempellåneansökan
Ett exempel på en låneansökan läggs in för att visa hur Forms-tjänsten använder interaktiva blanketter för att samla in information från användarna. Med det här programmet kan en användare fylla i ett formulär med de data som krävs för att skydda ett lån och sedan skicka data till Forms-tjänsten. I följande diagram visas låneansökans logiska flöde.
I följande tabell beskrivs stegen i det här diagrammet.
GetLoanForm
anropas från en HTML-sida.GetLoanForm
använder Forms klient-API för att återge låneformuläret till klientens webbläsare. (Se Återge ett interaktivt PDF-formulär med Java API.)HandleData
. (Se "Låneformulär".)HandleData
använder Forms klient-API för att bearbeta formuläröverföringen och hämta formulärdata. Data lagras sedan i en företagsdatabas. (Se Hantera skickade Forms.)Låneformulär
Det här interaktiva låneformuläret återges av exempellåneprogrammets GetLoanForm
Java-serverdel.
Bekräftelseformulär
Det här formuläret återges av exempellåneprogrammets HandleData
Java-server.
Java-serverns HandleData
fyller i formuläret i förväg med användarens för- och efternamn och mängden. När formuläret har fyllts i i i förväg skickas det till klientens webbläsare. (Se Förifyll Forms med flödeslayouter)
Java-servrar
Exempellåneansökan är ett exempel på en Forms-tjänstapplikation som finns som en Java-server. En Java-server är ett Java-program som körs på en J2EE-programserver, t.ex. WebSphere, och som innehåller API-kod för Forms-tjänstklienten.
I följande kod visas syntaxen för en Java-server med namnet 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 {
}
Normalt placerar du inte Forms-tjänstens klient-API-kod i en Java-serverns doGet
- eller doPost
-metod. Det är bättre programmeringspraxis att placera den här koden i en separat klass, instansiera klassen inifrån metoden doPost
(eller metoden doGet
) och anropa lämpliga metoder. För kodrasteri begränsas dock kodexemplen i det här avsnittet till ett minimum och kodexempel placeras i metoden doPost
.
Sammanfattning av steg
Så här återger du ett interaktivt PDF-formulär:
- Inkludera projektfiler.
- Skapa ett Forms Client API-objekt.
- Ange URI-värden.
- Bifoga filer i formuläret (valfritt).
- Återge ett interaktivt PDF-formulär.
- 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 utföra en API-åtgärd för Forms-tjänstklienten måste du skapa ett Forms Client API-objekt. Om du använder Java API skapar du ett FormsServiceClient
-objekt. Om du använder Forms webbtjänst-API:t skapar du ett FormsService
-objekt.
Ange URI-värden
Du kan ange URI-värden som krävs av Forms-tjänsten för att återge ett formulär. En formulärdesign som sparas som en del av ett Forms-program kan refereras med hjälp av innehållsrots-URI-värdet repository:///
. Ta till exempel följande formulärdesign Loan.xdp som finns i ett Forms-program med namnet FormsApplication:
Om du vill komma åt den här formulärdesignen anger du Applications/FormsApplication/1.0/FormsFolder/Loan.xdp
som formulärnamn (den första parametern som skickas till metoden renderPDFForm
) och repository:///
som URI-värde för innehållsroten.
Sökvägen till en resurs i ett Forms-program är:
Applications/Application-name/Application-version/Folder.../Filename
Följande värden visar några exempel på URI-värden:
- Applications/AppraisalReport/1.0/Forms/FullForm.xdp
- Applications/AnotherApp/1.1/Assets/picture.jpg
- Applications/SomeApp/2.0/Resources/Data/XSDs/MyData.xsd
När du återger ett interaktivt formulär kan du definiera URI-värden, t.ex. mål-URL:en som formulärdata ska skickas till. Mål-URL:en kan definieras på något av följande sätt:
- Klicka på Skicka när du designar formulärdesignen i Designer
- Genom att använda Forms klient-API för tjänster
Om mål-URL:en definieras i formulärdesignen, ska du inte åsidosätta den med Forms klient-API. Det innebär att om du anger mål-URL:en med Forms API återställs den angivna URL:en i formulärdesignen till den som anges med API:t. Om du vill skicka formuläret PDF till den mål-URL som anges i formulärdesignen, anger du mål-URL:en automatiskt till en tom sträng.
Om du har ett formulär som innehåller en skicka-knapp och en beräkningsknapp (med ett motsvarande skript som körs på servern) kan du programmässigt definiera den URL som formuläret skickas till för att köra skriptet. Använd knappen Skicka i formulärdesignen för att ange den URL som formulärdata ska skickas till. (Se Beräkna formulärdata.)
com.adobe.idp.Document
-instans till Forms-tjänsten. com.adobe.idp.Document
-instansen innehåller en formulärdesign. (Se Skicka dokument till Forms-tjänsten.)Bifoga filer i formuläret
Du kan bifoga filer till ett formulär. När du återger ett PDF-formulär med bifogade filer kan användare hämta de bifogade filerna i Acrobat med hjälp av rutan för bifogade filer. Du kan bifoga olika filtyper till ett formulär, t.ex. en textfil, eller till en binär fil, t.ex. en JPG.
Återge ett interaktivt PDF-formulär
Om du vill återge ett formulär använder du en formulärdesign som har skapats i Designer och sparats som en XDP- eller PDF-fil. Du kan även återge ett formulär som har skapats med Acrobat och sparats som en PDF-fil. Om du vill återge ett interaktivt PDF-formulär anropar du FormsServiceClient
-objektets renderPDFForm
-metod eller renderPDFForm2
-metod.
renderPDFForm
använder ett URLSpec
-objekt. Innehållsroten till XDP-filen skickas till Forms-tjänsten med URLSpec
-objektets setContentRootURI
-metod. Formulärdesignnamnet ( formQuery
) skickas som ett separat parametervärde. De två värdena sammanfogas för att få den absoluta referensen till formulärdesignen.
Metoden renderPDFForm2
accepterar en com.adobe.idp.Document
-instans som innehåller XDP- eller PDF-dokumentet som ska återges.
Återge ett interaktivt PDF-formulär med Java API render-an-interactive-pdf-form-using-the-java-api
Återge ett interaktivt PDF-formulär med 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
-
Ange URI-värden
- Skapa ett
URLSpec
-objekt som lagrar URI-värden med hjälp av dess konstruktor. - Anropa
URLSpec
-objektetssetApplicationWebRoot
-metod och skicka ett strängvärde som representerar programmets webbrot. - Anropa
URLSpec
-objektetssetContentRootURI
-metod och skicka ett strängvärde som anger innehållets rot-URI-värde. Kontrollera att formulärdesignen finns i innehållets rot-URI. Annars genereras ett undantag. Om du vill referera till databasen anger durepository:///
. - Anropa
URLSpec
-objektetssetTargetURL
-metod och skicka ett strängvärde som anger mål-URL-värdet som formulärdata skickas till. Om du definierar mål-URL:en i formulärdesignen kan du skicka en tom sträng. Du kan också ange den URL dit ett formulär ska skickas för att utföra beräkningar.
- Skapa ett
-
Bifoga filer i formuläret
-
Skapa ett
java.util.HashMap
-objekt för att lagra bifogade filer med hjälp av dess konstruktor. -
Anropa
java.util.HashMap
-objektetsput
-metod för varje fil som ska kopplas till det återgivna formuläret. Skicka följande värden till den här metoden:- Ett strängvärde som anger namnet på den bifogade filen, inklusive filnamnstillägget.
-
Ett
com.adobe.idp.Document
-objekt som innehåller den bifogade filen.
note note NOTE Upprepa det här steget för varje fil som ska bifogas formuläret. Det här steget är valfritt och du kan skicka null
om du inte vill skicka bifogade filer. -
-
Återge ett interaktivt PDF-formulär
Anropa
FormsServiceClient
-objektetsrenderPDFForm
-metod och skicka följande värden:- Ett strängvärde som anger formulärdesignens namn, inklusive filnamnstillägget. Om du refererar till en formulärdesign som ingår i ett Forms-program måste du ange den fullständiga sökvägen, till exempel
Applications/FormsApplication/1.0/FormsFolder/Loan.xdp
. - Ett
com.adobe.idp.Document
-objekt som innehåller data som ska sammanfogas med formuläret. Om du inte vill sammanfoga data skickar du ett tomtcom.adobe.idp.Document
-objekt. - 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 måste skrivas till klientens webbläsare. - Ett strängvärde som anger formulärdesignens namn, inklusive filnamnstillägget. Om du refererar till en formulärdesign som ingår i ett Forms-program måste du ange den fullständiga sökvägen, till exempel
-
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 fyll i den 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
Återge ett interaktivt PDF-formulär med hjälp av webbtjänstens API render-an-interactive-pdf-form-using-the-web-service-api
Återge ett interaktivt PDF-formulär med Forms API (webbtjänst):
-
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. -
Ange URI-värden
- Skapa ett
URLSpec
-objekt som lagrar URI-värden med hjälp av dess konstruktor. - Anropa
URLSpec
-objektetssetApplicationWebRoot
-metod och skicka ett strängvärde som representerar programmets webbrot. - Anropa
URLSpec
-objektetssetContentRootURI
-metod och skicka ett strängvärde som anger innehållets rot-URI-värde. Kontrollera att formulärdesignen finns i innehållets rot-URI. Annars genereras ett undantag. Om du vill referera till databasen anger durepository:///
. - Anropa
URLSpec
-objektetssetTargetURL
-metod och skicka ett strängvärde som anger mål-URL-värdet som formulärdata skickas till. Om du definierar mål-URL:en i formulärdesignen kan du skicka en tom sträng. Du kan också ange den URL dit ett formulär ska skickas för att utföra beräkningar.
- Skapa ett
-
Bifoga filer i formuläret
-
Skapa ett
java.util.HashMap
-objekt för att lagra bifogade filer med hjälp av dess konstruktor. -
Anropa
java.util.HashMap
-objektetsput
-metod för varje fil som ska kopplas till det återgivna formuläret. Skicka följande värden till den här metoden:- Ett strängvärde som anger namnet på den bifogade filen, inklusive filnamnstillägget
-
Ett
BLOB
-objekt som innehåller den bifogade filen
note note NOTE Upprepa det här steget för varje fil som ska bifogas formuläret. -
-
Återge ett interaktivt PDF-formulär
Anropa
FormsService
-objektetsrenderPDFForm
-metod och skicka följande värden:- Ett strängvärde som anger formulärdesignens namn, inklusive filnamnstillägget. Om du refererar till en formulärdesign som ingår i ett Forms-program måste du ange den fullständiga sökvägen, till exempel
Applications/FormsApplication/1.0/FormsFolder/Loan.xdp
. - Ett
BLOB
-objekt som innehåller data som ska sammanfogas med formuläret. Om du inte vill sammanfoga data skickar dunull
. - 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. - Ett strängvärde som anger formulärdesignens namn, inklusive filnamnstillägget. Om du refererar till en formulärdesign som ingår i ett Forms-program måste du ange den fullständiga sökvägen, till exempel
-
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
Skriv formulärdataströmmen till klientwebbläsaren
När Forms-tjänsten återger ett formulär 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.