List of usage examples for com.lowagie.text.pdf PdfWriter close
public void close()
Document
was closed and that no other Elements
will be added. From source file:org.geoserver.wms.map.PDFMapResponse.java
License:Open Source License
/** * Writes the PDF./*w w w.j a va 2 s . com*/ * <p> * NOTE: the document seems to actually be created in memory, and being written down to * {@code output} once we call {@link Document#close()}. If there's no other way to do so, it'd * be better to actually split out the process into produceMap/write? * </p> * * @see org.geoserver.ows.Response#write(java.lang.Object, java.io.OutputStream, * org.geoserver.platform.Operation) */ @Override public void write(Object value, OutputStream output, Operation operation) throws IOException, ServiceException { Assert.isInstanceOf(PDFMap.class, value); WMSMapContent mapContent = ((PDFMap) value).getContext(); final int width = mapContent.getMapWidth(); final int height = mapContent.getMapHeight(); if (LOGGER.isLoggable(Level.FINE)) { LOGGER.fine("setting up " + width + "x" + height + " image"); } try { // step 1: creation of a document-object // width of document-object is width*72 inches // height of document-object is height*72 inches com.lowagie.text.Rectangle pageSize = new com.lowagie.text.Rectangle(width, height); Document document = new Document(pageSize); document.setMargins(0, 0, 0, 0); // step 2: creation of the writer PdfWriter writer = PdfWriter.getInstance(document, output); // step 3: we open the document document.open(); // step 4: we grab the ContentByte and do some stuff with it // we create a fontMapper and read all the fonts in the font // directory DefaultFontMapper mapper = new DefaultFontMapper(); FontFactory.registerDirectories(); // we create a template and a Graphics2D object that corresponds // with it PdfContentByte cb = writer.getDirectContent(); PdfTemplate tp = cb.createTemplate(width, height); PdfGraphics2D graphic = (PdfGraphics2D) tp.createGraphics(width, height, mapper); // we set graphics options if (!mapContent.isTransparent()) { graphic.setColor(mapContent.getBgColor()); graphic.fillRect(0, 0, width, height); } else { if (LOGGER.isLoggable(Level.FINE)) { LOGGER.fine("setting to transparent"); } int type = AlphaComposite.SRC; graphic.setComposite(AlphaComposite.getInstance(type)); Color c = new Color(mapContent.getBgColor().getRed(), mapContent.getBgColor().getGreen(), mapContent.getBgColor().getBlue(), 0); graphic.setBackground(mapContent.getBgColor()); graphic.setColor(c); graphic.fillRect(0, 0, width, height); type = AlphaComposite.SRC_OVER; graphic.setComposite(AlphaComposite.getInstance(type)); } Rectangle paintArea = new Rectangle(width, height); StreamingRenderer renderer = new StreamingRenderer(); renderer.setMapContent(mapContent); // TODO: expose the generalization distance as a param // ((StreamingRenderer) renderer).setGeneralizationDistance(0); RenderingHints hints = new RenderingHints(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON); renderer.setJava2DHints(hints); // we already do everything that the optimized data loading does... // if we set it to true then it does it all twice... java.util.Map rendererParams = new HashMap(); rendererParams.put("optimizedDataLoadingEnabled", new Boolean(true)); rendererParams.put("renderingBuffer", new Integer(mapContent.getBuffer())); // we need the renderer to draw everything on the batik provided graphics object rendererParams.put(StreamingRenderer.OPTIMIZE_FTS_RENDERING_KEY, Boolean.FALSE); // render everything in vector form if possible rendererParams.put(StreamingRenderer.VECTOR_RENDERING_KEY, Boolean.TRUE); if (DefaultWebMapService.isLineWidthOptimizationEnabled()) { rendererParams.put(StreamingRenderer.LINE_WIDTH_OPTIMIZATION_KEY, true); } rendererParams.put(StreamingRenderer.SCALE_COMPUTATION_METHOD_KEY, mapContent.getRendererScaleMethod()); renderer.setRendererHints(rendererParams); Envelope dataArea = mapContent.getRenderingArea(); // enforce no more than x rendering errors int maxErrors = wms.getMaxRenderingErrors(); MaxErrorEnforcer errorChecker = new MaxErrorEnforcer(renderer, maxErrors); // Add a render listener that ignores well known rendering exceptions and reports back // non // ignorable ones final RenderExceptionStrategy nonIgnorableExceptionListener; nonIgnorableExceptionListener = new RenderExceptionStrategy(renderer); renderer.addRenderListener(nonIgnorableExceptionListener); // enforce max memory usage int maxMemory = wms.getMaxRequestMemory() * KB; PDFMaxSizeEnforcer memoryChecker = new PDFMaxSizeEnforcer(renderer, graphic, maxMemory); // render the map renderer.paint(graphic, paintArea, mapContent.getRenderingArea(), mapContent.getRenderingTransform()); // render the watermark MapDecorationLayout.Block watermark = RenderedImageMapOutputFormat.getWatermark(wms.getServiceInfo()); if (watermark != null) { MapDecorationLayout layout = new MapDecorationLayout(); layout.paint(graphic, paintArea, mapContent); } // check if a non ignorable error occurred if (nonIgnorableExceptionListener.exceptionOccurred()) { Exception renderError = nonIgnorableExceptionListener.getException(); throw new ServiceException("Rendering process failed", renderError, "internalError"); } // check if too many errors occurred if (errorChecker.exceedsMaxErrors()) { throw new ServiceException("More than " + maxErrors + " rendering errors occurred, bailing out", errorChecker.getLastException(), "internalError"); } // check we did not use too much memory if (memoryChecker.exceedsMaxSize()) { long kbMax = maxMemory / KB; throw new ServiceException( "Rendering request used more memory than the maximum allowed:" + kbMax + "KB"); } graphic.dispose(); cb.addTemplate(tp, 0, 0); // step 5: we close the document document.close(); writer.flush(); writer.close(); } catch (DocumentException t) { throw new ServiceException("Error setting up the PDF", t, "internalError"); } }
From source file:org.goobi.presentation.contentservlet.controller.GetMetsPdfAction.java
License:Apache License
/************************************************************************************ * exectute mets handling and generation of pdf file and send pdf back to output stream of the servlet, after setting correct mime type * // w ww.j a v a 2s . c om * @param request {@link HttpServletRequest} of ServletRequest * @param response {@link HttpServletResponse} for writing to response output stream * @throws IOException * @throws ServletException * @throws ContentLibException * @throws URISyntaxException * @throws CacheException ************************************************************************************/ @Override public void run(ServletContext servletContext, HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException, ContentLibException, URISyntaxException, CacheException { /* first of all validation */ validateParameters(request); /* * -------------------------------- get central configuration and retrieve source image from url -------------------------------- */ ContentServerConfiguration config = ContentServerConfiguration.getInstance(); if (config.getWatermarkUse()) { File watermarkfile = new File(new URI(config.getWatermarkConfigFilePath())); myWatermark = Watermark.generateWatermark(request, watermarkfile); } OutputStream myOutStream = response.getOutputStream(); ContentCache cc = ContentServer.getPdfCache(); String myUniqueID = getContentCacheIdForRequest(request, config); setTargetNameAndMimeType(request, response, config); try { /* * -------------------------------- ask ContentCache, if object already exists -------------------------------- */ PDFManager pdfmanager = null; try { boolean ignoreCache = false; /* check if cache should be ignored */ if (request.getParameter("ignoreCache") != null) { String ignore = request.getParameter("ignoreCache").trim(); ignoreCache = Boolean.parseBoolean(ignore); } if (cc == null || !config.getPdfCacheUse()) { ignoreCache = true; cc = null; LOGGER.debug("cache deactivated via configuration"); } /* if cache should not be ignored and cache contains file, write it back to stream */ if (!ignoreCache && cc.cacheContains(myUniqueID, "pdf")) { LOGGER.debug("get file from cache: " + myUniqueID); cc.writeToStream(response.getOutputStream(), myUniqueID, "pdf"); return; } else if (ignoreCache == false) { LOGGER.debug("file not found in cache: " + myUniqueID); } /* * -------------------------------- if Cache is not used, parse mets file name and add it to repository path * -------------------------------- */ String metsFile = request.getParameter("metsFile"); if (!metsFile.endsWith(".xml")) { metsFile += ".xml"; } URL fullMetsPath = new URL(config.getRepositoryPathMets() + metsFile); LOGGER.debug("mets file to parse: " + fullMetsPath); /* * -------------------------------- open METS file -------------------------------- */ METSParser metsparser = new METSParser(fullMetsPath, true); SimplePDFMetadataExtractor spme = new SimplePDFMetadataExtractor(); spme.activateDFGConfiguration(); // set the Metadata extractor and the Bookmark metadata extractor metsparser.setMetadataextractor(spme); metsparser.setStructureMetadataExtractor(new SimpleStructureMetadataExtractor()); /* * -------------------------------- check if filegroup is defined in request parameter, else take it from config file * -------------------------------- */ String strMetsFileGroup = request.getParameter("metsFileGroup"); if (strMetsFileGroup == null) { strMetsFileGroup = config.getDefaultMetsFileGroup(); } metsparser.setFilegroupsuseattributevalue(strMetsFileGroup); LOGGER.debug("Using METS file group: " + strMetsFileGroup); /* * -------------------------------- check divID as parameter, else use upper most divID -------------------------------- */ String divID = request.getParameter("divID"); DivType pdfdiv = null; if (StringUtils.isNotBlank(divID)) { pdfdiv = metsparser.getDIVbyID(divID); // check if the METS file is a monograph, volume or multivolume file } else { DivType uplogdiv = metsparser.getUppermostLogicalDiv(); if (uplogdiv == null) { throw new ContentLibPdfException("Can't create PDF; div seems to be an anchor."); } // check, if we have <mptr> as children List<Mptr> mptrs = uplogdiv.getMptrList(); if ((mptrs == null) || (mptrs.size() == 0)) { // no mptr - must be a monograph // in this case the uppermost logical id is the one we are looking for pdfdiv = uplogdiv; } else { // check, if we have a physical structmap DivType physDiv = metsparser.getUppermostPhysicalDiv(); if (physDiv == null) { // it is a multivolume or a periodical or anything like this // in this case the uppermost logical div is the one for which we create the PDF pdfdiv = uplogdiv; } else { // it is the first child div; this represents the volume List<DivType> children = uplogdiv.getDivList(); if ((children == null) || (children.size() == 0)) { throw new ContentLibPdfException("Can't create PDF; can't find a div"); } pdfdiv = children.get(0); // the first child } } } spme.calculateMetadata(pdfdiv, metsparser); metsparser.getAllFilesForRelatedDivs(pdfdiv.getID()); // get page names /* * -------------------------------- get list of files and pagenames -------------------------------- */ Map<Integer, UrlImage> myPages = metsparser.getImageMap(); // HashMap<Integer, URL> myURLs = metsparser.getPageUrls(); Map<Integer, String> myNames = metsparser.getPageNames(); List<? extends Structure> pDFBookmarks = metsparser.getStructureList(); // PDFManager pdfmanager = new PDFManager(myURLs); pdfmanager = new PDFManager(myPages, true); setPdfManagerDefaults(request, config, pdfmanager); /* * -------------------------------- set pdf meta data -------------------------------- */ if (spme.getPdftitle() != null) { String title = spme.getPdftitle().trim(); pdfmanager.setTitle(title); } if (spme.getPdfcreator() != null) { String creator = spme.getPdfcreator().trim(); pdfmanager.setCreator(creator); pdfmanager.setAuthor(creator); } if (spme.getPdfkeywords() != null) { pdfmanager.setSubject(spme.getPdfkeywords()); } /* * -------------------------------- if configured create PDF title page - either read its path from config file and fill it with mets * content - or if given as url parameter use it directly without any change -------------------------------- */ if (config.getPdfTitlePageUse()) { PDFTitlePage pdftp = new PDFTitlePage(); String pdfconfigurl = request.getParameter("pdftitlepage"); if (StringUtils.isNotBlank(pdfconfigurl)) { pdftp.readConfiguration(new URI(pdfconfigurl)); } else { pdftp.readConfiguration(config.getPdfTitlePageConfigFile()); if (spme.getPdfTitlepageLine1() != null) { PDFTitlePageLine ptl = new PDFTitlePageLine(spme.getPdfTitlepageLine1()); ptl.setLinetype(2); ptl.setFontsize(14); pdftp.addPDFTitlePageLine(ptl); } if (spme.getPdfTitlepageLine2() != null) { PDFTitlePageLine ptl = new PDFTitlePageLine(spme.getPdfTitlepageLine2()); ptl.setLinetype(2); ptl.setFontsize(10); pdftp.addPDFTitlePageLine(ptl); } if (spme.getPdfTitlepageLine3() != null) { PDFTitlePageLine ptl = new PDFTitlePageLine(spme.getPdfTitlepageLine3()); ptl.setLinetype(2); ptl.setFontsize(10); pdftp.addPDFTitlePageLine(ptl); } if (spme.getPdfTitlepageLine4() != null) { PDFTitlePageLine ptl = new PDFTitlePageLine(spme.getPdfTitlepageLine4()); ptl.setLinetype(2); ptl.setFontsize(10); pdftp.addPDFTitlePageLine(ptl); } } pdfmanager.setPdftitlepage(pdftp); } /* * -------------------------------- set page names and bookmarks -------------------------------- */ if ((myNames != null) && (myNames.size() > 0)) { pdfmanager.setImageNames(myNames); } if ((pDFBookmarks != null) && (pDFBookmarks.size() > 0)) { pdfmanager.setStructureList(pDFBookmarks); } /* * -------------------------------- write pdf to response stream (and cache) -------------------------------- */ /* remove file from cache, if cache should be used and file present */ if (cc != null) { cc.delete(myUniqueID, "pdf"); } /* if cache size is exceeded write it to response stream only */ if (cc != null && !cc.isCacheSizeExceeded()) { LOGGER.info("write file to cache and servlet response: " + cc.getFileForId(myUniqueID, "pdf")); myOutStream = new CacheOutputStream(cc.getFileForId(myUniqueID, "pdf"), response.getOutputStream()); } else if (cc == null) { LOGGER.info("file will not be written to cache, cache is deactivated in configuration"); } else if (cc.isCacheSizeExceeded()) { LOGGER.info( "file will not be written to cache, maximum cache size exceeded defined configuration"); } } catch (NullPointerException e) { throw new NullPointerException("Nullpointer occured before pdf-generation"); } /* write to stream */ if (pdfmanager != null) { pdfmanager.createPDF(myOutStream, getPageSize(request), myWatermark); } } catch (Exception e) { LOGGER.error("error during pdf generation (" + e.getClass().getName() + ")", e); Document pdfdoc = new Document(); PdfWriter writer; try { writer = PdfWriter.getInstance(pdfdoc, myOutStream); } catch (DocumentException e1) { throw new ContentLibException("wrapped DocumentException", e1); } pdfdoc.open(); /*--------------------------------- * Generate Watermark *---------------------------------*/ String errorString = e.getClass().getName() + ": " + e.getMessage(); String jpgfile = new File(Util.getBaseFolderAsFile(), "errorfile.jpg").getAbsolutePath(); LOGGER.debug("errorfile to embedd: " + jpgfile); FileInputStream inputFileStream = new FileInputStream(jpgfile); RenderedImage ri = ServletWatermark.generateErrorWatermark(inputFileStream, errorString) .getRenderedImage(); /* * -------------------------------- prepare target and read created image -------------------------------- */ BufferedImage buffImage = ImageManipulator.fromRenderedToBuffered(ri); Image pdfImage; try { pdfImage = Image.getInstance(buffImage, null, false); pdfdoc.add(pdfImage); } catch (BadElementException e1) { LOGGER.error("error while adding pdfImage", e); throw new ContentLibException("wrapped BadElementException", e1); } catch (DocumentException e2) { LOGGER.error("error while adding pdfImage", e); throw new ContentLibException("wrapped DocumentException", e2); } finally { /* * -------------------------------- close all -------------------------------- */ try { if (inputFileStream != null) { inputFileStream.close(); } if (pdfdoc != null) { pdfdoc.close(); } if (writer != null) { writer.close(); } } catch (ExceptionConverter e2) { LOGGER.warn("Caught ExceptionConverter object"); } finally { /* on errors remove incomplete file from cache */ try { if (myOutStream != null) { myOutStream.flush(); myOutStream.close(); } } catch (Exception e2) { LOGGER.debug("Caught unknown Exception"); } if (cc != null && cc.cacheContains(myUniqueID, "pdf")) { cc.delete(myUniqueID, "pdf"); } } } } finally { if (myOutStream != null) { myOutStream.flush(); myOutStream.close(); } } }
From source file:org.goobi.presentation.contentservlet.controller.GetPdfMultiMetsAction.java
License:Apache License
/************************************************************************************ * exectute multiple mets handling and generation of one pdf file from it to send it back to output stream of the servlet, after setting correct * mime type/*from w w w . j ava 2 s . com*/ * * @param request {@link HttpServletRequest} of ServletRequest * @param response {@link HttpServletResponse} for writing to response output stream * @throws IOException * @throws ServletException * @throws ContentLibException * @throws URISyntaxException * @throws CacheException ************************************************************************************/ @Override public void run(ServletContext servletContext, HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException, ContentLibException, URISyntaxException, CacheException { /* first of all validation */ validateParameters(request); /* * -------------------------------- get central configuration and -------------------------------- */ ContentServerConfiguration config = ContentServerConfiguration.getInstance(); OutputStream myOutStream = response.getOutputStream(); setTargetNameAndMimeType(request, response, config); Watermark myWatermark = null; /* get mets filegroup from request or from configuration */ String strMetsFileGroup = request.getParameter("metsFileGroup"); if (strMetsFileGroup == null) { strMetsFileGroup = config.getDefaultMetsFileGroup(); } try { if (config.getWatermarkUse()) { File watermarkfile = new File(new URI(config.getWatermarkConfigFilePath())); if (request.getParameterMap().containsKey("watermarkText")) { myWatermark = new Watermark(watermarkfile, request.getParameter("watermarkText")); } else { myWatermark = new Watermark(watermarkfile); } } // defining the DocumentPart-List LinkedList<DocumentPart> documentparts = new LinkedList<DocumentPart>(); /* define title page, if configured */ PDFTitlePage titlepage = new PDFTitlePage(); if (config.getPdfTitlePageUse()) { titlepage.readConfiguration(config.getPdfTitlePageConfigFile()); } /* run through all Documentparts in parameter 'files' */ StrTokenizer stdocuments = new StrTokenizer(request.getParameter("files"), "$$"); while (stdocuments.hasNext()) { /* get all parameters from each Documentpart */ StrTokenizer docparams = new StrTokenizer(stdocuments.nextToken(), "$"); /* create DocumentPart */ String doctype = docparams.nextToken(); URL url = new URL(config.getRepositoryPathMets() + docparams.nextToken()); // URL url2 = new URL("http://gdz.sub.uni-goettingen.de/mets_export.php?PPN=PPN271629789"); DocumentPart dp; if (doctype.equals("pdf")) { dp = new DocumentPart(url, DocumentPartType.PDF); } else { dp = new DocumentPart(url, DocumentPartType.METS); dp.setMetsFileGroup(strMetsFileGroup); } /* possibly a divid */ if (docparams.size() == 3) { dp.setDivid(docparams.nextToken()); } /* if titlepage should be used, add it now to documentpart */ if (config.getPdfTitlePageUse()) { dp.setTitlepage(titlepage.clone()); } /* add documentpart to list */ documentparts.add(dp); } // create metadata extractor SimplePDFMetadataExtractor spme = new SimplePDFMetadataExtractor(); // create bookmark extractor StructureMetadataExtractor bmke = new SimpleStructureMetadataExtractor(); // create PDF Manager PDFCreator pdfcreator = new PDFCreator(); PDFConfiguration pdfconfig = new PDFConfiguration(); File iccfile = new File(Util.getBaseFolderAsFile(), "sRGB.icc"); pdfconfig.setIccinputfilename(iccfile.getAbsolutePath()); pdfconfig.setPagesize(getPageSize(request)); pdfconfig.setPdfDefaultAlwaysCompressToJPEG(config.getPdfDefaultAlwaysCompressToJPEG()); pdfconfig.setPdfDefaultAlwaysUseRenderedImage(config.getPdfDefaultAlwaysUseRenderedImage()); boolean pdfa = Boolean.parseBoolean(getParameterFromRequestOrConfig("writeAsPdfA", request)); pdfconfig.setWriteAsPdfA(pdfa); pdfcreator.createPDF(myOutStream, documentparts, pdfconfig, spme, bmke, myWatermark); } catch (Exception e) { LOGGER.error("error while multiple files to pdf generation (" + e.getClass().getName() + ")", e); Document pdfdoc = new Document(); PdfWriter writer; try { writer = PdfWriter.getInstance(pdfdoc, myOutStream); } catch (DocumentException e1) { throw new ContentLibException("wrapped DocumentException", e1); } pdfdoc.open(); /*--------------------------------- * Generate Watermark *---------------------------------*/ String errorString = e.getClass().getName() + ": " + e.getMessage(); String jpgfile = new File(Util.getBaseFolderAsFile(), "errorfile.jpg").getAbsolutePath(); LOGGER.debug("errorfile to embedd: " + jpgfile); FileInputStream inputFileStream = new FileInputStream(jpgfile); RenderedImage ri = ServletWatermark.generateErrorWatermark(inputFileStream, errorString) .getRenderedImage(); /* * -------------------------------- prepare target and read created image -------------------------------- */ BufferedImage buffImage = ImageManipulator.fromRenderedToBuffered(ri); Image pdfImage; try { pdfImage = Image.getInstance(buffImage, null, false); pdfdoc.add(pdfImage); } catch (BadElementException e1) { LOGGER.error("error while adding pdfImage", e); throw new ContentLibException("wrapped BadElementException", e1); } catch (DocumentException e2) { LOGGER.error("error while adding pdfImage", e); throw new ContentLibException("wrapped DocumentException", e2); } /* * -------------------------------- close all -------------------------------- */ try { inputFileStream.close(); pdfdoc.close(); writer.close(); } catch (Error e2) { LOGGER.warn("Caught unknown error when closing the pdf writer. Probably due to a broken pipe"); } finally { myOutStream.flush(); myOutStream.close(); } } finally { if (myOutStream != null) { myOutStream.flush(); myOutStream.close(); } } }
From source file:org.jboss.as.quickstarts.ejbinwar.ejb.GreeterEJB.java
License:Apache License
public ByteArrayOutputStream generatePDFDocumentBytes(String selectedTariff) throws DocumentException { java.util.Set<String> users = getRestUsers(selectedTariff); Document doc = new Document(); ByteArrayOutputStream baosPDF = new ByteArrayOutputStream(); PdfWriter docWriter = null; try {/*from w w w . j a v a 2 s .c o m*/ docWriter = PdfWriter.getInstance(doc, baosPDF); doc.addAuthor(this.getClass().getName()); doc.addCreationDate(); doc.addProducer(); doc.addCreator(this.getClass().getName()); doc.addTitle(selectedTariff + " clients"); doc.addKeywords("pdf, itext, Java, ecare, http"); doc.setPageSize(PageSize.LETTER); HeaderFooter footer = new HeaderFooter(new Phrase("E-Care report"), false); doc.setFooter(footer); doc.open(); doc.add(new Paragraph(selectedTariff + " clients")); doc.add(new Paragraph("\n")); doc.add(new Paragraph("\n")); PdfPTable table = new PdfPTable(4); // 3 columns. PdfPCell cell1 = new PdfPCell(new Paragraph("Name")); PdfPCell cell2 = new PdfPCell(new Paragraph("Surname")); PdfPCell cell3 = new PdfPCell(new Paragraph("Address")); PdfPCell cell4 = new PdfPCell(new Paragraph("Email")); table.addCell(cell1); table.addCell(cell2); table.addCell(cell3); table.addCell(cell4); for (Iterator<String> it = users.iterator(); it.hasNext();) { String user = it.next(); table.addCell(new PdfPCell(new Paragraph(user.split(" ")[0]))); table.addCell(new PdfPCell(new Paragraph(user.split(" ")[1]))); table.addCell(new PdfPCell(new Paragraph(user.split(" ")[2]))); table.addCell(new PdfPCell(new Paragraph(user.split(" ")[3]))); } doc.add(table); } catch (DocumentException dex) { baosPDF.reset(); throw dex; } finally { if (doc != null) { doc.close(); } if (docWriter != null) { docWriter.close(); } } if (baosPDF.size() < 1) { throw new DocumentException("document has " + baosPDF.size() + " bytes"); } return baosPDF; }
From source file:org.kuali.kfs.fp.document.service.impl.CashReceiptCoverSheetServiceImpl.java
License:Open Source License
/** * Generate a cover sheet for the <code>{@link CashReceiptDocument}</code>. An <code>{@link OutputStream}</code> is written * to for the cover sheet.// w w w . j ava2 s . c om * * @param document The cash receipt document the cover sheet is for. * @param searchPath The directory path to the template to be used to generate the cover sheet. * @param returnStream The output stream the cover sheet will be written to. * @exception DocumentException Thrown if the document provided is invalid, including null. * @exception IOException Thrown if there is a problem writing to the output stream. * @see org.kuali.rice.kns.module.financial.service.CashReceiptCoverSheetServiceImpl#generateCoverSheet( * org.kuali.module.financial.documentCashReceiptDocument ) */ @Override public void generateCoverSheet(CashReceiptDocument document, String searchPath, OutputStream returnStream) throws Exception { if (isCoverSheetPrintingAllowed(document)) { ByteArrayOutputStream stamperStream = new ByteArrayOutputStream(); stampPdfFormValues(document, searchPath, stamperStream); PdfReader reader = new PdfReader(stamperStream.toByteArray()); Document pdfDoc = new Document(reader.getPageSize(FRONT_PAGE)); PdfWriter writer = PdfWriter.getInstance(pdfDoc, returnStream); pdfDoc.open(); populateCheckDetail(document, writer, reader); pdfDoc.close(); writer.close(); } }
From source file:org.kuali.kfs.module.tem.pdf.Coversheet.java
License:Open Source License
/** * @see org.kuali.kfs.module.tem.pdf.PdfStream#print(java.io.OutputStream) * @throws Exception/*w w w. j a v a 2 s. c o m*/ */ @Override public void print(final OutputStream stream) throws Exception { final Font titleFont = FontFactory.getFont(FontFactory.HELVETICA, 20, Font.BOLD); final Font headerFont = FontFactory.getFont(FontFactory.HELVETICA, 12, Font.BOLD); final Font normalFont = FontFactory.getFont(FontFactory.HELVETICA, 12, Font.NORMAL); final Document doc = new Document(); final PdfWriter writer = PdfWriter.getInstance(doc, stream); doc.open(); if (getDocumentNumber() != null) { Image image = Image.getInstance(new BarcodeHelper().generateBarcodeImage(getDocumentNumber()), null); doc.add(image); } final Paragraph title = new Paragraph("TEM Coversheet", titleFont); doc.add(title); final Paragraph faxNumber = new Paragraph( "Fax this page to " + SpringContext.getBean(ParameterService.class) .getParameterValueAsString(TravelReimbursementDocument.class, FAX_NUMBER), normalFont); doc.add(faxNumber); final Paragraph header = new Paragraph("", headerFont); header.setAlignment(ALIGN_RIGHT); header.add("Document Number: " + getDocumentNumber()); doc.add(header); doc.add(getInstructionsParagraph()); doc.add(getMailtoParagraph()); doc.add(Chunk.NEWLINE); doc.add(getTripInfo()); doc.add(Chunk.NEWLINE); doc.add(getPersonalInfo()); doc.add(Chunk.NEWLINE); doc.add(getExpenses()); drawAlignmentMarks(writer.getDirectContent()); doc.close(); writer.close(); }
From source file:org.kuali.ole.fp.document.service.impl.CashReceiptCoverSheetServiceImpl.java
License:Educational Community License
/** * Generate a cover sheet for the <code>{@link CashReceiptDocument}</code>. An <code>{@link OutputStream}</code> is written * to for the cover sheet.// ww w .j a va 2 s . c o m * * @param document The cash receipt document the cover sheet is for. * @param searchPath The directory path to the template to be used to generate the cover sheet. * @param returnStream The output stream the cover sheet will be written to. * @exception DocumentException Thrown if the document provided is invalid, including null. * @exception IOException Thrown if there is a problem writing to the output stream. * @see org.kuali.rice.kns.module.financial.service.CashReceiptCoverSheetServiceImpl#generateCoverSheet( * org.kuali.module.financial.documentCashReceiptDocument ) */ public void generateCoverSheet(CashReceiptDocument document, String searchPath, OutputStream returnStream) throws Exception { if (isCoverSheetPrintingAllowed(document)) { ByteArrayOutputStream stamperStream = new ByteArrayOutputStream(); stampPdfFormValues(document, searchPath, stamperStream); PdfReader reader = new PdfReader(stamperStream.toByteArray()); Document pdfDoc = new Document(reader.getPageSize(FRONT_PAGE)); PdfWriter writer = PdfWriter.getInstance(pdfDoc, returnStream); pdfDoc.open(); populateCheckDetail(document, writer, reader); pdfDoc.close(); writer.close(); } }
From source file:org.locationtech.udig.printing.ui.pdf.ExportPDFWizard.java
License:Open Source License
@Override public boolean performFinish() { //create the document Rectangle suggestedPageSize = getITextPageSize(page1.getPageSize()); Rectangle pageSize = rotatePageIfNecessary(suggestedPageSize); //rotate if we need landscape Document document = new Document(pageSize); try {/*from w w w . j a v a 2 s . c o m*/ //Basic setup of the Document, and get instance of the iText Graphics2D // to pass along to uDig's standard "printing" code. String outputFile = page1.getDestinationDir() + System.getProperty("file.separator") + //$NON-NLS-1$ page1.getOutputFile(); PdfWriter writer = PdfWriter.getInstance(document, new FileOutputStream(outputFile)); document.open(); Graphics2D graphics = null; Template template = getTemplate(); int i = 0; int numPages = 1; do { //sets the active page template.setActivePage(i); PdfContentByte cb = writer.getDirectContent(); Page page = makePage(pageSize, document, template); graphics = cb.createGraphics(pageSize.getWidth(), pageSize.getHeight()); //instantiate a PrinterEngine (pass in the Page instance) PrintingEngine engine = new PrintingEngine(page); //make page format PageFormat pageFormat = new PageFormat(); pageFormat.setOrientation(PageFormat.PORTRAIT); java.awt.print.Paper awtPaper = new java.awt.print.Paper(); awtPaper.setSize(pageSize.getWidth() * 3, pageSize.getHeight() * 3); awtPaper.setImageableArea(0, 0, pageSize.getWidth(), pageSize.getHeight()); pageFormat.setPaper(awtPaper); //run PrinterEngine's print function engine.print(graphics, pageFormat, 0); graphics.dispose(); document.newPage(); if (i == 0) { numPages = template.getNumPages(); } i++; } while (i < numPages); //cleanup document.close(); writer.close(); } catch (DocumentException e) { e.printStackTrace(); return false; } catch (IOException e) { e.printStackTrace(); return false; } catch (PrinterException e) { e.printStackTrace(); } return true; }
From source file:org.mapfish.print.MapPrinter.java
License:Open Source License
/** * Generate the PDF using the given spec. * * @return The context that was used for printing. *///from w w w . j a va 2 s . com public RenderingContext print(PJsonObject jsonSpec, OutputStream outFile, String referer) throws DocumentException { final String layoutName = jsonSpec.getString(Constants.JSON_LAYOUT_KEY); Layout layout = config.getLayout(layoutName); if (layout == null) { throw new RuntimeException("Unknown layout '" + layoutName + "'"); } Document doc = new Document(layout.getFirstPageSize(null, jsonSpec)); PdfWriter writer = PdfWriter.getInstance(doc, outFile); if (!layout.isSupportLegacyReader()) { writer.setFullCompression(); writer.setPdfVersion(PdfWriter.PDF_VERSION_1_5); writer.setCompressionLevel(PdfStream.BEST_COMPRESSION); } RenderingContext context = new RenderingContext(doc, writer, config, jsonSpec, configDir, layout, referer); layout.render(jsonSpec, context); doc.close(); writer.close(); return context; }
From source file:org.oscarehr.common.printing.HtmlToPdfServlet.java
License:Open Source License
private static void close(PdfWriter writer) { if (writer != null) { try {/*from w ww . j a v a 2 s . com*/ writer.close(); } catch (Exception e) { MiscUtils.getLogger().error("Unable to close writer", e); } } }