设为首页 加入收藏

TOP

Java中将网上的png,jpg等存储在图片服务器中并且转成pdf,并且返回相应的url地址。
2019-05-11 02:25:07 】 浏览:57
Tags:Java 中将 网上 png jpg 存储 图片 服务器 并且 pdf 返回 相应 url 地址

通常在开发的时候,我们会遇到图片上传的功能,特别是有很多是提供url地址的方式。所以需要提供一个将url的图片等存储起来,然后提供一个我们自己的地址给用户使用。

第一步:提供pdfbox的jar包。准备相应的maven

<dependency>
<groupId>org.apache.pdfbox</groupId>
<artifactId>pdfbox</artifactId>
<version>2.0.5</version>
</dependency>
<dependency>
<groupId>org.apache.pdfbox</groupId>
<artifactId>pdfbox-tools</artifactId>
<version>2.0.5</version>
</dependency>

第二步:准备相应的类,


import java.awt.image.BufferedImage;
import java.io.BufferedInputStream;
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.net.HttpURLConnection;
import java.net.URL;

import org.apache.pdfbox.pdmodel.PDDocument;
import org.apache.pdfbox.rendering.ImageType;
import org.apache.pdfbox.rendering.PDFRenderer;
import org.apache.pdfbox.tools.imageio.ImageIOUtil;

public class Downimage {
public final static String IMG_TYPE_PDF = ".pdf";

/**
*將网上的url转换成本地或者
* @param destUrl 提供的图片URL地址
* @param orderCode 提供的编号
* @return
* @throws Exception
*/
public static String saveToFile(String destUrl,String orderCode) throws Exception {

//存储在服务器上的地址
String filePath ="c:/data";

//返回给用户的地址前缀
String realPath="localhost:8080";

FileOutputStream fos = null;
BufferedInputStream bis = null;
HttpURLConnection httpUrl = null;
URL url = null;
int BUFFER_SIZE = 1024;
byte[] buf = new byte[BUFFER_SIZE];
int size = 0;
try {
url = new URL(destUrl);
httpUrl = (HttpURLConnection) url.openConnection();
httpUrl.connect();
bis = new BufferedInputStream(httpUrl.getInputStream());
String pdfUrl=filePath+"/"+orderCode+IMG_TYPE_PDF;
System.out.println("pdfUrl="+pdfUrl);
try {
fos = new FileOutputStream(pdfUrl);
} catch (Exception e) {
e.printStackTrace();
return null;
}

while ((size = bis.read(buf)) != -1) {
fos.write(buf, 0, size);
}
fos.flush();
String ourUrl=realPath+"/"+orderCode+IMG_TYPE_PDF;
pdf2img(pdfUrl,filePath+"/"+orderCode,".png");
ourUrl=realPath+"/"+orderCode+".pdf";
System.out.println("outUrl="+ourUrl);
return ourUrl;
} catch (IOException e) {
e.printStackTrace();
} catch (ClassCastException e) {
e.printStackTrace();
} finally {
try {
fos.close();
bis.close();
httpUrl.disconnect();
} catch (IOException e) {
e.printStackTrace();
} catch (NullPointerException e) {
e.printStackTrace();
}
}
return null;
}
/**
* pdf转换成png
* @param pdfPath
* @param savePath
* @param imgType
* @throws IOException
*/
public static void pdf2img(String pdfPath, String savePath, String imgType) throws IOException {
PDDocument document = PDDocument.load(new File(pdfPath));
PDFRenderer pdfRenderer = new PDFRenderer(document);
for (int page = 0; page < document.getNumberOfPages(); ++page)
{
BufferedImage bim = pdfRenderer.renderImageWithDPI(page, 300, ImageType.RGB);
ImageIOUtil.writeImage(bim, savePath + imgType, 300);
}
document.close();
}

public static void main(String[] args) throws Exception {
Downimage dw = new Downimage();
String str=dw.saveToFile("https://s1.tuchong.com/content-image/af1cd4d8387103ded6eb0fe78198e5c9.jpg","1254");
System.out.println("str="+str);
}
}

】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
上一篇StreamCQL源码阅读(1) 提交任务 下一篇kafka性能测试工具使用过程中的各..

最新文章

热门文章

Hot 文章

Python

C 语言

C++基础

大数据基础

linux编程基础

C/C++面试题目