获取InputStream流对象方法
public static byte[] getImgByte(String url){
byte[] obj = null;
CloseableHttpClient httpclient = HttpClients.createDefault();
HttpGet httpGet = new HttpGet(url);
httpGet.setHeader("Content-type","charset=UTF-8");
HttpResponse response;
try{
response = httpclient.execute(httpGet);
if(response.getStatusLine().getStatusCode()==HttpStatus.SC_OK){
HttpEntity entity = response.getEntity();
InputStream inputStream = entity.getContent();
obj = HttpclienUtils.readInputStream(inputStream);
}
}catch (Exception e){
e.printStackTrace();
}
return obj;
}
获取Byte数组对象
public static byte[] readInputStream(InputStream inStream) throws Exception{
ByteArrayOutputStream outStream = new ByteArrayOutputStream();
byte[] buffer = new byte[1024];
int len = 0;
while( (len=inStream.read(buffer)) != -1 ){
outStream.write(buffer, 0, len);
}
inStream.close();
return outStream.toByteArray();
}
图片Byte数组转化为PDF的Byte数组
private byte[] imgByteToPdfByte(byte[] imgObj){
byte[] pdfByte = null;
ByteArrayOutputStream fos = new ByteArrayOutputStream();
Document doc = new Document(PageSize.A4, 0, 0, 0, 0);
try {
PdfWriter.getInstance(doc, fos);
} catch (DocumentException e) {
logger.error(String.format("创建PdfWriter失败:"),e);
throw new RuntimeException("创建PdfWriter失败");
}
doc.open();
try {
addImage(doc, imgObj);
} catch (Exception e) {
logger.error(String.format("图片下载或转换失败"),e);
doc.close();
throw new RuntimeException("转换图片失败");
}
doc.close();
pdfByte = fos.toByteArray();
return pdfByte;
}
/**
* 增加图片
* @param doc itext pdf Document文档
* @param bytes 要转的图片流
* @throws Exception
*/
private void addImage(Document doc, byte[] bytes) throws Exception {
Image image = Image.getInstance(bytes);
image.setAlignment(Image.ALIGN_CENTER);
image.scalePercent(getPercent(image.getHeight(),image.getWidth()));
doc.newPage();
doc.add(image);
}
/**
* A4比例
* @param h
* @param w
* @return
*/
private int getPercent(float h,float w) {
float p2 = 0f;
if(h > w) {
p2 = PageSize.A4.getHeight() / h * 100;
} else {
p2 = PageSize.A4.getWidth() / w * 100;
}
return Math.round(p2);
}