项目场景:
使用iText进行图片转pdf时,图片过长,一页放不下导致多余部分失去
问题描述
图片过长,一页放不下导致多余部分失去
解决方案:
提示:这里填写该问题的具体解决方案:
1、iText创建Document时,默认使用A4大小
2、创建Rectangle对象,自定义长宽,放入Document对象中即可
3、PS:也可以选择切割图片,然后调用document.add(img);方法
Rectangle rect = new Rectangle(100.0,200.0);
Documentdocument = new Document(rect);
方法:
public String image2Pdf(String path){
String dest = Environment.getExternalStorageDirectory().getAbsolutePath() + File.separator + "/xxx.pdf";
Image img = null;
try {
img = Image.getInstance(path);
} catch (BadElementException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
float A4Width = PageSize.A4.getWidth();
float A4Height = PageSize.A4.getHeight();
float scale = A4Width/img.getWidth()*100;
if (A4Height*100/scale>img.getHeight()){
document = new Document();
}else{
double i1 = (img.getHeight()*1.0 / 100.0) * scale + 20;
Rectangle rect = new Rectangle(A4Width,(float) i1);
document = new Document(rect);
}
/*当这个 PdfWriter 被添加到 PdfDocument 后,所有添加到 Document 的内容将会写入到与文件或网络关联的输出流中。*/
PdfWriter pdfWriter = null;
try {
pdfWriter = PdfWriter.getInstance(document, new FileOutputStream(dest));
} catch (DocumentException e) {
e.printStackTrace();
} catch (FileNotFoundException e) {
e.printStackTrace();
}
document.open();
document.newPage();
img.scalePercent(scale);
img.setAlignment(Image.MIDDLE);
try {
document.add(img);
} catch (DocumentException e) {
e.printStackTrace();
}
document.close();
pdfWriter.close();
return dest;
}