List of usage examples for com.itextpdf.text.pdf PdfCopy PdfCopy
public PdfCopy(Document document, OutputStream os) throws DocumentException
From source file:com.wabacus.system.assistant.PdfAssistant.java
License:Open Source License
public ByteArrayOutputStream showReportDataOnPdfWithTpl(ReportRequest rrequest, IComponentConfigBean ccbean) { boolean ispdfprint = rrequest.isPdfPrintAction(); PDFExportBean pdfbean = null;/* w w w .ja v a2 s . c om*/ if (ispdfprint) { pdfbean = ccbean.getPdfPrintBean(); } else if (ccbean.getDataExportsBean() != null) {//PDF?PDF<dataexport/> pdfbean = (PDFExportBean) ccbean.getDataExportsBean().getDataExportBean(Consts.DATAEXPORT_PDF); } if (pdfbean == null || pdfbean.getPdftemplate() == null || pdfbean.getPdftemplate().trim().equals("")) return null; if (pdfbean.getLstIncludeApplicationids() == null || pdfbean.getLstIncludeApplicationids().size() == 0) return null; Map<String, AbsReportType> mReportTypeObjs = new HashMap<String, AbsReportType>(); IComponentType cctypeObj; AbsReportType reportTypeObjTmp; int maxrowcount = 0; for (String appidTmp : pdfbean.getLstIncludeApplicationids()) {//?PDF if (mReportTypeObjs.containsKey(appidTmp)) continue; cctypeObj = rrequest.getComponentTypeObj(appidTmp, null, false); if (cctypeObj == null || !(cctypeObj instanceof AbsReportType)) continue; reportTypeObjTmp = (AbsReportType) cctypeObj; mReportTypeObjs.put(appidTmp, reportTypeObjTmp); if (reportTypeObjTmp.getLstReportData() != null && reportTypeObjTmp.getLstReportData().size() > maxrowcount) { maxrowcount = reportTypeObjTmp.getLstReportData().size(); } } if (mReportTypeObjs.size() == 0 || maxrowcount == 0) return null; try { Document document = new Document(); ByteArrayOutputStream baosResult = new ByteArrayOutputStream(); PdfCopy pdfCopy = new PdfCopy(document, baosResult); document.open(); for (int i = 0; i < maxrowcount; i++) { addPdfPageToDocument(pdfCopy, showReportOneRowDataOnPdf(rrequest, mReportTypeObjs, ccbean, pdfbean, i)); } document.close(); return baosResult; } catch (Exception e) { throw new WabacusRuntimeException("" + ccbean.getPath() + "?pdf", e); } }
From source file:com.wabacus.WabacusFacade.java
License:Open Source License
private static void exportReportDataOnPDF(String pageid, ReportRequest rrequest, WabacusResponse wresponse) { boolean success = true; try {//from w w w .j a v a2 s . c om rrequest.setWResponse(wresponse); wresponse.setRRequest(rrequest); rrequest.init(pageid); if (rrequest.getLstAllReportBeans() == null || rrequest.getLstAllReportBeans().size() == 0) { throw new WabacusRuntimeException("?" + pageid + "?plainexcel???"); } Document document = new Document(); ByteArrayOutputStream baosResult = new ByteArrayOutputStream(); PdfCopy pdfCopy = new PdfCopy(document, baosResult); document.open(); boolean ispdfprint = rrequest.isPdfPrintAction(); for (IComponentConfigBean ccbeanTmp : rrequest.getLstComponentBeans()) {//??PDF? PDFExportBean pdfbeanTmp = null; if (ispdfprint) { pdfbeanTmp = ccbeanTmp.getPdfPrintBean(); } else if (ccbeanTmp.getDataExportsBean() != null) { pdfbeanTmp = (PDFExportBean) ccbeanTmp.getDataExportsBean() .getDataExportBean(Consts.DATAEXPORT_PDF); } if (pdfbeanTmp != null && pdfbeanTmp.getPdftemplate() != null && !pdfbeanTmp.getPdftemplate().trim().equals("")) { PdfAssistant.getInstance().addPdfPageToDocument(pdfCopy, PdfAssistant.getInstance().showReportDataOnPdfWithTpl(rrequest, ccbeanTmp)); } } AbsReportType reportTypeObjTmp; for (ReportBean rbTmp : rrequest.getLstAllReportBeans()) { reportTypeObjTmp = (AbsReportType) rrequest.getComponentTypeObj(rbTmp, null, false); if (rrequest.isReportInPdfTemplate(rbTmp.getId())) continue;//??PDF??? PdfAssistant.getInstance().addPdfPageToDocument(pdfCopy, reportTypeObjTmp.displayOnPdf()); } document.close(); BufferedOutputStream bos = null; if (rrequest.isExportToLocalFile()) { bos = new BufferedOutputStream(new FileOutputStream(new File(rrequest.getDataExportFilepath()))); } else { if (!ispdfprint) { String title = WabacusAssistant.getInstance().encodeAttachFilename(rrequest.getRequest(), rrequest.getDataExportFilename()); wresponse.getResponse().setHeader("Content-disposition", "attachment;filename=" + title + ".pdf"); } wresponse.getResponse().setContentLength(baosResult.size()); bos = new BufferedOutputStream(wresponse.getResponse().getOutputStream()); } baosResult.writeTo(bos); bos.close(); baosResult.close(); if (rrequest.isExportToLocalFile() && rrequest.isDataexport_localstroagezip()) { tarDataFile(rrequest); } } catch (WabacusRuntimeTerminateException wrwe) { if (wresponse.getStatecode() == Consts.STATECODE_FAILED) { success = false; } } catch (Exception wre) { wresponse.setStatecode(Consts.STATECODE_FAILED); log.error("?" + rrequest.getPagebean().getId() + "", wre); success = false; } finally { rrequest.destroy(success); } doPostDataExport(rrequest, wresponse); }
From source file:com.whty.transform.common.utils.TransformUtils.java
public static boolean pdfTopdf(String docpath) { File pdfPath = new File(SysConf.getString("path.output") + docpath + "/pdf/"); if (!pdfPath.exists()) { pdfPath.mkdirs();/*w w w. j a va2 s . c o m*/ } // pdf? try { PdfReader reader = new PdfReader(SysConf.getString("path.input") + docpath); com.itextpdf.text.Document document = new com.itextpdf.text.Document(reader.getPageSize(1)); PdfCopy copy = new PdfCopy(document, new FileOutputStream(pdfPath.getAbsoluteFile() + "/" + transFileName + ".pdf")); document.open(); for (int i = 1; i <= reader.getNumberOfPages(); i++) { document.newPage(); PdfImportedPage page = copy.getImportedPage(reader, i); copy.addPage(page); } document.close(); return true; } catch (IOException e) { LOGGER.error(e.getMessage(), e); } catch (DocumentException e) { LOGGER.error(e.getMessage(), e); } return false; }
From source file:de.mat.utils.pdftools.PdfExtractEmptyPages.java
License:Mozilla Public License
/** * <h4>FeatureDomain:</h4>/*from w w w . j a v a2 s . c om*/ * PublishingTools * <h4>FeatureDescription:</h4> * reads pdfSourceFile and adds pages to pdfRemovedFile if empty, or to * pdfDestinationFile if not empty * <h4>FeatureResult:</h4> * <ul> * <li>updates pdfDestinationFile - add all pages which are not empty * <li>updates pdfRemovedFile - add all empty pages * </ul> * <h4>FeatureKeywords:</h4> * PDF Publishing * @param pdfSourceFile - source pdf-file * @param pdfDestinationFile - pdf with all not empty pages * @param pdfRemovedFile - pdf with all empty pages * @throws Exception */ public static void removeBlankPdfPages(String pdfSourceFile, String pdfDestinationFile, String pdfRemovedFile) throws Exception { // create readerOrig PdfReader readerOrig = new PdfReader(pdfSourceFile); // create writerTrimmed which bases on readerOrig Document documentTrimmed = new Document(readerOrig.getPageSizeWithRotation(1)); PdfCopy writerTrimmed = new PdfCopy(documentTrimmed, new FileOutputStream(pdfDestinationFile)); documentTrimmed.open(); // create writerRemoved which bases on readerOrig Document documentRemoved = new Document(readerOrig.getPageSizeWithRotation(1)); PdfCopy writerRemoved = new PdfCopy(documentRemoved, new FileOutputStream(pdfRemovedFile)); documentRemoved.open(); // extract and copy empty pages addTrimmedPages(pdfSourceFile, readerOrig, writerTrimmed, writerRemoved, true); // close everything documentTrimmed.close(); writerTrimmed.close(); documentRemoved.close(); writerRemoved.close(); readerOrig.close(); }
From source file:de.mat.utils.pdftools.PdfMerge.java
License:Mozilla Public License
/** * <h4>FeatureDomain:</h4>/* w ww . j a v a 2 s . c o m*/ * PublishingTools * <h4>FeatureDescription:</h4> * merge pdfs from lstBookMarks to fileNew and trim empty pages if flgTrim * is set * <h4>FeatureResult:</h4> * <ul> * <li>create PDF - fileNew * <li>updates lstBookMarks - updates PAGE (firstPageNum) and * PAGES (countPage= per Bookmark * </ul> * <h4>FeatureKeywords:</h4> * PDF Publishing * @param lstBookMarks - list of Bookmark (files to merge) * @param fileNew - destination PDF filename * @param flgTrim - trim empty pages * @throws Exception */ public static void mergePdfs(List<Bookmark> lstBookMarks, String fileNew, boolean flgTrim) throws Exception { // FirstFile Map curBookMark = (Map) lstBookMarks.get(0); String curFileName = (String) curBookMark.get("SRC"); // Neues Dokument anlegen aus 1. Quelldokument anlegen PdfReader reader = new PdfReader(curFileName); Document documentNew = new Document(reader.getPageSizeWithRotation(1)); reader.close(); PdfCopy writerNew = new PdfCopy(documentNew, new FileOutputStream(fileNew)); documentNew.open(); int siteNr = 1; for (Iterator iter = lstBookMarks.iterator(); iter.hasNext();) { curBookMark = (Map) iter.next(); curFileName = (String) curBookMark.get("SRC"); if (LOGGER.isInfoEnabled()) LOGGER.info("add File:" + curFileName); // copy Page reader = new PdfReader(curFileName); int newPages = PdfExtractEmptyPages.addTrimmedPages(curFileName, reader, writerNew, (PdfCopy) null, flgTrim); reader.close(); // update BookMark curBookMark.put("PAGE", new Integer(siteNr)); curBookMark.put("PAGES", new Integer(newPages)); siteNr += newPages; } documentNew.close(); writerNew.close(); }
From source file:de.mat.utils.pdftools.PdfSort4Print.java
License:Mozilla Public License
public static void sortPdfPages(String pdfSourceFile, String pdfDestinationFile, int perPage) throws Exception { PdfImportedPage page = null;/*from w ww . j a v a 2s . c o m*/ if (perPage != 2 && perPage != 4) { throw new IllegalArgumentException( "Sorry, perPage must only be " + "2 or 4. All other is not implemented yet :-("); } // ####### // # fill to odd pagecount // ####### // create reader PdfReader readerOrig = new PdfReader(pdfSourceFile); // calc data int countPage = readerOrig.getNumberOfPages(); int blaetter = new Double(Math.ceil((countPage + 0.0) / perPage / 2)).intValue(); int zielPages = (blaetter * perPage * 2) - countPage; if (LOGGER.isInfoEnabled()) LOGGER.info("CurPages: " + countPage + " Blaetter:" + blaetter + " AddPage:" + zielPages); // add sites String oddFile = pdfDestinationFile + ".filled.pdf"; PdfStamper stamper = new PdfStamper(readerOrig, new FileOutputStream(oddFile)); // add empty pages for (int i = 1; i <= zielPages; i++) { if (LOGGER.isDebugEnabled()) LOGGER.debug("addEmptyPage: " + i); stamper.insertPage(readerOrig.getNumberOfPages() + 1, readerOrig.getPageSizeWithRotation(1)); } stamper.close(); readerOrig.close(); // ######## // # read new odd document and sort pages // ######## // step 1: create new reader PdfReader readerOdd = new PdfReader(oddFile); // create writerSorted String sortedFile = pdfDestinationFile; Document documentSorted = new Document(readerOrig.getPageSizeWithRotation(1)); PdfCopy writerSorted = new PdfCopy(documentSorted, new FileOutputStream(sortedFile)); documentSorted.open(); // add pages in calced order List<Integer> lstPageNr = new ArrayList<Integer>(); int pageCount = readerOdd.getNumberOfPages(); int startseite = 1; for (int i = 1; i <= blaetter; i++) { if (perPage == 2) { startseite = ((i - 1) * perPage) + 1; if (LOGGER.isDebugEnabled()) LOGGER.debug("Blatt:" + i + " Startseite: " + startseite); // front top lstPageNr.add(new Integer(pageCount - startseite + 1)); // front bottom lstPageNr.add(new Integer(startseite)); // back top lstPageNr.add(new Integer(startseite + 1)); // back bottom lstPageNr.add(new Integer(pageCount - startseite + 1 - 1)); } else if (perPage == 4) { startseite = ((i - 1) * perPage) + 1; if (LOGGER.isDebugEnabled()) LOGGER.debug("Blatt:" + i + " Startseite: " + startseite); // front top left lstPageNr.add(new Integer(pageCount - startseite + 1)); // front top right lstPageNr.add(new Integer(startseite)); // front bottom lefts lstPageNr.add(new Integer(pageCount - startseite + 1 - 2)); // front bottom right lstPageNr.add(new Integer(startseite + 2)); // back top left lstPageNr.add(new Integer(startseite + 1)); // back top right lstPageNr.add(new Integer(pageCount - startseite + 1 - 1)); // back bottom left lstPageNr.add(new Integer(startseite + 1 + 2)); // back bottom right lstPageNr.add(new Integer(pageCount - startseite + 1 - 1 - 2)); } else { throw new IllegalArgumentException( "Sorry, perPage must " + "only be 2 or 4. All other is not implemented yet :-("); } } if (LOGGER.isInfoEnabled()) LOGGER.info("Seiten:" + lstPageNr.size()); // copy pages for (Iterator iter = lstPageNr.iterator(); iter.hasNext();) { int pageNum = ((Integer) iter.next()).intValue(); if (LOGGER.isDebugEnabled()) LOGGER.debug("addSortPage: " + pageNum); page = writerSorted.getImportedPage(readerOdd, pageNum); writerSorted.addPage(page); } // close everything documentSorted.close(); writerSorted.close(); readerOdd.close(); // delete Tmp-File File file = new File(oddFile); file.delete(); }
From source file:edu.clemson.lph.civet.CVIFileController.java
License:Open Source License
/** * From the current pdfDecoder, extract the page(s) in aPagesInCurrent to a new pdfData buffer as output stream. * @param aPages int[]//from w ww .j a v a2s.c om * @return byte[] */ public byte[] extractPagesToNewPDF() { ByteArrayOutputStream baOut = new ByteArrayOutputStream(); try { byte[] pdfDataIn = rawPdfBytes; PdfReader reader = new PdfReader(pdfDataIn); com.itextpdf.text.Document document = new com.itextpdf.text.Document(); PdfCopy writer = new PdfCopy(document, baOut); document.open(); for (Integer iPage : aPagesInCurrent) { PdfImportedPage pip = writer.getImportedPage(reader, iPage.intValue()); writer.addPage(pip); } document.close(); } catch (IOException ioe) { logger.info("IO error extracting pages to byte array", ioe); return rawPdfBytes; } catch (DocumentException de) { logger.info(de.getMessage() + "\nDocument error extracting pages to byte array"); return rawPdfBytes; } return baOut.toByteArray(); }
From source file:edu.clemson.lph.pdfgen.MergePDF.java
License:Open Source License
public static void concatPDFs(List<InputStream> pdfInputStreams, OutputStream outputStream, boolean paginate) { Document document = new Document(); try {/* www .j av a 2 s. c o m*/ PdfCopy cp = new PdfCopy(document, outputStream); document.open(); Iterator<InputStream> iteratorPDFReader = pdfInputStreams.iterator(); // Loop through the PDF streams and add to the output. while (iteratorPDFReader.hasNext()) { InputStream is = iteratorPDFReader.next(); PdfReader pdfReader = new PdfReader(is); int n = pdfReader.getNumberOfPages(); for (int pageNo = 0; pageNo < n;) { pdfReader.getPageN(pageNo); cp.addPage(cp.getImportedPage(pdfReader, ++pageNo)); } } document.close(); outputStream.flush(); outputStream.close(); } catch (Exception e) { logger.error(e); } }
From source file:edu.clemson.lph.pdfgen.PDFUtils.java
License:Open Source License
/** * Given an array of bytes from a PDF determine whether at least the first page can be extracted * by iText;//from w ww . j av a2 s.c om * @param byte[] data to test parse * @return byte[] */ public static boolean canExtractPages(byte[] pdfDataIn) { boolean bRet = false; ByteArrayOutputStream baOut = new ByteArrayOutputStream(); try { PdfReader reader = new PdfReader(pdfDataIn); com.itextpdf.text.Document document = new com.itextpdf.text.Document(); PdfCopy writer = new PdfCopy(document, baOut); document.open(); PdfImportedPage pip = writer.getImportedPage(reader, 1); writer.addPage(pip); document.close(); byte[] pdfDataOut = baOut.toByteArray(); int iLen = pdfDataOut.length; if (iLen > 0) bRet = true; } catch (IOException ioe) { logger.error(ioe.getMessage() + "\nIO error extracting pages to byte array\n"); bRet = false; } catch (DocumentException de) { logger.error(de.getMessage() + "\nDocument error extracting pages to byte array"); bRet = false; } return bRet; }
From source file:eu.mrbussy.pdfsplitter.Application.java
License:Open Source License
/** * Split the given PDF file into multiple files using pages. * //www.j av a 2 s . co m * @param filename * - Name of the PDF to split * @param useSubFolder * - Use a separate folder to place the files in. */ public static void SplitFile(File file, boolean useSubFolder) { PdfReader reader = null; String format = null; if (useSubFolder) format = "%1$s%2$s%4$s%2$s_%%03d.%3$s"; else format = "%1$s%2$s_%%03d.%3$s"; String splitFile = String.format(format, FilenameUtils.getFullPath(file.getAbsolutePath()), FilenameUtils.getBaseName(file.getAbsolutePath()), FilenameUtils.getExtension(file.getAbsolutePath()), IOUtils.DIR_SEPARATOR); try { reader = new PdfReader(new FileInputStream(file)); if (reader.getNumberOfPages() > 0) { for (int pageNum = 1; pageNum <= reader.getNumberOfPages(); pageNum++) { System.out.println(String.format(splitFile, pageNum)); String filename = String.format(splitFile, pageNum); Document document = new Document(reader.getPageSizeWithRotation(1)); PdfCopy writer = new PdfCopy(document, new FileOutputStream(filename)); document.open(); // Copy the page from the original PdfImportedPage page = writer.getImportedPage(reader, pageNum); writer.addPage(page); document.close(); writer.close(); } } } catch (Exception ex) { // TODO Implement exception handling ex.printStackTrace(System.err); } finally { if (reader != null) // Always close the stream reader.close(); } }