Java 批量下载多个PDF文件,将其合成一个PDF文件,并上传OSS返回URL

目录

  1. 配依赖
    1. <!-- https://mvnrepository.com/artifact/org.apache.pdfbox/pdfbox -->
              <dependency>
                  <groupId>org.apache.pdfbox</groupId>
                  <artifactId>pdfbox</artifactId>
                  <version>2.0.24</version>
              </dependency>

      pdf工具包

    2.         <dependency>
                  <groupId>org.springframework</groupId>
                  <artifactId>spring-test</artifactId>
              </dependency>

      该包里面有所需的类型

  2. 代码部分
    1. public String batchDownload(List<String> list) {
      		try {
      			PDDocument cpdDocument = new PDDocument();
      			for (String url : list) {
      				PDDocument doc = PDDocument.load(new URL(url).openStream());
      					for (PDPage page : doc.getPages()) {
      						cpdDocument.addPage(page);
      					}
      			}
      			ByteArrayOutputStream bytes = new ByteArrayOutputStream();
      			cpdDocument.save(bytes);
                  cpdDocument.close();
      			MultipartFile multipartFile = convert(bytes, getCurrentDateTime() + ".pdf");
      			bytes.close();
                  //这里的ossClient是我的oss服务调用,换成你自己的就行了,最后上传成功后获取url
      			R<ImgVideoFileVo> ossRes = ossClient.putFile(multipartFile);
      			return ossRes.getData().getLink();
      		} catch (Exception e) {
                  throw new RuntimeException(e);
              }
          }
      
      private MultipartFile convert(ByteArrayOutputStream baos, String filename) {
          	return new MockMultipartFile(filename, filename, "text/plain", baos.toByteArray());
      	}
      
      private String getCurrentDateTime() {
      		SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd-HH-mm-ss");
      		return sdf.format(new Date());
      	}

      (new URL是因为我的pdf都是动态url,如果是本地文件用new File)

  • 5
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
以下是一个简单的 Java 工具类,用于上传下载文件到阿里云 OSS。 ```java import com.aliyun.oss.OSS; import com.aliyun.oss.OSSClientBuilder; import com.aliyun.oss.model.GetObjectRequest; import com.aliyun.oss.model.ObjectMetadata; import com.aliyun.oss.model.PutObjectRequest; import com.aliyun.oss.model.PutObjectResult; import java.io.File; import java.io.InputStream; public class OssUtils { private static final String ACCESS_KEY_ID = "your_access_key_id"; private static final String ACCESS_KEY_SECRET = "your_access_key_secret"; private static final String ENDPOINT = "your_oss_endpoint"; private static final String BUCKET_NAME = "your_bucket_name"; private static final OSS ossClient = new OSSClientBuilder().build(ENDPOINT, ACCESS_KEY_ID, ACCESS_KEY_SECRET); /** * 上传文件OSS * * @param key 文件OSS 中的唯一标识 * @param file 要上传文件 * @param metadata 文件元数据 * @return 文件OSS 中的 URL */ public static String upload(String key, File file, ObjectMetadata metadata) { PutObjectRequest request = new PutObjectRequest(BUCKET_NAME, key, file); if (metadata != null) { request.setMetadata(metadata); } PutObjectResult result = ossClient.putObject(request); return ossClient.generatePresignedUrl(BUCKET_NAME, key, null).toString(); } /** * 从 OSS 下载文件 * * @param key 文件OSS 中的唯一标识 * @return 文件 */ public static InputStream download(String key) { GetObjectRequest request = new GetObjectRequest(BUCKET_NAME, key); return ossClient.getObject(request).getObjectContent(); } } ``` 上述代码中,我们使用了阿里云 OSS Java SDK 提供的 `OSS` 类来上传下载文件。首先,我们需要在阿里云控制台中创建一个 OSS 存储空间,并获取其访问密钥 ID 和访问密钥 Secret,以及 OSS 的 Endpoint 和 Bucket 名称。这些参数需要填写到代码中的常量中。 `upload` 方法用于上传文件OSS。我们使用 `PutObjectRequest` 类来指定要上传文件文件OSS 中的唯一标识。如果需要为文件设置元数据,可以使用 `ObjectMetadata` 类来指定。最后,我们使用 `ossClient.putObject` 方法上传文件,并使用 `ossClient.generatePresignedUrl` 方法生文件OSS 中的 URL。 `download` 方法用于从 OSS 下载文件。我们使用 `GetObjectRequest` 类来指定要下载文件OSS 中的唯一标识,然后使用 `ossClient.getObject` 方法获取文件。 需要注意的是,在使用完 `OSS` 类后,应该及时调用其 `shutdown` 方法关闭连接,以释放资源。 ```java ossClient.shutdown(); ```

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值