java下载文件并转成pdf

 所需jar包:

    链接:https://pan.baidu.com/s/1IzaJ_BUUKAaK2ChqWEI10Q?pwd=1234 
    提取码:1234 
    --来自百度网盘超级会员V6的分享

工具类AsposeUtil 地址(免费下载):  

    链接:https://pan.baidu.com/s/14eZFXJBAomnz8yFdcgl2Rw?pwd=1234 
    提取码:1234 
     --来自百度网盘超级会员V6的分享

 1. 先将所需要的包引入到项目中

<!-- https://mvnrepository.com/artifact/org.apache.cxf/cxf-spring-boot-starter-jaxws -->
        <dependency>
            <groupId>org.apache.cxf</groupId>
            <artifactId>cxf-spring-boot-starter-jaxws</artifactId>
            <version>3.2.9</version>
        </dependency>

        <!-- https://mvnrepository.com/artifact/commons-discovery/commons-discovery -->
        <dependency>
            <groupId>commons-discovery</groupId>
            <artifactId>commons-discovery</artifactId>
            <version>0.2</version>
        </dependency>

        <!-- https://mvnrepository.com/artifact/org.apache.axis/axis -->
        <dependency>
            <groupId>org.apache.axis</groupId>
            <artifactId>axis</artifactId>
            <version>1.4</version>
        </dependency>

        <!-- https://mvnrepository.com/artifact/javax.xml.rpc/javax.xml.rpc-api -->
        <dependency>
            <groupId>javax.xml.rpc</groupId>
            <artifactId>javax.xml.rpc-api</artifactId>
            <version>1.1.2</version>
        </dependency>

 2. 先从指定位置下载下来文件, 然后判断当前文件是否满足转换成pdf的条件,满足则进行转换,反之不转换

  /**
     * 说明:根据指定URL将文件下载到指定目标位置
     *
     * @param urlPath     下载路径
     * @param downloadDir 文件存放目录
     */
    public void downloadFile(String urlPath, String downloadDir) {
        File file = null;
        try {
            // 统一资源
            URL url = new URL(urlPath);
            // 连接类的父类,抽象类
            URLConnection urlConnection = url.openConnection();
            // http的连接类
            HttpURLConnection httpURLConnection = (HttpURLConnection) urlConnection;
            //设置超时
            httpURLConnection.setConnectTimeout(1000 * 5);
            //设置请求方式,默认是GET
            httpURLConnection.setRequestMethod("GET");
            // 设置字符编码
            httpURLConnection.setRequestProperty("Charset", "UTF-8");
            // 打开到此 URL引用的资源的通信链接(如果尚未建立这样的连接)。
            httpURLConnection.connect();
            // 文件大小
            int fileLength = httpURLConnection.getContentLength();

            // 控制台打印文件大小
            System.out.println("您要下载的文件大小为:" + fileLength / (1024 * 1024) + "MB");

            // 建立链接从请求中获取数据
            URLConnection con = url.openConnection();
            BufferedInputStream bin = new BufferedInputStream(httpURLConnection.getInputStream());
            // 指定文件名称(有需求可以自定义)
            String fileFullName = "demoTest.png";
            // 指定存放位置(有需求可以自定义)
            String path = downloadDir + File.separatorChar + fileFullName;
            file = new File(path);
            // 校验文件夹目录是否存在,不存在就创建一个目录
            if (!file.getParentFile().exists()) {
                file.getParentFile().mkdirs();
            }

            OutputStream out = new FileOutputStream(file);
            int size = 0;
            int len = 0;
            byte[] buf = new byte[2048];
            while ((size = bin.read(buf)) != -1) {
                len += size;
                out.write(buf, 0, size);
                // 控制台打印文件下载的百分比情况
                System.out.println("下载了-------> " + len * 100 / fileLength + "%\n");
            }
            // 关闭资源
            bin.close();
            out.close();
            convertFileToPdfTest(downloadDir + fileFullName);
            System.out.println("文件下载成功!");
        } catch (MalformedURLException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
            System.out.println("文件下载失败!");
        }
    }


    public void convertFileToPdfTest(String url) {
        String filePath = "D:\\\\";
        AsposeUtil asposeUtil = new AsposeUtil();
        File file = new File(url);
        String fileName = file.getName().substring(0, file.getName().lastIndexOf(".")); //文件名称
        String fileExtName = "." + file.getName().substring(file.getName().lastIndexOf(".") + 1); //文件后缀/类型
        try {
            //判断文件类型是否可已转为pdf;  ().equalsIgnoreCase(): 此方法是不考虑大小写的
            if (".doc".equalsIgnoreCase(fileExtName) || ".docx".equalsIgnoreCase(fileExtName)) {
                asposeUtil.WordConvertToPdf(filePath + fileName + fileExtName, filePath + fileName + ".pdf");
            } else if (".xls".equalsIgnoreCase(fileExtName) || ".xlsx".equalsIgnoreCase(fileExtName)) {
                asposeUtil.ExcelConvertToPdf(filePath + fileName + fileExtName, filePath + fileName + ".pdf");
            } else if (".ppt".equalsIgnoreCase(fileExtName) || ".pptx".equalsIgnoreCase(fileExtName)) {
                asposeUtil.PptConvertToPdf(filePath + fileName + fileExtName, filePath + fileName + ".pdf");
            } else if (".txt".equalsIgnoreCase(fileExtName)) {
                asposeUtil.TextConvertToPdf(filePath + fileName + fileExtName, filePath + fileName + ".pdf");
            } else if (".jpg".equalsIgnoreCase(fileExtName) || ".jpeg".equalsIgnoreCase(fileExtName) || ".png".equalsIgnoreCase(fileExtName)) {
                asposeUtil.ImageConvertToPdf(filePath + fileName + fileExtName, filePath + fileName + ".pdf");
            }
            System.out.println(filePath + fileName + ".pdf");
        } catch (Exception e) {
            System.out.println("转换pdf异常");
        }
    }


    public static void main(String[] args) {
        FileDown fileDown = new FileDown();
        // 指定资源地址,下载文件测试
        fileDown.downloadFile("https://ss0.bdstatic.com/5aV1bjqh_Q23odCf/static/superman/img/logo/bd_logo1_31bdc765.png", "D:\\\\");
    }

Java中,将Word文档(.doc或.docx格式)换为PDF通常需要借助第三方库,因为Java标准库本身并不直接提供这样的功能。一个常用的工具是Apache POI,它用于处理Microsoft Office文件格式,包括读取Word文档,而iText或Flying Saucer等库则可以用来生成PDF。 以下是一个简化的步骤: 1. 首先,你需要添加Apache POI和PDF库到项目中。对于POI,可以使用`poi`和`poi-ooxml`依赖;对于iText,引入`itextpdf`库。 ```java // Maven坐标示例 <dependency> <groupId>org.apache.poi</groupId> <artifactId>poi</artifactId> <version>4.x.x</version> </dependency> <dependency> <groupId>com.itextpdf</groupId> <artifactId>itextpdf</artifactId> <version>5.x.x</version> </dependency> ``` 2. 使用Apache POI读取Word文档内容。例如,你可以创建`Document`对象并加载Word文档。 ```java Document document = new Document(); InputStream is = new FileInputStream("input.docx"); POIXMLDocument doc = POIXMLDocument.openPackage(is); ``` 3. 解析Word文档中的元素,如Paragraphs、Tables等,并将其复制到一个新的PDF文档。 ```java XWPFDocument xwpfDoc = new XWPFDocument(doc); for (XWPFParagraph paragraph : xwpfDoc.getParagraphs()) { // 处理每个段落 } List<XWPFTable> tables = xwpfDoc.getTables(); for (XWPFTable table : tables) { // 处理每个表格 } ``` 4. 使用iText或类似库创建PDF文档,并将Word的内容添加进去。这通常涉及创建一个新的PdfDocument对象,然后添加节(Sections)和内容。 ```java try (Document pdfDoc = new Document()) { PdfWriter.getInstance(pdfDoc, new FileOutputStream("output.pdf")); pdfDoc.open(); // 将Word内容换为PDF for (Paragraph p : paragraphs) { Element element = p.createStyledElement(Element.TEXT); pdfDoc.add(element); } for (Table t : tables) { PdfPTable pdfTable = new PdfPTable(t.getRowArray().length); // 添加表格行到PDF表 } pdfDoc.close(); } ```
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

渣娃程序员

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值