Skip to content

Instantly share code, notes, and snippets.

@planetsizebrain
Created April 29, 2015 13:21
Show Gist options
  • Save planetsizebrain/2a1f06f33be4d0bb79e6 to your computer and use it in GitHub Desktop.
Save planetsizebrain/2a1f06f33be4d0bb79e6 to your computer and use it in GitHub Desktop.
Custom LiferayPDFBoxConverter for PDFBox 2.0.0-SNAPSHOT
/**
* 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;
}
@juan1998carlos
Copy link

¿que versión es ?

@planetsizebrain
Copy link
Author

This was for Liferay 6.x

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment