Support

Knowledge Base - Convert PDF to images and bitmaps (Android and Server)

This code shows how to convert all the pages from a PDF file in respective bitmaps on Android devices.

The code is compatible also with RadaeePDF SDK for Server.

 

/**
* converts the given document into images.
*
* @param filePath the input document's path
* @param password the document's password (if-any)
* @param savePath the path to save the images into
* @param size the largest side(width or height), to be used to calculate the image size (0 to use original pdf's dimension)
* @param startIndex the index (0 to page count - 1) of the first page to generate.
* @param endIndex the index (0 to page count - 1 inclusive) of the last page to generate.
* @param type the type of the generated image, 0: jpeg, otherwise:png
* @return 0: for success
* -1:need input password
* -2:unknown encryption
* -3:damaged or invalid format
* -4:unsatisfied link error
* -10:access denied or invalid file path
* others:unknown error
*/
public int pdf2Image(String filePath, String password, String savePath, int size, int startIndex, int endIndex, int type) {
int result;
try {
Global.annotTransparencyColor = 0x00000000;

Document document = new Document();
result = document.Open(filePath, password);
if(result == 0) { //success
int numOfPages = document.GetPageCount();

if(startIndex < 0 || startIndex >= numOfPages) startIndex = 0;
if(endIndex <= 0 || endIndex >= numOfPages) endIndex = numOfPages - 1;

String mFileName = filePath.substring(filePath.lastIndexOf(File.separator) + 1, filePath.toLowerCase().indexOf(".pdf"));
Bitmap bitmap;

//generate thumbnails
for(int i = startIndex ; i <= endIndex ; i++) {
float pageWidth = document.GetPageWidth(i);
float pageHeight = document.GetPageHeight(i);
int imageWidth , imageHeight;

if(pageWidth > pageHeight) { //set the given size, original size otherwise
imageWidth = size == 0 ? (int) pageWidth : size;
imageHeight = (int) (pageHeight * imageWidth / pageWidth);
} else {
imageHeight = size == 0 ? (int) pageHeight : size;
imageWidth = (int) (pageWidth * imageHeight / pageHeight);
}

float ratio = imageWidth / pageWidth;
float ratioy = imageHeight / pageHeight;
if( ratio > ratioy ) ratio = ratioy;

imageWidth = (int) (pageWidth * ratio);
imageHeight = (int) (pageHeight * ratio);

Page page = document.GetPage(i);
if(page != null) {
bitmap = Bitmap.createBitmap( imageWidth, imageHeight, Bitmap.Config.ARGB_8888 );
bitmap.eraseColor(Color.WHITE);

Matrix mat = new Matrix(ratio, -ratio, (imageWidth - pageWidth * ratio) / 2, (imageHeight + pageHeight * ratio) / 2);
page.RenderPrepare((Bitmap)null);
if(page.RenderToBmp(bitmap, mat)) {
String outputPath = savePath + File.separator + mFileName + "_" + i;
outputPath += type == 0 ? ".jpeg" : ".png";
FileOutputStream fos = new FileOutputStream(outputPath);
if(type == 0)
bitmap.compress(Bitmap.CompressFormat.JPEG, 90, fos);
else
bitmap.compress(Bitmap.CompressFormat.PNG, 90, fos);
fos.flush();
fos.close();
}

mat.Destroy();
bitmap.recycle();
page.Close();
}
}
}
document.Close();
} catch (Exception e) {
e.printStackTrace();
result = -100;
}
return result;
}

 

Applies To

RadaeePDF SDK for Android, RadaeePDF SDK for Server

Related Articles

Convert PDF to images and bitmaps (iOS)

Details

Created : 2017-08-22 12:11:03, Last Modified : 2017-08-29 12:54:38

Order history

Login to handle your order history.