Android Coding
여러 장의 jpg를 PDF로 만들기
오마로
2018. 9. 6. 10:43
반응형
여러장의 이미지를 가지고 PDF를 만듬
1. itextpdf 라이브러리 추가
implementation 'com.itextpdf:itextg:5.5.9' //Bitmap to PDF
2.해당 파일들 리스트
//PDF만들기 테스트
private void goCreatePDF(){
GomsLog.d(TAG,"goCreatePDF()");
List<String> list = new ArrayList<String>();
list.add("cardmaker_1523253267458.jpg");
list.add("cardmaker_1523007611218.jpg");
list.add("cardmaker_1522906251381.jpg");
list.add("cardmaker_1521363256449.jpg");
list.add("cardmaker_1522118677235.jpg");
list.add("cardmaker_1521361016214.jpg");
list.add("cardmaker_1521190298381.jpg");
new CreatePdfTask(mMainActivity, list).execute();
}
3.itextpdf 라이브러리를 활용한 pdf 만들기
String fullFolder = Environment.getExternalStorageDirectory().getAbsolutePath() + mFolder;
mPath = fullFolder + "/" + mFilename + ".pdf";
Document document = new Document(PageSize.A4, 38, 38, 50, 38);
Rectangle documentRect = document.getPageSize();
try {
PdfWriter writer = PdfWriter.getInstance(document, new FileOutputStream(mPath));
document.open();
for (int i = 0; i < mImagesUri.size(); i++) {
Bitmap bmp = BitmapFactory.decodeFile(fullFolder + "/" + mImagesUri.get(i));
ByteArrayOutputStream stream = new ByteArrayOutputStream();
bmp.compress(Bitmap.CompressFormat.PNG, 100, stream);
image = Image.getInstance(fullFolder + "/" + mImagesUri.get(i));
if (bmp.getWidth() > documentRect.getWidth() || bmp.getHeight() > documentRect.getHeight()) {
//bitmap is larger than page,so set bitmap's size similar to the whole page
image.scaleAbsolute(documentRect.getWidth(), documentRect.getHeight());
} else {
//bitmap is smaller than page, so add bitmap simply.
//[note: if you want to fill page by stretching image,
// you may set size similar to page as above]
image.scaleAbsolute(bmp.getWidth(), bmp.getHeight());
}
image.setAbsolutePosition(
(documentRect.getWidth() - image.getScaledWidth()) / 2,
(documentRect.getHeight() - image.getScaledHeight()) / 2);
image.setBorder(Image.BOX);
image.setBorderWidth(15);
document.add(image);
document.newPage();
}
document.close();
} catch (Exception e) {
e.printStackTrace();
}
document.close();
오늘도 즐거운 코딩되세요
반응형