List of usage examples for org.apache.pdfbox.pdmodel PDDocument save
public void save(OutputStream output) throws IOException
From source file:org.freeeed.ocr.ImageTextParser.java
License:Apache License
private static String splitPages(String filePath) throws IOException { File file = new File(filePath); String pagePath;//from w ww . ja v a 2s .c o m try (PDDocument document = PDDocument.load(file)) { Splitter splitter = new Splitter(); List<PDDocument> pages = splitter.split(document); Iterator<PDDocument> iterator = pages.listIterator(); int i = 0; pagePath = createTempPath(file); LOGGER.debug("pagePath = " + pagePath); while (iterator.hasNext()) { PDDocument pd = iterator.next(); pd.save(pagePath + i++ + ".pdf"); pd.close(); } } return pagePath; }
From source file:org.ghost4j.document.PDFDocument.java
License:LGPL
public Document extract(int begin, int end) throws DocumentException { this.assertValidPageRange(begin, end); PDFDocument result = new PDFDocument(); ByteArrayInputStream bais = null; ByteArrayOutputStream baos = null; if (content != null) { PDDocument document = new PDDocument(); try {/*from w w w. java 2 s. c o m*/ bais = new ByteArrayInputStream(content); baos = new ByteArrayOutputStream(); PDDocument inputPDF = PDDocument.load(bais); while (begin <= end) { document.addPage((PDPage) inputPDF.getDocumentCatalog().getAllPages().get(begin - 1)); begin++; } document.save(baos); document.close(); result.load(new ByteArrayInputStream(baos.toByteArray())); } catch (Exception e) { throw new DocumentException(e); } finally { IOUtils.closeQuietly(bais); IOUtils.closeQuietly(baos); } } return result; }
From source file:org.ghost4j.document.PDFDocument.java
License:LGPL
@Override public void append(Document document) throws DocumentException { super.append(document); ByteArrayOutputStream baos = null; PDDocument mergedDocument = new PDDocument(); try {//from w ww. jav a 2 s.co m baos = new ByteArrayOutputStream(); ByteArrayInputStream bais = new ByteArrayInputStream(content); PDDocument pDocument = PDDocument.load(bais); int pageCount = pDocument.getNumberOfPages(); for (int i = 0; i < pageCount; i++) { mergedDocument.addPage((PDPage) pDocument.getDocumentCatalog().getAllPages().get(i)); } // copy new document ByteArrayInputStream baisNewDoc = new ByteArrayInputStream(document.getContent()); PDDocument pNewDocument = PDDocument.load(baisNewDoc); pageCount = pNewDocument.getNumberOfPages(); for (int i = 0; i < pageCount; i++) { mergedDocument.addPage((PDPage) pNewDocument.getDocumentCatalog().getAllPages().get(i)); } mergedDocument.save(baos); mergedDocument.close(); // replace content with new content content = baos.toByteArray(); } catch (Exception e) { throw new DocumentException(e); } finally { IOUtils.closeQuietly(baos); } }
From source file:org.kay.ini.ExportPDF.java
public void createPDF(ArrayList<Connection> exportList) { PDFont font = PDType1Font.HELVETICA_BOLD; try {/*from ww w. ja v a 2s .c o m*/ PDDocument document = new PDDocument(); PDPage page = new PDPage(); document.addPage(page); PDPageContentStream content = new PDPageContentStream(document, page, true, true); content.beginText(); content.setFont(font, 12); content.moveTextPositionByAmount(100, 700); for (Connection con : exportList) { content.drawString(con.getKey() + " = " + con.getValue()); content.moveTextPositionByAmount(0, -15); } content.endText(); content.close(); document.save(saveTo); JOptionPane.showMessageDialog(null, "success"); } catch (Exception e) { JOptionPane.showMessageDialog(null, e.getMessage()); } }
From source file:org.kuali.coeus.common.impl.person.signature.PersonSignatureServiceImpl.java
License:Open Source License
/** * This method is to scan for signature tag in each page and apply the signature * at desired location.// w ww. j a v a 2s .c om * @param imageData * @param originalByteArrayOutputStream */ @SuppressWarnings("unchecked") protected ByteArrayOutputStream scanAndApplyAutographInEachPage(byte[] imageData, ByteArrayOutputStream originalByteArrayOutputStream) throws Exception { ByteArrayOutputStream outputStream = originalByteArrayOutputStream; byte[] pdfFileData = originalByteArrayOutputStream.toByteArray(); PDDocument originalDocument = getPdfDocument(pdfFileData); //PDDocument.load(is); PDDocument signatureDocument = new PDDocument(); List<PDPage> originalDocumentPages = originalDocument.getDocumentCatalog().getAllPages(); for (PDPage page : originalDocumentPages) { List<String> signatureTags = new ArrayList<String>(getSignatureTagParameter()); PersonSignatureLocationHelper printer = new PersonSignatureLocationHelper(signatureTags); PDStream contents = page.getContents(); if (contents != null) { printer.processStream(page, page.findResources(), page.getContents().getStream()); } PDPage signaturePage = new PDPage(); if (printer.isSignatureTagExists()) { PDJpeg signatureImage = new PDJpeg(signatureDocument, getBufferedImage(imageData)); PDPageContentStream stream = new PDPageContentStream(signatureDocument, signaturePage, true, true); for (PersonSignaturePrintHelper signatureHelper : printer.getPersonSignatureLocations()) { float coordinateX = signatureHelper.getCoordinateX(); float coordinateY = signatureHelper.getCoordinateY() - signatureImage.getHeight() - ADDITIONAL_SPACE_BETWEEN_TAG_AND_IMAGE; stream.drawImage(signatureImage, coordinateX, coordinateY); stream.close(); } } else { signaturePage = page; } signatureDocument.addPage(signaturePage); } Overlay overlay = new Overlay(); overlay.overlay(signatureDocument, originalDocument); originalDocument.save(outputStream); originalDocument.close(); signatureDocument.close(); return outputStream; }
From source file:org.kuali.coeus.common.impl.person.signature.PersonSignatureServiceImpl.java
License:Open Source License
private ByteArrayOutputStream getOriginalPdfDocumentAsOutputsStream(byte[] pdfFileData) throws Exception { ByteArrayOutputStream outputStream = new ByteArrayOutputStream(); InputStream is = new ByteArrayInputStream(pdfFileData); PDDocument originalDocument = PDDocument.load(is); originalDocument.save(outputStream); originalDocument.close();/*from w w w. j av a2s .co m*/ return outputStream; }
From source file:org.kuali.kra.printing.service.impl.PersonSignatureServiceImpl.java
License:Educational Community License
/** * This method is to remove interactive fields from the form. * @param pdfBytes/*w ww .ja va 2 s . c o m*/ * @return * @throws Exception */ protected ByteArrayOutputStream getFlattenedPdfForm(byte[] pdfBytes) throws Exception { ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream(); InputStream is = new ByteArrayInputStream(pdfBytes); PDDocument pdDoc = PDDocument.load(is); PDDocumentCatalog pdCatalog = pdDoc.getDocumentCatalog(); PDAcroForm acroForm = pdCatalog.getAcroForm(); COSDictionary acroFormDict = acroForm.getDictionary(); COSArray fields = (COSArray) acroFormDict.getDictionaryObject("Fields"); fields.clear(); pdDoc.save(byteArrayOutputStream); return byteArrayOutputStream; }
From source file:org.nuxeo.pdf.PDFMerge.java
License:Open Source License
/** * Merge the PDFs. optionnaly, can set the title, subject and author of the * resulting PDF.//from w w w . j av a 2s . c o m * <p> * <b>Notice</b> for title, author and subject: If the value is null or "", * it is just ignored * * @param inFileName * @param inTitle * @param inSubject * @param inAuthor * @return * @throws IOException * @throws COSVisitorException * * @since 5.9.5 */ public Blob merge(String inFileName, String inTitle, String inSubject, String inAuthor) throws IOException, COSVisitorException { Blob finalBlob = null; switch (blobs.size()) { case 0: finalBlob = null; break; case 1: finalBlob = blobs.get(0); break; default: PDFMergerUtility ut = new PDFMergerUtility(); for (Blob b : blobs) { ut.addSource(b.getStream()); } File tempFile = File.createTempFile("mergepdf", ".pdf"); ut.setDestinationFileName(tempFile.getAbsolutePath()); ut.mergeDocuments(); if (inTitle != null || inAuthor != null || inSubject != null) { PDDocument finalDoc = PDDocument.load(tempFile); PDFUtils.setInfos(finalDoc, inTitle, inSubject, inAuthor); finalDoc.save(tempFile); finalDoc.close(); } finalBlob = new FileBlob(tempFile); Framework.trackFile(tempFile, finalBlob); if (inFileName != null && !inFileName.isEmpty()) { finalBlob.setFilename(inFileName); } else { finalBlob.setFilename(blobs.get(0).getFilename()); } finalBlob.setMimeType("application/pdf"); break; } return finalBlob; }
From source file:org.nuxeo.pdf.PDFPageNumbering.java
License:Open Source License
/** * Add page numbers and returns a <i>new</i> Blob. Original blob is not * modified. This code assumes:/*from ww w .ja va 2 s . c o m*/ * <ul> * <li>There is no page numbers already (it always draw the numbers)</li> * <li>The pdf is not rotated</li> * <li>Default values apply: * <ul> * <li><code>inStartAtPage</code> and <code>inStartAtNumber</code> are set * to 1 if they are passed < 1.</li> * <li>If <code>inStartAtPage</code> is > number of pages it also is reset * to 1</li> * <li><code>inFontName</code> is set to "Helvetica" if "" or null</li> * <li><code>inFontSize</code> is <= 0, it is set to 16</li> * <li><code>inHex255Color</code> is set to black if "", null or if its * length < 6. Expected format is 0xrrggbb, #rrggbb or just rrggbb</li> * <li><code>inPosition</code> is set to <code>BOTTOM_RIGHT</code> if null</li> * </ul> * </li> * <li></li> * </ul> * * @param inBlob * @param inStartAtPage * @param inStartAtNumber * @param inFontName * @param inFontSize * @param inHex255Color * @param inPosition * @return Blob * @throws IOException * @throws COSVisitorException * * @since 5.9.5 */ public Blob addPageNumbers(int inStartAtPage, int inStartAtNumber, String inFontName, float inFontSize, String inHex255Color, PAGE_NUMBER_POSITION inPosition) throws IOException, COSVisitorException { Blob result = null; PDDocument doc = null; inStartAtPage = inStartAtPage < 1 ? 1 : inStartAtPage; int pageNumber = inStartAtNumber < 1 ? 1 : inStartAtNumber; inFontSize = inFontSize <= 0 ? DEFAULT_FONT_SIZE : inFontSize; int[] rgb = PDFUtils.hex255ToRGB(inHex255Color); try { doc = PDDocument.load(blob.getStream()); List<?> allPages; PDFont font; int max; if (inFontName == null || inFontName.isEmpty()) { font = PDType1Font.HELVETICA; } else { font = PDType1Font.getStandardFont(inFontName); if (font == null) { font = new PDType1Font(inFontName); } } allPages = doc.getDocumentCatalog().getAllPages(); max = allPages.size(); inStartAtPage = inStartAtPage > max ? 1 : inStartAtPage; for (int i = inStartAtPage; i <= max; i++) { String pageNumAsStr = "" + pageNumber; pageNumber += 1; PDPage page = (PDPage) allPages.get(i - 1); PDPageContentStream footercontentStream = new PDPageContentStream(doc, page, true, true); float stringWidth = font.getStringWidth(pageNumAsStr) * inFontSize / 1000f; float stringHeight = font.getFontDescriptor().getFontBoundingBox().getHeight() * inFontSize / 1000; PDRectangle pageRect = page.findMediaBox(); float xMoveAmount, yMoveAmount; if (inPosition == null) { inPosition = PAGE_NUMBER_POSITION.BOTTOM_RIGHT; } switch (inPosition) { case BOTTOM_LEFT: xMoveAmount = 10; yMoveAmount = pageRect.getLowerLeftY() + 10; break; case BOTTOM_CENTER: xMoveAmount = (pageRect.getUpperRightX() / 2) - (stringWidth / 2); yMoveAmount = pageRect.getLowerLeftY() + 10; break; case TOP_LEFT: xMoveAmount = 10; yMoveAmount = pageRect.getHeight() - stringHeight - 10; break; case TOP_CENTER: xMoveAmount = (pageRect.getUpperRightX() / 2) - (stringWidth / 2); yMoveAmount = pageRect.getHeight() - stringHeight - 10; break; case TOP_RIGHT: xMoveAmount = pageRect.getUpperRightX() - 10 - stringWidth; yMoveAmount = pageRect.getHeight() - stringHeight - 10; break; // Bottom-right is the default default: xMoveAmount = pageRect.getUpperRightX() - 10 - stringWidth; yMoveAmount = pageRect.getLowerLeftY() + 10; break; } footercontentStream.beginText(); footercontentStream.setFont(font, inFontSize); footercontentStream.moveTextPositionByAmount(xMoveAmount, yMoveAmount); footercontentStream.setNonStrokingColor(rgb[0], rgb[1], rgb[2]); footercontentStream.drawString(pageNumAsStr); footercontentStream.endText(); footercontentStream.close(); } File tempFile = File.createTempFile("pdfutils-", ".pdf"); doc.save(tempFile); result = new FileBlob(tempFile); Framework.trackFile(tempFile, result); } finally { if (doc != null) { doc.close(); } } return result; }
From source file:org.nuxeo.pdf.PDFUtils.java
License:Open Source License
/** * Create a temporary .pdf file and return a FileBlob built from this file. * <p>//from w w w.j a v a 2 s . c o m * Mainly a utility used just by this plug-in actually. * * @param inPdfDoc * @return FileBlob * @throws IOException * @throws COSVisitorException * */ public static FileBlob saveInTempFile(PDDocument inPdfDoc) throws IOException, COSVisitorException { FileBlob result = null; File tempFile = File.createTempFile("nuxeo-pdfutils-", ".pdf"); inPdfDoc.save(tempFile); result = new FileBlob(tempFile); result.setMimeType("application/pdf"); Framework.trackFile(tempFile, result); return result; }