<< back
PDF forms with PD4ML
PD4ML API supports generatePdfForms conversion parameter, which forces
PD4ML to
convert HTML forms to corresponding PDF forms.
Below is a simple PDF-forms based server-side "calculator". It submits PDF form input to server-side script and recieves the form update as FDF data.
Note: Preview.app of Mac OS X (default PDF reader of Safari browser) does not seem to support PDF form submitting.
index.jsp
<%@ taglib uri="http://old.pd4ml.com/tlds/pd4ml/2.6" prefix="pd4ml" %><%@page
contentType="text/html; charset=ISO8859_1"%><pd4ml:transform
screenWidth="300"
pageFormat="A5"
pageOrientation="landscape"
pageInsets="100,100,100,100,points"
enableImageSplit="false"
generatePdfForms="true"
enable="true">
<html>
<head>
<title>pd4ml test</title>
<style type="text/css">
body {
color: #000000;
background-color: #FFFFFF;
font-family: Tahoma, "Sans-Serif";
font-size: 10pt;
}
</style>
</head>
<body>
<form action="fdf.jsp" method=get name=test>
<table border=0>
<tr>
<td>Field 1:</td><td><input name=field1></td>
</tr>
<tr>
<td>Field 2:</td><td><input name=field2></td>
</tr>
<tr>
<td>Popup message:</td><td><input type=checkbox name=status value=ON></td>
</tr>
<tr>
<td>Result:</td><td><input name=result readonly></td>
</tr>
<tr>
<td> </td><td><input type=submit value=ADD></td>
</tr>
</table>
</form>
</body>
</html>
</pd4ml:transform>
fdf.jsp
<%@page contentType="application/vnd.fdf"%><%
int v1 = 0;
int v2 = 0;
try {
v1 = Integer.parseInt(request.getParameter("field1"));
} catch ( NumberFormatException e ) {
}
try {
v2 = Integer.parseInt(request.getParameter("field2"));
} catch ( NumberFormatException e ) {
}
int res = v1 + v2; // business logic of the script
String status = request.getParameter("status");
String message = ( status != null && status.length() > 0 ) ? "/Status (Well done!)" : "";
%>
%FDF-1.2
1 0 obj
<</FDF
<<
<%=message%>
/Fields
[
<< /T(result) /V(<%=res%>) >>
<< /T(field1) /V(<%=v1%>) >>
<< /T(field2) /V(<%=v2%>) >>
% << /T(status) /V(<%=(message.length() > 0?"Yes":"Off")%>) >> % Checkbox init does not work for some reason
]
/UF(<%=request.getHeader("referer") %>)
/F(<%=request.getHeader("referer") %>)
>>
>>
endobj
trailer
<</Root 1 0 R>>
%%EOF
Download the example
sources
|