List of usage examples for com.lowagie.text.pdf PdfStamper PdfStamper
public PdfStamper(PdfReader reader, OutputStream os) throws DocumentException, IOException
From source file:org.openelis.bean.WorksheetPrintReportBean.java
License:Open Source License
private Path fillPDFWorksheet(Integer worksheetId, String templateName, String userName) throws Exception { int i, j, formCapacity, diagramCapacity, pageNumber; AcroFields form;/*from w w w .java 2 s .co m*/ AnalysisViewDO aVDO; ArrayList<AnalysisQaEventViewDO> aqeVDOs; ArrayList<Integer> analysisIds, qcLotIds; ArrayList<NoteViewDO> nVDOs; ArrayList<QcAnalyteViewDO> qaVDOs; ArrayList<QcLotViewDO> qlVDOs; ArrayList<SampleManager1> sMans; ArrayList<SampleOrganizationViewDO> sOrgs; ArrayList<SampleQaEventViewDO> sqeVDOs; ArrayList<SystemVariableDO> sysVars; ArrayList<WorksheetAnalysisViewDO> waVDOs; ByteArrayOutputStream page; Document doc; HashMap<Integer, ArrayList<QcAnalyteViewDO>> qaVDOMap; HashMap<Integer, ArrayList<WorksheetAnalysisViewDO>> waVDOMap; HashMap<Integer, QcLotViewDO> qlMap; HashMap<Integer, SampleManager1> sMap; OutputStream out; Path path; PatientDO patDO; PdfCopy writer; PdfReader reader; PdfStamper stamper; ProviderDO proDO; QcLotViewDO qlVDO; RandomAccessFileOrArray original; SampleEnvironmentalDO seDO; SampleDO sDO; SampleItemViewDO siVDO; SampleManager1 sMan; String collectionDateTime, dirName, now, qcLink; StringBuilder aNotes, aQaevents, sNotes, sQaevents; WorksheetAnalysisDO waDO1; WorksheetItemDO wiDO1; WorksheetManager1 wMan; WorksheetViewDO wVDO; now = ReportUtil.toString(new Date(), Messages.get().dateTimePattern()); dirName = ""; try { sysVars = systemVariable.fetchByName("worksheet_template_directory", 1); if (sysVars.size() > 0) dirName = ((SystemVariableDO) sysVars.get(0)).getValue(); } catch (Exception anyE) { throw new Exception("Error retrieving temp directory variable: " + anyE.getMessage()); } analysisIds = new ArrayList<Integer>(); qcLotIds = new ArrayList<Integer>(); waVDOMap = new HashMap<Integer, ArrayList<WorksheetAnalysisViewDO>>(); wMan = worksheetManager.fetchById(worksheetId, WorksheetManager1.Load.DETAIL, WorksheetManager1.Load.REAGENT); for (WorksheetAnalysisViewDO data : WorksheetManager1Accessor.getAnalyses(wMan)) { waVDOs = waVDOMap.get(data.getWorksheetItemId()); if (waVDOs == null) { waVDOs = new ArrayList<WorksheetAnalysisViewDO>(); waVDOMap.put(data.getWorksheetItemId(), waVDOs); } waVDOs.add(data); if (data.getAnalysisId() != null) analysisIds.add(data.getAnalysisId()); else if (data.getQcLotId() != null) qcLotIds.add(data.getQcLotId()); } sMap = new HashMap<Integer, SampleManager1>(); if (analysisIds.size() > 0) { sMans = sampleManager.fetchByAnalyses(analysisIds, SampleManager1.Load.ORGANIZATION, SampleManager1.Load.QA, SampleManager1.Load.NOTE, SampleManager1.Load.SINGLEANALYSIS, SampleManager1.Load.PROVIDER); for (SampleManager1 data : sMans) { for (AnalysisViewDO data1 : SampleManager1Accessor.getAnalyses(data)) sMap.put(data1.getId(), data); } } qaVDOMap = new HashMap<Integer, ArrayList<QcAnalyteViewDO>>(); qlMap = new HashMap<Integer, QcLotViewDO>(); if (qcLotIds.size() > 0) { qlVDOs = qcLot.fetchByIds(qcLotIds); for (QcLotViewDO data : qlVDOs) { qlMap.put(data.getId(), data); try { qaVDOs = qcAnalyte.fetchByQcId(data.getQcId()); qaVDOMap.put(data.getQcId(), qaVDOs); } catch (NotFoundException nfE) { // ignore this error as leaving the hash record blank will not // cause an error due to a null check later on in the code } } } formCapacity = 1; out = null; try { path = ReportUtil.createTempFile("worksheetPrint", ".pdf", null); out = Files.newOutputStream(path); reader = new PdfReader(dirName + "OEWorksheet" + templateName + ".pdf"); original = reader.getSafeFile(); form = reader.getAcroFields(); if (form.getField("capacity") != null) formCapacity = Integer.parseInt(form.getField("capacity")); if (form.getField("diagram_capacity") != null) diagramCapacity = Integer.parseInt(form.getField("diagram_capacity")); else diagramCapacity = formCapacity; doc = new Document(reader.getPageSizeWithRotation(1)); writer = new PdfCopy(doc, out); doc.open(); reader.close(); i = -1; pageNumber = -1; form = null; page = null; stamper = null; wVDO = wMan.getWorksheet(); for (WorksheetItemDO wiDO : WorksheetManager1Accessor.getItems(wMan)) { j = wiDO.getPosition() % diagramCapacity; if (j == 0) j = diagramCapacity; for (WorksheetAnalysisViewDO waVDO : waVDOMap.get(wiDO.getId())) { if (i == -1 || i > formCapacity || j > diagramCapacity) { if (i != -1) { fillReagentFields(form, wMan); stamper.setFormFlattening(true); renameFields(form, pageNumber); flattenFilledFields(stamper, form, formCapacity, pageNumber); stamper.close(); reader.close(); reader = new PdfReader(page.toByteArray()); writer.addPage(writer.getImportedPage(reader, 1)); reader.close(); } reader = new PdfReader(original, null); page = new ByteArrayOutputStream(); stamper = new PdfStamper(reader, page); form = stamper.getAcroFields(); i = 1; pageNumber++; form.setField("current_date_time", now); form.setField("username", userName); form.setField("worksheet_description_1", wVDO.getDescription()); } qcLink = ""; if (waVDO.getWorksheetAnalysisId() != null) { try { waDO1 = worksheetAnalysis.fetchById(waVDO.getWorksheetAnalysisId()); wiDO1 = worksheetItem.fetchById(waDO1.getWorksheetItemId()); qcLink = waDO1.getAccessionNumber() + " (" + wiDO1.getPosition() + ")"; } catch (Exception anyE) { log.log(Level.SEVERE, anyE.getMessage(), anyE); } } form.setField("worksheet_id_" + (i), wVDO.getId().toString()); form.setField("created_date_" + (i), ReportUtil.toString(wVDO.getCreatedDate(), Messages.get().dateTimePattern())); if (waVDOMap.get(wiDO.getId()).indexOf(waVDO) == 0) form.setField("position_" + (i), wiDO.getPosition().toString()); if (waVDO.getAnalysisId() != null) { sMan = sMap.get(waVDO.getAnalysisId()); sDO = sMan.getSample(); patDO = null; proDO = null; seDO = null; if (Constants.domain().CLINICAL.equals(sDO.getDomain())) { patDO = sMan.getSampleClinical().getPatient(); proDO = sMan.getSampleClinical().getProvider(); } else if (Constants.domain().NEONATAL.equals(sDO.getDomain())) { patDO = sMan.getSampleNeonatal().getPatient(); proDO = sMan.getSampleNeonatal().getProvider(); } else if (Constants.domain().ENVIRONMENTAL.equals(sDO.getDomain())) { seDO = sMan.getSampleEnvironmental(); } sOrgs = SampleManager1Accessor.getOrganizations(sMan); aVDO = (AnalysisViewDO) sMan.getObject(Constants.uid().getAnalysis(waVDO.getAnalysisId())); siVDO = (SampleItemViewDO) sMan .getObject(Constants.uid().getSampleItem(aVDO.getSampleItemId())); sQaevents = new StringBuilder(); sqeVDOs = SampleManager1Accessor.getSampleQAs(sMan); if (sqeVDOs != null && sqeVDOs.size() > 0) { for (SampleQaEventViewDO sqeVDO : sqeVDOs) { if (sQaevents.length() > 0) sQaevents.append(" | "); sQaevents.append(sqeVDO.getQaEventName()); } } aQaevents = new StringBuilder(); aqeVDOs = SampleManager1Accessor.getAnalysisQAs(sMan); if (aqeVDOs != null && aqeVDOs.size() > 0) { for (AnalysisQaEventViewDO aqeVDO : aqeVDOs) { if (!waVDO.getAnalysisId().equals(aqeVDO.getAnalysisId())) continue; if (aQaevents.length() > 0) aQaevents.append(" | "); aQaevents.append(aqeVDO.getQaEventName()); } } sNotes = new StringBuilder(); nVDOs = new ArrayList<NoteViewDO>(); if (SampleManager1Accessor.getSampleInternalNotes(sMan) != null) nVDOs.addAll(SampleManager1Accessor.getSampleInternalNotes(sMan)); if (SampleManager1Accessor.getSampleExternalNote(sMan) != null) nVDOs.add(SampleManager1Accessor.getSampleExternalNote(sMan)); if (nVDOs != null && nVDOs.size() > 0) { for (NoteViewDO nVDO : nVDOs) { if (sNotes.length() > 0) sNotes.append(" | "); sNotes.append(nVDO.getText()); } } aNotes = new StringBuilder(); nVDOs = new ArrayList<NoteViewDO>(); if (SampleManager1Accessor.getAnalysisInternalNotes(sMan) != null) nVDOs.addAll(SampleManager1Accessor.getAnalysisInternalNotes(sMan)); if (SampleManager1Accessor.getAnalysisExternalNotes(sMan) != null) nVDOs.addAll(SampleManager1Accessor.getAnalysisExternalNotes(sMan)); if (nVDOs != null && nVDOs.size() > 0) { for (NoteViewDO nVDO : nVDOs) { if (!waVDO.getAnalysisId().equals(nVDO.getReferenceId())) continue; if (aNotes.length() > 0) aNotes.append(" | "); aNotes.append(nVDO.getText()); } } if (waVDOMap.get(wiDO.getId()).size() > 1) form.setField("well_label_" + (j), wiDO.getPosition().toString()); else form.setField("well_label_" + (j), sDO.getAccessionNumber().toString()); form.setField("accession_number_" + (i), sDO.getAccessionNumber().toString()); form.setField("qc_link_" + (i), qcLink); if (sDO.getCollectionDate() != null) { collectionDateTime = ReportUtil.toString(sDO.getCollectionDate(), Messages.get().datePattern()); if (sDO.getCollectionTime() != null) { collectionDateTime += " "; collectionDateTime += ReportUtil.toString(sDO.getCollectionTime(), Messages.get().timePattern()); } form.setField("collection_date_" + (i), collectionDateTime); } form.setField("received_date_" + (i), ReportUtil.toString(sDO.getReceivedDate(), Messages.get().dateTimePattern())); if (patDO != null) { form.setField("patient_last_" + (i), patDO.getLastName()); form.setField("patient_first_" + (i), patDO.getFirstName()); } if (proDO != null) { form.setField("provider_last_" + (i), proDO.getLastName()); form.setField("provider_first_" + (i), proDO.getFirstName()); } if (seDO != null) { form.setField("env_location_" + (i), seDO.getLocation()); form.setField("env_description_" + (i), seDO.getDescription()); } if (sOrgs != null && sOrgs.size() > 0) { for (SampleOrganizationViewDO soVDO : sOrgs) { if (Constants.dictionary().ORG_REPORT_TO.equals(soVDO.getTypeId())) form.setField("organization_name_" + (i), soVDO.getOrganizationName()); else if (Constants.dictionary().ORG_BILL_TO.equals(soVDO.getTypeId())) form.setField("bill_to_name_" + (i), soVDO.getOrganizationName()); } } form.setField("type_of_sample_" + (i), siVDO.getTypeOfSample()); form.setField("source_of_sample_" + (i), siVDO.getSourceOfSample()); form.setField("source_other_" + (i), siVDO.getSourceOther()); form.setField("container_reference_" + (i), siVDO.getContainerReference()); form.setField("test_" + (i), aVDO.getTestName()); form.setField("method_" + (i), aVDO.getMethodName()); form.setField("sample_qaevent_" + (i), sQaevents.toString()); form.setField("analysis_qaevent_" + (i), aQaevents.toString()); form.setField("sample_note_" + (i), sNotes.toString()); form.setField("analysis_note_" + (i), aNotes.toString()); } else if (waVDO.getQcLotId() != null) { qlVDO = qlMap.get(waVDO.getQcLotId()); form.setField("well_label_" + (j), qlVDO.getQcName()); form.setField("qc_link_" + (i), qcLink); form.setField("qc_name_" + (i), qlVDO.getQcName()); form.setField("qc_lot_" + (i), qlVDO.getLotNumber()); form.setField("qc_usable_" + (i), ReportUtil.toString(qlVDO.getUsableDate(), Messages.get().dateTimePattern())); form.setField("qc_expiration_" + (i), ReportUtil.toString(qlVDO.getExpireDate(), Messages.get().dateTimePattern())); qaVDOs = qaVDOMap.get(qlVDO.getQcId()); if (qaVDOs != null && !qaVDOs.isEmpty()) form.setField("qc_expected_value_" + (i), qaVDOs.get(0).getValue()); } i++; } } fillReagentFields(form, wMan); stamper.setFormFlattening(true); renameFields(form, pageNumber); flattenFilledFields(stamper, form, formCapacity, pageNumber); stamper.close(); reader.close(); reader = new PdfReader(page.toByteArray()); writer.addPage(writer.getImportedPage(reader, 1)); doc.close(); reader.close(); } finally { try { if (out != null) out.close(); } catch (Exception e) { log.severe("Could not close output stream for worksheet print report"); } } return path; }
From source file:org.orbeon.oxf.processor.pdf.PDFTemplateProcessor.java
License:Open Source License
protected void readInput(PipelineContext pipelineContext, ProcessorInput input, Config config, OutputStream outputStream) { final org.dom4j.Document configDocument = readCacheInputAsDOM4J(pipelineContext, "model");// TODO: after all, should we use "config"? final org.dom4j.Document instanceDocument = readInputAsDOM4J(pipelineContext, input); final Configuration configuration = XPathCache.getGlobalConfiguration(); final DocumentInfo configDocumentInfo = new DocumentWrapper(configDocument, null, configuration); final DocumentInfo instanceDocumentInfo = new DocumentWrapper(instanceDocument, null, configuration); try {/*from ww w . j a va 2s .c o m*/ // Get reader final String templateHref = XPathCache.evaluateAsString(configDocumentInfo, "/*/template/@href", null, null, functionLibrary, null, null, null);//TODO: LocationData // Create PDF reader final PdfReader reader; { final String inputName = ProcessorImpl.getProcessorInputSchemeInputName(templateHref); if (inputName != null) { // Read the input final ByteArrayOutputStream os = new ByteArrayOutputStream(); readInputAsSAX(pipelineContext, inputName, new BinaryTextXMLReceiver(null, os, true, false, null, false, false, null, false)); // Create the reader reader = new PdfReader(os.toByteArray()); } else { // Read and create the reader reader = new PdfReader(URLFactory.createURL(templateHref)); } } // Get total number of pages final int pageCount = reader.getNumberOfPages(); // Get size of first page final Rectangle pageSize = reader.getPageSize(1); final float width = pageSize.getWidth(); final float height = pageSize.getHeight(); final String showGrid = XPathCache.evaluateAsString(configDocumentInfo, "/*/template/@show-grid", null, null, functionLibrary, null, null, null);//TODO: LocationData final PdfStamper stamper = new PdfStamper(reader, outputStream); stamper.setFormFlattening(true); for (int currentPage = 1; currentPage <= pageCount; currentPage++) { final PdfContentByte contentByte = stamper.getOverContent(currentPage); // Handle root group final GroupContext initialGroupContext = new GroupContext(contentByte, stamper.getAcroFields(), height, currentPage, Collections.singletonList((Item) instanceDocumentInfo), 1, 0, 0, "Courier", 14, 15.9f); handleGroup(pipelineContext, initialGroupContext, Dom4jUtils.elements(configDocument.getRootElement()), functionLibrary, reader); // Handle preview grid (NOTE: This can be heavy in memory.) if ("true".equalsIgnoreCase(showGrid)) { final float topPosition = 10f; final BaseFont baseFont2 = BaseFont.createFont("Courier", BaseFont.CP1252, BaseFont.NOT_EMBEDDED); contentByte.beginText(); { // 20-pixel lines and side legends contentByte.setFontAndSize(baseFont2, (float) 7); for (int w = 0; w <= width; w += 20) { for (int h = 0; h <= height; h += 2) contentByte.showTextAligned(PdfContentByte.ALIGN_CENTER, ".", (float) w, height - h, 0); } for (int h = 0; h <= height; h += 20) { for (int w = 0; w <= width; w += 2) contentByte.showTextAligned(PdfContentByte.ALIGN_CENTER, ".", (float) w, height - h, 0); } for (int w = 0; w <= width; w += 20) { contentByte.showTextAligned(PdfContentByte.ALIGN_CENTER, "" + w, (float) w, height - topPosition, 0); contentByte.showTextAligned(PdfContentByte.ALIGN_CENTER, "" + w, (float) w, topPosition, 0); } for (int h = 0; h <= height; h += 20) { contentByte.showTextAligned(PdfContentByte.ALIGN_CENTER, "" + h, (float) 5, height - h, 0); contentByte.showTextAligned(PdfContentByte.ALIGN_CENTER, "" + h, width - (float) 5, height - h, 0); } // 10-pixel lines contentByte.setFontAndSize(baseFont2, (float) 3); for (int w = 10; w <= width; w += 10) { for (int h = 0; h <= height; h += 2) contentByte.showTextAligned(PdfContentByte.ALIGN_CENTER, ".", (float) w, height - h, 0); } for (int h = 10; h <= height; h += 10) { for (int w = 0; w <= width; w += 2) contentByte.showTextAligned(PdfContentByte.ALIGN_CENTER, ".", (float) w, height - h, 0); } } contentByte.endText(); } } // Close the document // document.close(); stamper.close(); } catch (Exception e) { throw new OXFException(e); } }
From source file:org.oscarehr.common.printing.HtmlToPdfServlet.java
License:Open Source License
public static byte[] stamp(byte[] content) throws Exception { PdfReader reader = null;/*from w ww .j a v a 2 s . c om*/ ByteArrayOutputStream os = null; PdfStamper stamper = null; try { reader = new PdfReader(content); os = new ByteArrayOutputStream(content.length); stamper = new PdfStamper(reader, os); for (int i = 1; i <= reader.getNumberOfPages(); i++) { PdfContentByte over = stamper.getOverContent(i); BaseFont font = FontSettings.HELVETICA_6PT.createFont(); over.setFontAndSize(font, 10); float center = reader.getPageSize(i).getWidth() / 2.0f; // TODO Consider refactoring this into is own class printText(over, "Page " + i + " of " + reader.getNumberOfPages(), center, 35); printText(over, OscarProperties.getConfidentialityStatement(), center, 25); } // this is ugly, but there is no flush method for readers in itext.... stamper.close(); reader.close(); os.flush(); return os.toByteArray(); } finally { if (os != null) IOUtils.closeQuietly(os); } }
From source file:org.saiku.web.rest.resources.ExporterResource.java
License:Apache License
/** * Export chart to a file./*from w w w . j ava2 s. c om*/ * @summary Export Chart. * @param type The export type (png, svg, jpeg) * @param svg The SVG * @param size The size * @param name The name * @return A reponse containing the chart export. */ @POST @Produces({ "image/*" }) @Path("/saiku/chart") public Response exportChart(@FormParam("type") @DefaultValue("png") String type, @FormParam("svg") String svg, @FormParam("size") Integer size, @FormParam("name") String name) { try { final String imageType = type.toUpperCase(); Converter converter = Converter.byType("PDF"); if (converter == null) { throw new Exception("Image convert is null"); } // resp.setContentType(converter.getContentType()); // resp.setHeader("Content-disposition", "attachment; filename=chart." + converter.getExtension()); // final Integer size = req.getParameter("size") != null? Integer.parseInt(req.getParameter("size")) : null; // final String svgDocument = req.getParameter("svg"); // if (svgDocument == null) // { // resp.sendError(HttpServletResponse.SC_BAD_REQUEST, "Missing 'svg' parameter"); // return; // } if (StringUtils.isBlank(svg)) { throw new Exception("Missing 'svg' parameter"); } final InputStream in = new ByteArrayInputStream(svg.getBytes("UTF-8")); final ByteArrayOutputStream out = new ByteArrayOutputStream(); converter.convert(in, out, size); out.flush(); byte[] doc = out.toByteArray(); byte[] b = null; if (getVersion() != null && !getVersion().contains("EE")) { ByteArrayOutputStream baos = new ByteArrayOutputStream(); PdfReader reader = new PdfReader(doc); PdfStamper pdfStamper = new PdfStamper(reader, baos); URL dir_url = ExporterResource.class.getResource("/org/saiku/web/svg/watermark.png"); Image image = Image.getInstance(dir_url); for (int i = 1; i <= reader.getNumberOfPages(); i++) { PdfContentByte content = pdfStamper.getOverContent(i); image.setAbsolutePosition(450f, 280f); /*image.setAbsolutePosition(reader.getPageSize(1).getWidth() - image.getScaledWidth(), reader.getPageSize (1).getHeight() - image.getScaledHeight());*/ //image.setAlignment(Image.MIDDLE); content.addImage(image); } pdfStamper.close(); b = baos.toByteArray(); } else { b = doc; } if (!type.equals("pdf")) { PDDocument document = PDDocument.load(new ByteArrayInputStream(b), null); PDPageTree pdPages = document.getDocumentCatalog().getPages(); PDPage page = pdPages.get(0); BufferedImage o = new PDFRenderer(document).renderImage(0); ByteArrayOutputStream imgb = new ByteArrayOutputStream(); String ct = ""; String ext = ""; if (type.equals("png")) { ct = "image/png"; ext = "png"; } else if (type.equals("jpg")) { ct = "image/jpg"; ext = "jpg"; } ImageIO.write(o, type, imgb); byte[] outfile = imgb.toByteArray(); if (name == null || name.equals("")) { name = "chart"; } return Response.ok(outfile).type(ct) .header("content-disposition", "attachment; filename = " + name + "." + ext) .header("content-length", outfile.length).build(); } else { if (name == null || name.equals("")) { name = "chart"; } return Response.ok(b).type(converter.getContentType()) .header("content-disposition", "attachment; filename = " + name + "." + converter.getExtension()) .header("content-length", b.length).build(); } } catch (Exception e) { log.error("Error exporting Chart to " + type, e); return Response.serverError().entity(e.getMessage()).status(Status.INTERNAL_SERVER_ERROR).build(); } }
From source file:org.silverpeas.core.util.PdfUtil.java
License:Open Source License
/** * Add a image under or over content on each page of a PDF file. * @param pdfSource the source pdf file, this content is not modified by this method * @param imageToAdd the image file//from w w w . jav a 2s . c om * @param pdfDestination the destination pdf file, with the image under or over content * @param isBackground indicates if image is addes under or over the content of the pdf source * file */ private static void addImageOnEachPage(InputStream pdfSource, File imageToAdd, OutputStream pdfDestination, final boolean isBackground) { // Verify given arguments if (imageToAdd == null || !imageToAdd.isFile()) { throw new SilverpeasRuntimeException("The image file doesn't exist"); } else if (!FileUtil.isImage(imageToAdd.getPath())) { throw new SilverpeasRuntimeException("The picture to add is not an image file"); } PdfReader reader = null; try { // Get a reader of PDF content reader = new PdfReader(pdfSource); // Obtain the total number of pages int pdfNbPages = reader.getNumberOfPages(); PdfStamper stamper = new PdfStamper(reader, pdfDestination); // Load the image Image image = Image.getInstance(imageToAdd.getPath()); float imageWidth = image.getWidth(); float imageHeigth = image.getHeight(); // Adding the image on each page of the PDF for (int i = 1; i <= pdfNbPages; i++) { // Page sizes Rectangle rectangle = reader.getPageSize(i); // Compute the scale of the image float scale = Math.min(100, (rectangle.getWidth() / imageWidth * 100)); image.scalePercent(Math.min(scale, (rectangle.getHeight() / imageHeigth * 100))); // Setting the image position for the current page image.setAbsolutePosition(computeImageCenterPosition(rectangle.getWidth(), image.getScaledWidth()), computeImageCenterPosition(rectangle.getHeight(), image.getScaledHeight())); // Adding image PdfContentByte imageContainer = isBackground ? stamper.getUnderContent(i) : stamper.getOverContent(i); imageContainer.addImage(image); } // End of the treatment : closing the stamper stamper.close(); } catch (Exception e) { SilverLogger.getLogger(PdfUtil.class).error(e); throw new SilverpeasRuntimeException( "A problem has occurred during the adding of an image into a pdf file", e); } finally { if (reader != null) { reader.close(); } } }
From source file:org.silverpeas.util.PdfUtil.java
License:Open Source License
/** * Add a image under or over content on each page of a PDF file. * @param pdfSource the source pdf file, this content is not modified by this method * @param imageToAdd the image file//from w ww . j a va 2 s . c o m * @param pdfDestination the destination pdf file, with the image under or over content * @param isBackground indicates if image is addes under or over the content of the pdf source * file */ private static void addImageOnEachPage(InputStream pdfSource, File imageToAdd, OutputStream pdfDestination, final boolean isBackground) { // Verify given arguments if (imageToAdd == null || !imageToAdd.isFile()) { throw new RuntimeException("The image file doesn't exist"); } else if (!FileUtil.isImage(imageToAdd.getPath())) { throw new RuntimeException("The picture to add is not an image file"); } PdfReader reader = null; try { // Get a reader of PDF content reader = new PdfReader(pdfSource); // Obtain the total number of pages int pdfNbPages = reader.getNumberOfPages(); PdfStamper stamper = new PdfStamper(reader, pdfDestination); // Load the image Image image = Image.getInstance(imageToAdd.getPath()); float imageWidth = image.getWidth(); float imageHeigth = image.getHeight(); // Adding the image on each page of the PDF for (int i = 1; i <= pdfNbPages; i++) { // Page sizes Rectangle rectangle = reader.getPageSize(i); // Compute the scale of the image float scale = Math.min(100, (rectangle.getWidth() / imageWidth * 100)); image.scalePercent(Math.min(scale, (rectangle.getHeight() / imageHeigth * 100))); // Setting the image position for the current page image.setAbsolutePosition(computeImageCenterPosition(rectangle.getWidth(), image.getScaledWidth()), computeImageCenterPosition(rectangle.getHeight(), image.getScaledHeight())); // Adding image PdfContentByte imageContainer = isBackground ? stamper.getUnderContent(i) : stamper.getOverContent(i); imageContainer.addImage(image); } // End of the treatment : closing the stamper stamper.close(); } catch (Exception e) { SilverTrace.error("util", "PdfUtil.stamp", "EX_ERROR_PDF_ADD_WATERWARK", e); throw new RuntimeException("A problem has occured during the adding of an image into a pdf file", e); } finally { if (reader != null) { reader.close(); } } }
From source file:org.squale.welcom.outils.pdf.advanced.WPdfDecoration.java
License:Open Source License
/** * Met a la decoration du document;/*from w w w . ja va2 s. co m*/ * * @param pdfReader le reader * @param out l'outputstream * @throws DocumentException exception pouvant etre levee * @throws IOException exception pouvant etre levee */ public void fill(final PdfReader pdfReader, final OutputStream out) throws DocumentException, IOException { final int n = pdfReader.getNumberOfPages(); final PdfStamper stamp = new PdfStamper(pdfReader, out); for (int i = 1; i <= n; i++) { if (i >= startDecorationPage) { // PdfImportedPage page = stamp.getImportedPage (pdfReader, i); final PdfContentByte over = stamp.getOverContent(i); final Rectangle pageSize = pdfReader.getPageSizeWithRotation(i); if (header != null) { header.fill(over, pageSize, i, n); } if (footer != null) { footer.fill(over, pageSize, i, n); } } } stamp.close(); }
From source file:org.squale.welcom.outils.pdf.advanced.WPdfFieldWriter.java
License:Open Source License
/** * Remplissage du tempate/* ww w . j a va 2 s.co m*/ * * @throws IOException exception pouvant etre levee * @throws DocumentException exception pouvant etre levee */ public void fill() throws IOException, DocumentException { pdfStamper = new PdfStamper(pdfReader, out); final Enumeration enumeration = pdfFields.elements(); while (enumeration.hasMoreElements()) { final WPdfField pdfField = (WPdfField) enumeration.nextElement(); fillField(pdfField, true); } }
From source file:org.squale.welcom.outils.pdf.advanced.WPdfMerge.java
License:Open Source License
/** * Renomme tous le champs du pdf avoir qu'il soit tous uniques * /*from w w w.j a va 2 s.c o m*/ * @param pdfReader le reader * @return les champs renommes * @throws DocumentException exception pouvant etre levee * @throws IOException exception pouvant etre levee */ private byte[] renameFieldUnique(final PdfReader pdfReader) throws DocumentException, IOException { final ByteArrayOutputStream pOut = new ByteArrayOutputStream(); final PdfStamper pdfStamper = new PdfStamper(pdfReader, pOut); if (pdfReader.getAcroForm() != null) { for (int i = 0; i < pdfReader.getAcroForm().size(); i++) { final PRAcroForm.FieldInformation p = (PRAcroForm.FieldInformation) pdfReader.getAcroForm() .getFields().get(i); final String newName = WPdfMerge.getUniqueFieldName(); pdfStamper.getAcroFields().renameField(p.getName(), newName); } } pdfStamper.close(); return pOut.toByteArray(); }
From source file:org.squale.welcom.outils.pdf.WPdfUtil.java
License:Open Source License
/** * Ajoute dans les parametres du report les paramtres pour l'ouverture en plein ecran Utilise itext.jar * //w ww . j a v a2 s . com * @param report : report * @param out : flux pour ecrire * @throws DocumentException : Probleme a la lecture du document * @throws IOException : Probleme a l'ecriture dans la stream */ public static void fullScreen(final byte report[], final OutputStream out) throws DocumentException, IOException { final PdfStamper stamper = new PdfStamper(new PdfReader(report), out); stamper.setViewerPreferences(PdfWriter.PageLayoutTwoColumnRight | PdfWriter.PageModeFullScreen | PdfWriter.NonFullScreenPageModeUseThumbs); stamper.close(); }