首页 > 编程语言 >Java中将网上的png,jpg等存储在图片服务器中并且转成pdf,并且返回相应的url地址。

Java中将网上的png,jpg等存储在图片服务器中并且转成pdf,并且返回相应的url地址。

时间:2023-06-01 18:01:23浏览次数:50  
标签:Java String java url jpg new import pdfbox


通常在开发的时候,我们会遇到图片上传的功能,特别是有很多是提供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);
    }
 }

标签:Java,String,java,url,jpg,new,import,pdfbox
From: https://blog.51cto.com/u_16147772/6397259

相关文章

  • ‘dependencies.dependency.version‘ for mysql:mysql-connector-java:jar is missin
    项目使用的技术框架是SpringBoot,依赖管理工具是Maven,需要用到数据库所以引入了mysql-connector-java相关jar包。之前项目一直正常的,不会报错,最近更新了一下版本,项目启动的时候直接报错:[INFO]Scanningforprojects...[ERROR][ERROR]Someproblemswereencounteredwhilep......
  • Java中使用Redis
    应用框架SpringDataRedisSpringDataRedis介绍SpringDataRedis是Spring的一部分,提供了在Spring应用中通过简单的配置就可以访问Redis服务,对Redis底层开发包进行了高度封装。在Spring项目中,可以使用SpringDataRedis来简化Redis操作。Maven坐标点击查看代......
  • JAVA 反射应用:Annotation
    SomeClass.javaimportjava.lang.annotation.ElementType;importjava.lang.annotation.Retention;importjava.lang.annotation.RetentionPolicy;importjava.lang.annotation.Target;importjava.lang.reflect.Method;publicclassSomeClass{@SomeToken......
  • java 两个整数相除,保留两位小数
    1.情景展示两个int类型的整数相除,如何保留两位小数?5÷18=0.2777...,除不尽,保留两位小数,第二位小数的值,按第三位小数的值进行四舍五入,最终值应该是:0.28。18÷5=3.6,能除尽,只有一位小数,保留两位小数的话,第二位小数应该是0,所以最终值为:3.60。但实际结果如下。计算结果只有整数......
  • java map缓存数据自动过期
     packageztest;importjava.util.Date;importjava.util.HashMap;importjava.util.Iterator;importjava.util.Map;importjava.util.Timer;importjava.util.TimerTask;/***页面跳转时产生一个token*带到页面*页面保存时校验token**防止重复提交......
  • Java开发手册中为什么禁止使用BigDecimal的equals方法做等值比较已经为什么禁止使用do
    场景阿里Java开发手册嵩山版中明确指出:1、BigDecimal的等值比较应使用compareTo()方法,而不是equals()方法equals()方法会比较值和精度(1.0与1.00返回结果为false),而compareTo()则会忽略精度2、禁止使用构造方法BigDecimal(double)的方式把double值转换为BigDecimal对象BigDeci......
  • java.lang.ClassNotFoundException: weblogic.utils.NestedException
    我单元测试的时候报这种错误Causedby:java.lang.ClassNotFoundException:weblogic.utils.NestedException atjava.net.URLClassLoader$1.run(URLClassLoader.java:202) atjava.security.AccessController.doPrivileged(NativeMethod) atjava.net.URLClassLoader.findC......
  • Java学习问题记录
    1.特殊基本数据类型除了这两个,其他的变量都不需要加符号//定义时需要在变量的值后面加L或llongcount=300000L;//定义时需要在变量的值后面加f或Ffloatcode=10.3f;2.常量定义//在Java中使用final关键字来修饰常量,声明方式和变量类似:(通常使用大写字母表示常量)fina......
  • 5.部署tomcat+war包的java网页项目
    1.将war包丢到tomcat-webapps目录下2.修改war包下的数据库配置文件:datasource.propertiescd/usr/local/tomcat/apache-tomcat-8.5.41/webapps/recruit.students/WEB-INF/classesvidatasource.properties 3.用dbeaver连接数据库并导入数据库文件   点击恢复数据库......
  • 新版idea快捷键总结学习----(用于java开发模式)
    选择代码区ctrlw如果放到以if开头的语句,可以选择if判断条件所在的代码片段游标在单个单词下时选择单词在选中多个单词时,选择整个字符串三次点击时,如果不在字符串单词下,用于选择{}内的代码片段逐级递增如果在单词下方,用于选择单词所在的字符串并且向外逐级扩展。ctrl......