net.sourceforge.tess4j.util.PdfUtilities Maven / Gradle / Ivy
/**
* Copyright @ 2009 Quan Nguyen
*
* Licensed under the Apache License, Version 2.0 (the "License"); you may not
* use this file except in compliance with the License. You may obtain a copy of
* the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
* WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
* License for the specific language governing permissions and limitations under
* the License.
*/
package net.sourceforge.tess4j.util;
import java.io.File;
import java.io.IOException;
/**
* PDF utilities based on Ghostscript or PDFBox with Ghostscript as default. If
* Ghostscript is not available on the system, then PDFBox is used. Call
* System.setProperty(PDF_LIBRARY, PDFBOX);
to set PDFBox as
* default.
*/
public class PdfUtilities {
public static final String PDF_LIBRARY = "pdf.library";
public static final String PDFBOX = "pdfbox";
/**
* Converts PDF to TIFF format.
*
* @param inputPdfFile input file
* @return a multi-page TIFF image
* @throws IOException
*/
public static File convertPdf2Tiff(File inputPdfFile) throws IOException {
if (PDFBOX.equals(System.getProperty(PDF_LIBRARY))) {
return PdfBoxUtilities.convertPdf2Tiff(inputPdfFile);
} else {
try {
return PdfGsUtilities.convertPdf2Tiff(inputPdfFile);
} catch (Exception e) {
System.setProperty(PDF_LIBRARY, PDFBOX);
return convertPdf2Tiff(inputPdfFile);
}
}
}
/**
* Converts PDF to PNG format.
*
* @param inputPdfFile input file
* @return an array of PNG images
* @throws java.io.IOException
*/
public static File[] convertPdf2Png(File inputPdfFile) throws IOException {
if (PDFBOX.equals(System.getProperty(PDF_LIBRARY))) {
return PdfBoxUtilities.convertPdf2Png(inputPdfFile);
} else {
try {
return PdfGsUtilities.convertPdf2Png(inputPdfFile);
} catch (Exception e) {
System.setProperty(PDF_LIBRARY, PDFBOX);
return convertPdf2Png(inputPdfFile);
}
}
}
/**
* Splits PDF.
*
* @deprecated As of Release 3.0.
*
* @param inputPdfFile input file
* @param outputPdfFile output file
* @param firstPage begin page
* @param lastPage end page
*/
public static void splitPdf(String inputPdfFile, String outputPdfFile, String firstPage, String lastPage) {
if (firstPage.trim().isEmpty()) {
firstPage = "0";
}
if (lastPage.trim().isEmpty()) {
lastPage = "0";
}
splitPdf(new File(inputPdfFile), new File(outputPdfFile), Integer.parseInt(firstPage), Integer.parseInt(lastPage));
}
/**
* Splits PDF.
*
* @param inputPdfFile input file
* @param outputPdfFile output file
* @param firstPage begin page
* @param lastPage end page
*/
public static void splitPdf(File inputPdfFile, File outputPdfFile, int firstPage, int lastPage) {
if (PDFBOX.equals(System.getProperty(PDF_LIBRARY))) {
PdfBoxUtilities.splitPdf(inputPdfFile, outputPdfFile, firstPage, lastPage);
} else {
try {
PdfGsUtilities.splitPdf(inputPdfFile, outputPdfFile, firstPage, lastPage);
} catch (Exception e) {
System.setProperty(PDF_LIBRARY, PDFBOX);
splitPdf(inputPdfFile, outputPdfFile, firstPage, lastPage);
}
}
}
/**
* Gets PDF Page Count.
*
* @deprecated As of Release 3.0.
*
* @param inputPdfFile input file
* @return number of pages
*/
public static int getPdfPageCount(String inputPdfFile) {
return getPdfPageCount(new File(inputPdfFile));
}
/**
* Gets PDF Page Count.
*
* @param inputPdfFile input file
* @return number of pages
*/
public static int getPdfPageCount(File inputPdfFile) {
if (PDFBOX.equals(System.getProperty(PDF_LIBRARY))) {
return PdfBoxUtilities.getPdfPageCount(inputPdfFile);
} else {
try {
return PdfGsUtilities.getPdfPageCount(inputPdfFile);
} catch (Exception e) {
System.setProperty(PDF_LIBRARY, PDFBOX);
return getPdfPageCount(inputPdfFile);
}
}
}
/**
* Merges PDF files.
*
* @param inputPdfFiles array of input files
* @param outputPdfFile output file
*/
public static void mergePdf(File[] inputPdfFiles, File outputPdfFile) {
if (PDFBOX.equals(System.getProperty(PDF_LIBRARY))) {
PdfBoxUtilities.mergePdf(inputPdfFiles, outputPdfFile);
} else {
try {
PdfGsUtilities.mergePdf(inputPdfFiles, outputPdfFile);
} catch (Exception e) {
System.setProperty(PDF_LIBRARY, PDFBOX);
mergePdf(inputPdfFiles, outputPdfFile);
}
}
}
}
© 2015 - 2024 Weber Informatics LLC | Privacy Policy