Created
April 29, 2015 13:21
-
-
Save planetsizebrain/2a1f06f33be4d0bb79e6 to your computer and use it in GitHub Desktop.
Custom LiferayPDFBoxConverter for PDFBox 2.0.0-SNAPSHOT
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
/** | |
* Copyright (c) 2000-2013 Liferay, Inc. All rights reserved. | |
* | |
* This library is free software; you can redistribute it and/or modify it under | |
* the terms of the GNU Lesser General Public License as published by the Free | |
* Software Foundation; either version 2.1 of the License, or (at your option) | |
* any later version. | |
* | |
* This library is distributed in the hope that it will be useful, but WITHOUT | |
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS | |
* FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more | |
* details. | |
*/ | |
package com.liferay.portlet.documentlibrary.util; | |
import com.liferay.portal.image.ImageToolImpl; | |
import com.liferay.portal.kernel.image.ImageTool; | |
import org.apache.pdfbox.pdmodel.PDDocument; | |
import org.apache.pdfbox.pdmodel.PDDocumentCatalog; | |
import org.apache.pdfbox.pdmodel.PDPageTree; | |
import org.apache.pdfbox.rendering.ImageType; | |
import org.apache.pdfbox.rendering.PDFRenderer; | |
import javax.imageio.ImageIO; | |
import java.awt.image.RenderedImage; | |
import java.io.File; | |
/** | |
* @author Juan Gonzalez | |
*/ | |
public class LiferayPDFBoxConverter { | |
public LiferayPDFBoxConverter( | |
File inputFile, File thumbnailFile, File[] previewFiles, | |
String extension, String thumbnailExtension, int dpi, int height, | |
int width, boolean generatePreview, boolean generateThumbnail) { | |
_inputFile = inputFile; | |
_thumbnailFile = thumbnailFile; | |
_previewFiles = previewFiles; | |
_extension = extension; | |
_thumbnailExtension = thumbnailExtension; | |
_dpi = dpi; | |
_height = height; | |
_width = width; | |
_generatePreview = generatePreview; | |
_generateThumbnail = generateThumbnail; | |
} | |
public void generateImagesPB() throws Exception { | |
PDDocument pdDocument = null; | |
try { | |
pdDocument = PDDocument.load(_inputFile); | |
PDDocumentCatalog pdDocumentCatalog = | |
pdDocument.getDocumentCatalog(); | |
PDFRenderer pdfRenderer = new PDFRenderer(pdDocument); | |
PDPageTree pdPages = pdDocumentCatalog.getPages(); | |
for (int i = 0; i < pdPages.getCount(); i++) { | |
if (_generateThumbnail && (i == 0)) { | |
_generateImagesPB( | |
pdfRenderer, i, _thumbnailFile, _thumbnailExtension); | |
} | |
if (!_generatePreview) { | |
break; | |
} | |
_generateImagesPB(pdfRenderer, i, _previewFiles[i], _extension); | |
} | |
} | |
finally { | |
if (pdDocument != null) { | |
pdDocument.close(); | |
} | |
} | |
} | |
private void _generateImagesPB( | |
PDFRenderer pdfRenderer, int index, File outputFile, String extension) | |
throws Exception { | |
RenderedImage renderedImage = pdfRenderer.renderImageWithDPI(index, _dpi, ImageType.RGB); | |
ImageTool imageTool = ImageToolImpl.getInstance(); | |
if (_height != 0) { | |
renderedImage = imageTool.scale(renderedImage, _width, _height); | |
} | |
else { | |
renderedImage = imageTool.scale(renderedImage, _width); | |
} | |
outputFile.createNewFile(); | |
ImageIO.write(renderedImage, extension, outputFile); | |
} | |
private int _dpi; | |
private String _extension; | |
private boolean _generatePreview; | |
private boolean _generateThumbnail; | |
private int _height; | |
private File _inputFile; | |
private File[] _previewFiles; | |
private String _thumbnailExtension; | |
private File _thumbnailFile; | |
private int _width; | |
} |
This was for Liferay 6.x
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
¿que versión es ?