我公司让别人做网站了怎么办,医院网站必须建设吗,广东手机版建站系统开发,网页图片下载插件首先需要导入相关依赖#xff0c;由于具体依赖本人也不是记得很清楚了#xff0c;所以简短的说一下。 iText#xff1a;PDF 操作库#xff0c;用于创建和操作 PDF 文件。可通过 Maven 或 Gradle 引入 iText 依赖。 MultipartFile#xff1a;Spring 框架中处理文件上传的类…首先需要导入相关依赖由于具体依赖本人也不是记得很清楚了所以简短的说一下。 iTextPDF 操作库用于创建和操作 PDF 文件。可通过 Maven 或 Gradle 引入 iText 依赖。 MultipartFileSpring 框架中处理文件上传的类。通常用于接收前端上传的文件数据。 HttpServletRequestJava Servlet API 中的类用于获取 HTTP 请求的相关信息如请求方式、参数等。 BufferedImageJava 中用于表示图像的类通常与 ImageIO 结合使用来读取图片文件。 ByteArrayOutputStreamJava 中的字节数组输出流用于将数据写入到字节数组中。 Document和PdfWriteriText 库中的类分别用于创建 PDF 文档和写入 PDF 文件。 ImageiText 库中的类用于处理图像并将图像添加到 PDF 文档中。 RectangleiText 库中的类用于表示 PDF 页面的大小。 !--ITextPdf操作PDF文件的工具类--dependencygroupIdcom.itextpdf/groupIdartifactIditextpdf/artifactIdversion5.4.2/version/dependencydependencygroupIdcom.documents4j/groupIdartifactIddocuments4j-local/artifactIdversion1.0.3/version/dependencydependencygroupIdcom.documents4j/groupIdartifactIddocuments4j-transformer-msoffice-word/artifactIdversion1.0.3/version/dependency
以上提供一些依赖是需要用到的,然后在application.yml中添加以下配置
web:upload-path: E:/PictureTool/resources:static-locations: classpath:/META-INF/resources/,classpath:/resources/,classpath:/static/,classpath:/public/,file:${web.upload-path}配置web.upload-path为与项目代码分离的静态资源路径即文件上传保存根路径配置spring.resources.static-locations除了带上Spring Boot默认的静态资源路径之外加上file:${web.upload-path}指向外部的文件资源上传路径。该路径下的静态资源可以直接对外提供HTTP访问服务。
然后就需要写具体的实现逻辑了 public R imgToPdf(MultipartFile file, HttpServletRequest request) {// 获取文件在服务器上的存储路径String imagePath getFilePath(file);// 获取文件名去掉文件扩展名String filename file.getOriginalFilename().substring(0, file.getOriginalFilename().lastIndexOf(.));// 将文件名赋值给成员变量FileNameFileName filename;try {// 使用ImageIO读取文件内容转换为BufferedImage对象BufferedImage img ImageIO.read(new File(imagePath));// 创建一个ByteArrayOutputStream对象用于存储转换后的PDF文件ByteArrayOutputStream baos new ByteArrayOutputStream();// 创建一个Document对象用于存储PDF文档Document doc new Document();// 创建一个PdfWriter对象用于将BufferedImage对象转换为PDF文件PdfWriter.getInstance(doc, new FileOutputStream(uploadPath filename .pdf));// 存储PDF文件的路径FilePath uploadPath filename .pdf;System.out.println(uploadPath filename .pdf);// 打开文档doc.open();// 将BufferedImage对象添加到PDF文档中Image image Image.getInstance(imagePath);// 设置文档的页面大小为BufferedImage的大小doc.setPageSize(new Rectangle(img.getWidth(), img.getHeight()));// 将BufferedImage对象添加到PDF文档的第一个页面doc.add(image);// 关闭文档doc.close();// 调用addUserOperation方法记录用户操作boolean re addUserOperation(file, pdf, 1, request);System.out.println(转换成功re为 re);// 获取PDF文件的下载链接String downloadLink request.getScheme() :// request.getServerName() : request.getServerPort() request.getContextPath() /pictureTool/ filename .pdf;// 返回PDF文件的下载链接return R.Success(图片转pdf转换成功, downloadLink);} catch (Exception e) {// 如果转换失败记录用户操作e.printStackTrace();boolean re addUserOperation(file, pdf, 0, request);System.out.println(转换失败re为 re);// 返回错误信息return R.Failed(500, 图片转换失败);}}
以上代码接受一个文件然后进行转换为pdf并保存在本地指定的文件夹中接下来使用输出流的方式进行文件下载。 public R downloadFile(HttpServletRequest request, HttpServletResponse response)throws IOException {// 获取文件路径和文件名String filePath FilePath;String fileName FileName;// 设置响应头指定下载文件的名称response.setHeader(Content-Disposition,attachment; filename java.net.URLEncoder.encode(fileName, UTF-8));try {// 打开文件File file new File(filePath);FileInputStream fileInputStream new FileInputStream(file);// 读取文件内容到字节数组byte[] fileByte new byte[(int) file.length()];ByteArrayOutputStream byteArrayOutputStream new ByteArrayOutputStream();byte[] bytes new byte[1024];int len;while ((len fileInputStream.read(bytes, 0, bytes.length)) ! -1) {byteArrayOutputStream.write(bytes, 0, len);}byteArrayOutputStream.close();fileByte byteArrayOutputStream.toByteArray();// 将文件内容写入响应对象OutputStream outputStream response.getOutputStream();outputStream.write(fileByte);outputStream.flush();outputStream.close();// 返回成功信息return R.Success(文件下载成功);} catch (Exception e) {// 如果下载失败返回失败信息e.printStackTrace();return R.Failed(文件下载失败);}}其中R是我自定义的一个响应类改成你自己的就可以了~
最后记得放行你存放文件的盘符