List of usage examples for org.apache.pdfbox.pdmodel PDDocument getNumberOfPages
public int getNumberOfPages()
From source file:Reports.MgmtNoticesDataReader.java
public void singlePdfGenerator(String pdfFileNameBase, List<String> cycles) throws IOException, COSVisitorException { GlobalVar.dirMake(new File(pdfFileNameBase)); //create a folder with the same name int rowCount = 0; int pageCount = 1; PDDocument pdf = new PDDocument(); PDPage page; //default size PAGE_SIZE_A4 PDPageContentStream stream;/*w ww . jav a 2s .co m*/ //page.setRotation(90); //counterclock wise rotate 90 degree ////left hand rule // stream.setFont(PDType1Font.COURIER, FONT_SIZE); String lastUpdate = null; String lastTrans = null; System.out.println("MGNT_DATA keyset:" + MGNT_DATA.keySet()); // System.out.println("Cycles empty? " + cycles.isEmpty() + cycles.size()); // System.out.println(cycles); String pdfFileName = pdfFileNameBase + "\\MGMT NTC UPDT"; for (String updateDate : MGNT_DATA.keySet()) { Map<String, List<String>> thisDTData = MGNT_DATA.get(updateDate); lastUpdate = updateDate; System.out.println("thisDT_DATA keyset:" + thisDTData.keySet()); pdfFileName = pdfFileName + " " + updateDate; for (String trans : thisDTData.keySet()) { if (cycles.isEmpty() || cycles.contains(trans)) { //PDDocument pdf = new PDDocument(); lastTrans = trans; List<String> thisCycle = thisDTData.get(trans); pageCount = 1; // new cycle, restart page num page = new PDPage(); //page break stream = new PDPageContentStream(pdf, page, true, false); stream.beginText(); page.setRotation(PAGE_ROT_DEGREE); //stream.setFont(PDType1Font.COURIER, FONT_SIZE); addBigFontUpdateNumberAndCycle(updateDate, trans, stream); stream.setFont(PDType1Font.COURIER, FONT_SIZE); // stream.setFont(PDType1Font. int thisCycleRowCount = 0; for (String row : thisCycle) { if (thisCycleRowCount > MAX_NUM_TRANS) { //close the current page setupFootNote(stream, pageCount, trans, updateDate); pageCount++; stream.endText(); stream.close(); pdf.addPage(page); // start a new page page = new PDPage(); stream = new PDPageContentStream(pdf, page, true, false); page.setRotation(PAGE_ROT_DEGREE); stream.beginText(); stream.setFont(PDType1Font.COURIER, FONT_SIZE); thisCycleRowCount = 0; } stream.setTextRotation(TEXT_ROT_RAD, TRANS_X + thisCycleRowCount * INVERVAL_X, TRANS_Y); stream.drawString(row); thisCycleRowCount++; } setupFootNote(stream, pageCount, lastTrans, lastUpdate); stream.endText(); stream.close(); pdf.addPage(page); } } } if (pdf.getNumberOfPages() > 0) { pdfFileName = pdfFileName + ".pdf"; pdf.save(pdfFileName); } pdf.close(); }
From source file:richtercloud.document.scanner.it.ImageStorageIT.java
License:Open Source License
@Test public void testImageStorage() throws IOException, StorageException, SQLException, InterruptedException, StorageConfValidationException, StorageCreationException, OSNotRecognizedException, ArchitectureNotRecognizedException, ExtractionException, MissingSystemBinary, BuildFailureException, ModuleBuildFailureException, FieldOrderValidationException, ImageWrapperException { LOGGER.info("testImageStorage"); try {/*from w w w.j a v a 2 s. c o m*/ new JFXPanel(); //- necessary in order to avoid //`java.lang.IllegalStateException: Toolkit not initialized` //- should be run here in order to be catchable at a useful //location; figure out how to do this if there's more than this //one test File databaseDir = Files.createTempDirectory(ImageStorageIT.class.getSimpleName()).toFile(); FileUtils.forceDelete(databaseDir); //databaseDir mustn't exist for Apache Derby LOGGER.debug(String.format("database directory is %s", databaseDir.getAbsolutePath())); File schemeChecksumFile = File.createTempFile(ImageStorageIT.class.getSimpleName(), "scheme-checksum"); LOGGER.debug(String.format("scheme checksum file is %s", schemeChecksumFile.getAbsolutePath())); File imageStorageDir = Files.createTempDirectory(ImageStorageIT.class.getSimpleName()).toFile(); LOGGER.debug(String.format("image storage directory is %s", imageStorageDir.getAbsolutePath())); Connection connection = DriverManager .getConnection(String.format("jdbc:derby:%s;create=true", databaseDir.getAbsolutePath())); connection.close(); Set<Class<?>> entityClasses = new HashSet<Class<?>>( Arrays.asList(EntityByteArray.class, EntityImageIcon.class)); // DerbyNetworkPersistenceStorageConf storageConf = new DerbyNetworkPersistenceStorageConf(entityClasses, // "localhost", // schemeChecksumFile); // storageConf.setDatabaseDir(databaseDir); // storageConf.setPassword("sa"); // PersistenceStorage storage = new DerbyNetworkPersistenceStorage(storageConf, // "richtercloud_document-scanner-it_jar_1.0-SNAPSHOTPU"); DerbyEmbeddedPersistenceStorageConf storageConf = new DerbyEmbeddedPersistenceStorageConf(entityClasses, databaseDir.getAbsolutePath(), schemeChecksumFile); String persistenceUnitName = "document-scanner-it"; FieldRetriever fieldRetriever = new JPAOrderedCachedFieldRetriever( Constants.QUERYABLE_AND_EMBEDDABLE_CLASSES); final PersistenceStorage<Long> derbyEmbeddedStorage1 = new DerbyEmbeddedPersistenceStorage(storageConf, persistenceUnitName, 1, //parallelQueryCount fieldRetriever); derbyEmbeddedStorage1.start(); Runtime.getRuntime().addShutdownHook(new Thread(() -> { LOGGER.info("shutting down storage"); derbyEmbeddedStorage1.shutdown(); LOGGER.info("storage shut down"); try { FileUtils.deleteDirectory(databaseDir); LOGGER.info(String.format("database directory '%s' deleted", databaseDir.getAbsolutePath())); } catch (IOException ex) { LOGGER.info(String.format( "deletion of database directory '%s' failed, see nested exception for details", databaseDir.getAbsolutePath()), ex); } try { FileUtils.deleteDirectory(imageStorageDir); } catch (IOException ex) { java.util.logging.Logger.getLogger(ImageStorageIT.class.getName()).log(Level.SEVERE, null, ex); } }, String.format("%s shutdown hook", ImageStorageIT.class.getSimpleName()))); List<ImageIcon> imageIcons = new LinkedList<>(); InputStream pdfInputStream = ImageStorageIT.class.getResourceAsStream("/image_data.pdf"); assert pdfInputStream != null; PDDocument document = PDDocument.load(pdfInputStream); @SuppressWarnings("unchecked") List<OCRSelectPanel> oCRSelectPanels = new LinkedList<>(); List<ImageWrapper> imageWrappers = new LinkedList<>(); byte[] data; ByteArrayOutputStream outputStream = new ByteArrayOutputStream(); ObjectOutputStream objectOutputStream = new ObjectOutputStream(outputStream); PDFRenderer pdfRenderer = new PDFRenderer(document); IssueHandler issueHandler = new LoggerIssueHandler(LOGGER); for (int page = 0; page < document.getNumberOfPages(); page++) { BufferedImage image = pdfRenderer.renderImageWithDPI(page, 300, ImageType.RGB); ImageWrapper imageWrapper = new CachingImageWrapper(databaseDir, image, issueHandler); OCRSelectPanel oCRSelectPanel = new DefaultOCRSelectPanel(imageWrapper, DocumentScannerConf.PREFERRED_SCAN_RESULT_PANEL_WIDTH_DEFAULT, issueHandler); oCRSelectPanels.add(oCRSelectPanel); ImageIcon imageIcon = new ImageIcon(image); objectOutputStream.writeObject(imageIcon); imageIcons.add(imageIcon); imageWrappers.add(new CachingImageWrapper(imageStorageDir, image, issueHandler)); } document.close(); data = outputStream.toByteArray(); EntityByteArray entityA = new EntityByteArray(1L, data); EntityByteArray entityA2 = new EntityByteArray(3L, data); EntityImageIcon entityB = new EntityImageIcon(2L, imageIcons); EntityImageIcon entityB2 = new EntityImageIcon(4L, imageIcons); EntityImageWrapper entityC1 = new EntityImageWrapper(imageWrappers); EntityImageWrapper entityC2 = new EntityImageWrapper(imageWrappers); long time0 = System.currentTimeMillis(); entityA.setId(MemorySequentialIdGenerator.getInstance().getNextId(entityA)); derbyEmbeddedStorage1.store(entityA); long time1 = System.currentTimeMillis(); LOGGER.info(String.format("time for storing entityA: %d ms", time1 - time0)); entityB.setId(MemorySequentialIdGenerator.getInstance().getNextId(entityB)); derbyEmbeddedStorage1.store(entityB); long time2 = System.currentTimeMillis(); LOGGER.info(String.format("time for storing entityB: %d ms", time2 - time1)); //store another time in order to figure out caching effects entityA2.setId(MemorySequentialIdGenerator.getInstance().getNextId(entityA2)); derbyEmbeddedStorage1.store(entityA2); long time3 = System.currentTimeMillis(); LOGGER.info(String.format("time for storing entityA2: %d ms", time3 - time2)); entityB2.setId(MemorySequentialIdGenerator.getInstance().getNextId(entityB2)); derbyEmbeddedStorage1.store(entityB2); long time4 = System.currentTimeMillis(); LOGGER.info(String.format("time for storing entityB2: %d ms", time4 - time3)); entityC1.setId(MemorySequentialIdGenerator.getInstance().getNextId(entityC1)); derbyEmbeddedStorage1.store(entityC1); long time5 = System.currentTimeMillis(); LOGGER.info(String.format("time for storing entityC1: %d ms", time5 - time4)); entityC2.setId(MemorySequentialIdGenerator.getInstance().getNextId(entityC2)); derbyEmbeddedStorage1.store(entityC2); long time6 = System.currentTimeMillis(); LOGGER.info(String.format("time for storing entityC2: %d ms", time6 - time5)); LOGGER.info(String.format("size of entityA's data: %d KiB", entityA.getData().length / 1024)); long randomSeed = System.currentTimeMillis(); LOGGER.info(String.format("random seed is: %d", randomSeed)); Random random = new Random(randomSeed); byte[] referenceBytes = new byte[data.length]; random.nextBytes(referenceBytes); EntityByteArray entityA3 = new EntityByteArray(5L, referenceBytes); EntityByteArray entityA4 = new EntityByteArray(6L, referenceBytes); long time7 = System.currentTimeMillis(); entityA3.setId(MemorySequentialIdGenerator.getInstance().getNextId(entityA3)); derbyEmbeddedStorage1.store(entityA3); long time8 = System.currentTimeMillis(); LOGGER.info(String.format("time for storing entityA3: %d ms", time8 - time7)); entityA4.setId(MemorySequentialIdGenerator.getInstance().getNextId(entityA4)); derbyEmbeddedStorage1.store(entityA4); long time9 = System.currentTimeMillis(); LOGGER.info(String.format("time for storing entityA4: %d ms", time9 - time8)); derbyEmbeddedStorage1.shutdown(); //test whether EntityImagerWrapper is deserializable PersistenceStorage<Long> derbyEmbeddedStorage2 = new DerbyEmbeddedPersistenceStorage(storageConf, persistenceUnitName, 1, //parallelQueryCount fieldRetriever); derbyEmbeddedStorage2.start(); List<EntityImageWrapper> queryResults = derbyEmbeddedStorage2.runQueryAll(EntityImageWrapper.class); assert queryResults.size() == 2; EntityImageWrapper queryResult0 = queryResults.get(0); List<ImageWrapper> queryResult0Data = queryResult0.getData(); for (ImageWrapper queryResult0Datum : queryResult0Data) { LOGGER.info(String.format("inspect image wrapper file %s ms", queryResult0Datum.getStorageFile())); } derbyEmbeddedStorage2.shutdown(); //test PostgreSQL File databaseDirPostgresql = Files.createTempDirectory(ImageStorageIT.class.getSimpleName()).toFile(); FileUtils.forceDelete(databaseDirPostgresql); //an inexisting database directory triggers creation of database //with initdb LOGGER.debug( String.format("PostgreSQL database directory is %s", databaseDirPostgresql.getAbsolutePath())); //build PostgreSQL File postgresqlInstallationPrefixDir = Files.createTempDirectory(ImageStorageIT.class.getSimpleName()) .toFile(); LOGGER.debug(String.format("using '%s' as PostgreSQL installation prefix", postgresqlInstallationPrefixDir.getAbsolutePath())); File downloadDir = Files.createTempDirectory(ImageStorageIT.class.getSimpleName()).toFile(); //SystemUtils.getUserHome() causes trouble //($HOME/jhbuild/checkout might be jhbuilds default extraction //directory) LOGGER.debug(String.format("using '%s' as JHBuild Java wrapper download directory", downloadDir)); JHBuildJavaWrapper jHBuildJavaWrapper = new JHBuildJavaWrapper(postgresqlInstallationPrefixDir, //installationPrefixDir downloadDir, //downloadDir ActionOnMissingBinary.DOWNLOAD, ActionOnMissingBinary.DOWNLOAD, new AutoDownloader(), //downloader false, true, //silenceStdout true, //silenceStderr issueHandler); String moduleName = "postgresql-9.6.3"; LOGGER.info( String.format("building module %s from JHBuild Java wrapper's default moduleset", moduleName)); jHBuildJavaWrapper.installModuleset(moduleName); //moduleset shipped with jhbuild-java-wrapper String initdb = new File(postgresqlInstallationPrefixDir, String.join(File.separator, "bin", "initdb")) .getAbsolutePath(); String postgres = new File(postgresqlInstallationPrefixDir, String.join(File.separator, "bin", "postgres")).getAbsolutePath(); String createdb = new File(postgresqlInstallationPrefixDir, String.join(File.separator, "bin", "createdb")).getAbsolutePath(); String pgCtl = new File(postgresqlInstallationPrefixDir, String.join(File.separator, "bin", "pg_ctl")) .getAbsolutePath(); String databaseName = "image-storage-it"; String username = "docu"; String password = "docu"; PostgresqlAutoPersistenceStorageConf postgresqlPersistenceStorageConf = new PostgresqlAutoPersistenceStorageConf( entityClasses, "localhost", //hostname username, //username password, databaseName, schemeChecksumFile, databaseDirPostgresql.getAbsolutePath(), //databaseDir initdb, postgres, createdb, pgCtl); PersistenceStorage<Long> postgresqlStorage = new PostgresqlAutoPersistenceStorage( postgresqlPersistenceStorageConf, persistenceUnitName, 1, //parallelQueryCount fieldRetriever, issueHandler); postgresqlStorage.start(); time0 = System.currentTimeMillis(); postgresqlStorage.store(entityA); time1 = System.currentTimeMillis(); LOGGER.info(String.format("time for storing entityA: %d ms", time1 - time0)); postgresqlStorage.store(entityB); time2 = System.currentTimeMillis(); LOGGER.info(String.format("time for storing entityB: %d ms", time2 - time1)); //store another time in order to figure out caching effects postgresqlStorage.store(entityA2); time3 = System.currentTimeMillis(); LOGGER.info(String.format("time for storing entityA2: %d ms", time3 - time2)); postgresqlStorage.store(entityB2); time4 = System.currentTimeMillis(); LOGGER.info(String.format("time for storing entityB2: %d ms", time4 - time3)); LOGGER.info(String.format("size of entityA's data: %d KiB", entityA.getData().length / 1024)); time9 = System.currentTimeMillis(); postgresqlStorage.store(entityA3); time8 = System.currentTimeMillis(); LOGGER.info(String.format("time for storing entityA3: %d ms", time8 - time9)); postgresqlStorage.store(entityA4); time9 = System.currentTimeMillis(); LOGGER.info(String.format("time for storing entityA4: %d ms", time9 - time8)); postgresqlStorage.shutdown(); Caching.getCachingProvider().close(); } catch (UnsupportedOperationException ex) { //`new JFXPanel()` for JavaFX toolkit initialization causes //`java.lang.UnsupportedOperationException: Unable to open DISPLAY` //instead of HeadlessException (which is a subclass of //UnsupportedOperationException LOGGER.warn( "UnsupportedOperationException indicates that the test is run on a headless machine, e.g. a CI service", ex); } }
From source file:ru.ksu.niimm.cll.mocassin.crawl.parser.pdf.PdflatexWrapperTest.java
License:Open Source License
private static void checkIfPDFGenerated(String collectionId, int expectedNumberOfPages) throws FileNotFoundException, IOException { File pdfFile = new File("/opt/mocassin/aux-pdf/" + StringUtil.arxivid2filename(collectionId, "pdf")); Assert.assertTrue(String.format("The PDF file='%s' hasn't been generated.", pdfFile.getName()), pdfFile.exists());/* w w w .j a v a 2 s.com*/ PDDocument pdfDoc = PDDocument.load(new FileInputStream(pdfFile)); try { Assert.assertEquals("Number of pages in the generated document does not equal to the expected one", expectedNumberOfPages, pdfDoc.getNumberOfPages()); } finally { pdfDoc.close(); } }
From source file:serock.pdfpagerestorer.PdfPageRestorer.java
License:Open Source License
private static void removePages(final PDDocument pdDoc) { final int numberOfPages = pdDoc.getNumberOfPages(); for (int i = numberOfPages - 1; i >= 0; i--) { pdDoc.removePage(i);/*w w w. j a v a 2s . c o m*/ } }
From source file:src.controller.DocumentController.java
/** * Supprime la page spcifie d'un document * @param document/*from w ww.ja v a2 s . c om*/ * @param id */ public void removePage(PDDocument document, int id) { if (document.getNumberOfPages() > 1) { document.removePage(id); } else { System.out.println(TRANSLATOR.getString("PAGE_DELETE_FAIL")); } }
From source file:src.view.controller.MainController.java
public void testAddImage() { try {//www .java2 s . c om ImageController imageController = new ImageController(); // Chargement du document File file = new File(TEST_DOC_TITLE + ".pdf"); PDDocument document = PDDocument.load(file); document.addPage(new PDPage()); PDPageContentStream contentStream = new PDPageContentStream(document, document.getPage(document.getNumberOfPages() - 1), PDPageContentStream.AppendMode.APPEND, true); // Ajout d'une image sur la deuxime page imageController.addImage(document, contentStream, TEST_IMG_NAME, 100, 400, 0.2f); contentStream.close(); document.save(TEST_DOC_TITLE + ".pdf"); document.close(); System.out.println(TRANSLATOR.getString("TEST_IMAGE_ADDED")); } catch (IOException e) { System.out.println(e.toString()); } }
From source file:src.view.controller.MainController.java
public void testAddTable() { try {//ww w . j a v a2 s.c o m TableController tableController = new TableController(); // Chargement du document File file = new File(TEST_DOC_TITLE + ".pdf"); PDDocument document = PDDocument.load(file); document.addPage(new PDPage()); PDPageContentStream contentStream = new PDPageContentStream(document, document.getPage(document.getNumberOfPages() - 1), PDPageContentStream.AppendMode.APPEND, true); // Instanciation d'un tableau Table table = new Table(100, 600, 200, 200); // Gnration du tableau table.generateTable(2, 7); table.addColumns(2); // Rcupration d'une cellule Cell cell = table.getCell(0); // Initialisation du contenu cell.setContent("TEST"); // Affichage du contenu dans la cellule tableController.printCellContent(contentStream, cell, "center", "middle"); // Ajout d'un tableau tableController.printTable(contentStream, table, false); contentStream.close(); document.save(TEST_DOC_TITLE + ".pdf"); System.out.println(TRANSLATOR.getString("TEST_TABLE_ADDED")); } catch (IOException e) { System.out.println(e.toString()); } }
From source file:summarizer.pdfReader.java
List<String> parsePdf(String filePath, int startPage, int endPage, boolean newLine) { PDDocument pd; BufferedWriter wr;/*from w ww.j av a2s . c om*/ List<String> outputStrings = new ArrayList<String>(); try { File input = new File(filePath); // The PDF file from where you would like to extract File output = new File("SampleText.txt"); // The text file where you are going to store the extracted data pd = PDDocument.load(input); System.out.println(pd.getNumberOfPages()); if (pd.isEncrypted()) { System.out.println("Error PDF is encrypted, cannot Parse"); } PDFTextStripper stripper = new PDFTextStripper(); stripper.setStartPage(startPage); //Start extracting from page 14 stripper.setEndPage(endPage); //Extract till page 16 wr = new BufferedWriter(new OutputStreamWriter(new FileOutputStream(output))); stripper.writeText(pd, wr); if (pd != null) { pd.close(); } wr.close(); BufferedReader in = new BufferedReader(new FileReader("SampleText.txt")); String s; StringBuilder sb = new StringBuilder(); while ((s = in.readLine()) != null) { sb.append(" "); sb.append(s); } s = sb.toString(); String[] tokenizedStrings; if (newLine) { tokenizedStrings = s.split("\\r?\\n"); } else { tokenizedStrings = s.split("\\."); } for (String x : tokenizedStrings) { if (x.compareTo("") != 0) outputStrings.add(x); } //System.out.println(s); } catch (Exception e) { e.printStackTrace(); } return outputStrings; }
From source file:Tools.PostProcessing.java
private String generateProcessedAndRejectPDFs(String preProcPdfFileName) throws IOException, COSVisitorException { PDDocument pdf = PDDocument.load(preProcPdfFileName); PDDocument rejectPdf = new PDDocument(); PDDocument cedmsPdf = new PDDocument(); //String rejectPdfFileName = preProcPdfFileName.replace(".pdf", "_forReject.pdf"); //String cedmsPdfFileName = preProcPdfFileName.replace(".pdf", "_forCEDMS.pdf"); int pageNum = pdf.getNumberOfPages(); //total number of pages in the pdf file // add reject page into rejectPdf PDFTextStripper pdfStripper = new PDFTextStripper(); int seqNumber = 1; boolean isLastReject = true; // last page status for (int i = 0; i < pageNum; i++) { PDPage page = (PDPage) pdf.getDocumentCatalog().getAllPages().get(i); int pageIndex = i + 1; pdfStripper.setStartPage(pageIndex); pdfStripper.setEndPage(pageIndex); String res = pdfStripper.getText(pdf); // System.out.println(res); if (res.contains(GlobalVar.PRE_PROC_KEY_SYMBOL)) { String[] data = GlobalVar.getCtrlNumAndfullSSN(res); String ctrlNum = data[0]; String fullSSN = data[1]; // System.out.println("full ssn:" + fullSSN + ". ctrl num:" + ctrlNum); // if(LEGIT_LV_MAP_FOR_COLOR_LV_LOG.containsKey(fullSSN)){ // // System.out.println("ctrl num: " + LEGIT_LV_MAP.get(fullSSN)); // } if (LEGIT_LV_MAP_FOR_COLOR_LV_LOG.containsKey(fullSSN) && LEGIT_LV_MAP_FOR_COLOR_LV_LOG.get(fullSSN).containsKey(ctrlNum)) { // System.out.println("Good leave"); int thisSeqNumber = Integer.parseInt(LEGIT_LV_MAP_FOR_COLOR_LV_LOG.get(fullSSN).get(ctrlNum)); if (thisSeqNumber == seqNumber) { cedmsPdf.addPage(page); //LEGIT_LV_MAP_FOR_COLOR_LV_LOG.get(fullSSN).remove(ctrlNum); // remove isLastReject = false; seqNumber++;/* w w w . j av a2 s . co m*/ } else { String msg = "Order might be incorrect or there is a duplicate! ssn: " + fullSSN + " ctrl num: " + ctrlNum + ". Seq number is: " + seqNumber; //JOptionPane.showMessageDialog(null, msg); System.out.println(msg); } } else { rejectPdf.addPage(page); drawComments(rejectPdf, page, fullSSN, ctrlNum); isLastReject = true; } } else { // add the supporting documents to the last pdf file if (isLastReject) { rejectPdf.addPage(page); } else { cedmsPdf.addPage(page); } } } String cedmsPdfFileName = null; String rejectPdfFileName = null; if (preProcPdfFileName.contains(".pdf")) { cedmsPdfFileName = preProcPdfFileName.replace(".pdf", GlobalVar.PRE_CEDMS_PDF); rejectPdfFileName = preProcPdfFileName.replace(".pdf", "_forReject.pdf"); } else if (preProcPdfFileName.contains(".PDF")) { cedmsPdfFileName = preProcPdfFileName.replace(".PDF", GlobalVar.PRE_CEDMS_PDF); rejectPdfFileName = preProcPdfFileName.replace(".PDF", "_forReject.pdf"); } else { JOptionPane.showMessageDialog(null, "Invalid pre-processing file."); } // preProcPdfFileName.replace(".pdf", "_forReject.pdf"); // if (preProcPdfFileName.contains(".pdf")){ // cedmsPdfFileName = preProcPdfFileName.replace(".pdf", GlobalVar.PRE_CEDMS_PDF); // } else if (preProcPdfFileName.contains(".PDF")) { // cedmsPdfFileName = preProcPdfFileName.replace(".PDF", GlobalVar.PRE_CEDMS_PDF); // } else { // JOptionPane.showMessageDialog(null, "Invalid pre-processing file."); // } // if (rejectPdf.getNumberOfPages() > 0 && cedmsPdf.getNumberOfPages() > 0) { cedmsPdf.save(cedmsPdfFileName); rejectPdf.save(rejectPdfFileName); // JOptionPane.showMessageDialog(null, "The ready-for-upload and the rejected " // + "leave forms are saved in *_forCEDMS.pdf and *_forReject.pdf, respectively."); } else if (rejectPdf.getNumberOfPages() > 0) { rejectPdf.save(rejectPdfFileName); cedmsPdfFileName = null; // no cedms file is generated. // JOptionPane.showMessageDialog(null, "The rejected leave forms are saved in *_forReject.pdf."); } else if (cedmsPdf.getNumberOfPages() > 0) { cedmsPdf.save(cedmsPdfFileName); // JOptionPane.showMessageDialog(null, "The ready-for-upload leave forms are saved in *_forCEDMS.pdf."); } rejectPdf.close(); cedmsPdf.close(); pdf.close(); return cedmsPdfFileName; }
From source file:uk.ac.liverpool.thumbnails.PDFService.java
License:Open Source License
public BufferedImage generateThumb(URI u, File f, int w, int h, int pn) throws IOException { PDDocument document = getPages(u, f); List pages = document.getDocumentCatalog().getAllPages(); int pagen = document.getNumberOfPages(); int i = 0;/*w w w . ja v a 2s. c om*/ if (pn < pages.size()) i = pn; PDPage page = (PDPage) pages.get(i); PDRectangle mBox = page.findMediaBox(); float widthPt = mBox.getWidth(); float heightPt = mBox.getHeight(); float sx = widthPt / (float) w; float sy = heightPt / (float) h; BufferedImage bi = page.convertToImage(BufferedImage.TYPE_INT_ARGB, Math.round(72 / Math.max(sx, sy))); return bi; }