This sample demonstrates how you can process an XML print job and receive a preview of the data that would have been printed for that XML document and XSL template.
import curam.util.administration.struct.XSLTemplateInstanceKey;
import curam.util.exception.AppException;
import curam.util.exception.DatabaseException;
import curam.util.exception.InformationalException;
import curam.util.internal.xml.impl.XMLPrintStreamConstants;
import curam.util.type.Blob;
import curam.util.xml.impl.XMLDocument;
import curam.util.xml.impl.XMLEncodingConstants;
import curam.util.xml.impl.XMLPrintStream;
import java.io.ByteArrayOutputStream;
import java.io.FileOutputStream;
import java.io.IOException;
public class XMLServerTest {
MyResult previewJob(
final XSLTemplateInstanceKey tempKey,
final MyStruct myStruct)
throws DatabaseException, AppException,
InformationalException, IOException {
final XMLPrintStream myPrintStream =
new XMLPrintStream();
final ByteArrayOutputStream previewBuffer =
new ByteArrayOutputStream();
myPrintStream.setPreviewStream(previewBuffer);
// Explicitly specify that a PDF document be created:
myPrintStream.setJobType(
XMLPrintStreamConstants.kJobTypePDF);
myPrintStream.open(tempKey, MyPC, 1234);
final XMLDocument myDoc =
new XMLDocument(
myPrintStream.getStream(),
XMLEncodingConstants.kEncodeISOLATIN1);
myDoc.open("A User", "31-Dec-1999", "1.0", "Sample 1");
myDoc.add(myStruct);
myDoc.close();
myPrintStream.close();
// Now that we have created the PDF document the
// following code illustrates three things that
// can be done with it.
// (1) Save the document to disk.
final FileOutputStream previewFile =
new FileOutputStream("/preview.pdf");
previewBuffer.writeTo(previewFile);
previewFile.close();
// This class contains both a String and
// a Blob for demonstration purposes.
final MyResult result = new MyResult();
// (2) Store the PDF preview in a String:
result.previewDocString = previewBuffer.toString();
// (3) Store the PDF document in a Blob:
result.previewDocBlob =
new curam.util.type.Blob(previewBuffer.toByteArray());
return result;
}
}
Having received the PDF preview of the data, this sample illustrates three ways in which the preview can be used:
This example used an java.io.ByteArrayOutputStream as a buffer to hold the generated PDF document because this class was most suited to the three examples above. However any sub-class of java.io.OutputStream can be used, depending on your needs. For example, a java.io.FileOutputStream could be used if you wish to write the data to a file.