java实现文档部分预览与全预览功能

方法一:使用kkFileView软件

这里使用的是kkFileView插件,部署在服务器上,使用其生成预览内容,官网地址是:kkFileView - 在线文件预览

下载地址为:kkFileView 4.1.0 版本发布,开源在线文件预览解决方案 - OSCHINA - 中文开源技术交流社区

以window为例,下载zip的包,解压后,在bin目录直接启动startup.bat.

访问地址:http://localhost:8012

8056d882517742e7a751e640fe3a7365.png

 上面可以直接上传http地址,获取本地文件,然后预览出一个地址

http://localhost:8012/onlinePreview?url=aHR0cDovL2xvY2FsaG9zdDo4MDEyL2RlbW8v6aG555uuLmRvY3g%3D​​​​​​

以上是在kkView服务上预览的内容,如果要应用到springboot项目中,这里总结了三个方法:

一、前端方式:

1.vue前端的话,前端安装base64.min.js编码;就在kkView目录下的file目录下生成文档对应的pdf,源文件及图片目录了

##在vue项目引入base64
const Base64 = require('js-base64').Base64


##编码
var url = 'http://127.0.0.1:8080/file/test.txt'; //要预览文件的访问地址
window.open('http://127.0.0.1:8012/onlinePreview?url='+encodeURIComponent(Base64.encode(url)));

4c84bcbb67e544ac91be61f562c7e97a.png

二、后端方式,直接调用上传接口,上传完,同样会生成上面对应的pdf文件和图片。注意上传文件的地址不要带中文。

地址:http://localhost:8012/uploadFile

参数:Multifile

方法:post

三、后端方式,使用预览转码队列。注意文件地址要以/,不要是\

地址:http://localhost:8012/addTask

参数:url=http文件地址

方法:GET

上面三种方式都可以生成文件,为了不盲目等待,我们使用异步方式后台执行后端的方法。

生成的图片目录下有多张图片,部分预览取第一张,如果只有一张图片,截图图片的一部分取。

全预览则取其pdf文件。

由于上面要预览的文件都在kkView的file目录下,不能直接打开调用。我们先保存到自己服务器,然后映射后用自己服务器地址访问部分预览和全预览的内容

方法二:使用java将文件转换成PDF,再将PDF转换成图片

引入依赖:

<dependency>
            <groupId>com.luhuiguo</groupId>
            <artifactId>aspose-cells</artifactId>
            <version>22.10</version>
        </dependency>
        <dependency>
            <groupId>com.luhuiguo</groupId>
            <artifactId>aspose-words</artifactId>
            <version>23.1</version>
        </dependency>
        <dependency>
            <groupId>com.luhuiguo</groupId>
            <artifactId>aspose-pdf</artifactId>
            <version>23.1</version>
        </dependency>
        <dependency>
            <groupId>com.itextpdf</groupId>
            <artifactId>itext-asian</artifactId>
            <version>5.2.0</version>
        </dependency>
        <dependency>
            <groupId>com.itextpdf</groupId>
            <artifactId>itextpdf</artifactId>
            <version>5.4.3</version>
        </dependency>
        <dependency>
            <groupId>org.apache.poi</groupId>
            <artifactId>poi</artifactId>
            <version>4.1.2</version>
        </dependency>
        <dependency>
            <groupId>org.apache.poi</groupId>
            <artifactId>poi-ooxml</artifactId>
            <version>4.1.2</version>
        </dependency>

PDF转换工具类:

package com.xx.utils;

import com.aspose.cells.PdfSaveOptions;
import com.aspose.cells.Workbook;
import com.aspose.pdf.PageCollection;
import com.aspose.pdf.devices.JpegDevice;
import com.aspose.words.License;
import com.aspose.words.SaveFormat;
import com.itextpdf.text.Document;
import com.itextpdf.text.Image;
import com.itextpdf.text.PageSize;
import com.itextpdf.text.pdf.PdfPCell;
import com.itextpdf.text.pdf.PdfPTable;
import com.itextpdf.text.pdf.PdfWriter;
import org.apache.commons.io.output.UnsynchronizedByteArrayOutputStream;
import org.apache.poi.hslf.usermodel.*;
import org.apache.poi.xslf.usermodel.*;

import java.awt.*;
import java.awt.image.BufferedImage;
import java.io.*;
import java.util.List;

public class PdfConverUtil {
    /**
     *
     * @param inputStream 源文件输入流
     * @param outputStream PDF文件输入流
     * @return
     */
    public static boolean imgToPdf(InputStream inputStream, OutputStream outputStream){
        Document document = null;
        try{
            //创建文档,三个字pdf页面的大小 A2-A9,个人觉得A3最合适
            document = new Document(PageSize.A3,20,20,20,20);
            //新建PDF文档,具体逻辑看.getInstance方法
            PdfWriter.getInstance(document,outputStream);

            document.open();
            document.newPage();

            //将文件流转换为字节流,便于格式转换
            BufferedInputStream bufferedInputStream = new BufferedInputStream(inputStream);
            ByteAr
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
实现Java的在线编辑预览文档,可以采用以下步骤: 1. 建立前端页面:使用HTML和CSS构建一个用户界面。界面中包含一个文本编辑框和一个预览框,用于实时编辑和展示文档内容。 2. 使用JavaScript实现实时编辑功能:监听文本编辑框的输入事件,并将输入的内容实时显示在预览框中。可以使用JavaScript的事件监听器来实现这个功能。 3. 实现文件上传功能:在用户界面中加入文件上传按钮,用于用户上传需要编辑的文档。可以使用HTML5的文件API来实现文件上传。 4. 将上传的文档内容读取并显示在编辑框中:使用Java文件处理功能,读取用户上传的文档内容,并将其显示在文本编辑框中。可以使用Java文件读取类库来实现这个功能。 5. 后端处理编辑保存功能:当用户编辑并完成文档时,可以加入保存按钮,用于保存编辑后的文档内容。在后端使用Java文件处理功能,将编辑后的内容保存为新的文档。 6. 加入实时预览功能:当用户进行编辑时,可以在编辑框旁边加入一个预览按钮,用于实时预览编辑后的文档内容。点击预览按钮后,Java后端可以根据用户当前编辑的内容生成预览,然后将预览内容返回给前端进行展示。 7. 数据持久化:可以将用户上传的文档内容保存到数据库中,以便以后随时访问和编辑。可以使用Java的数据库操作类库来实现数据的持久化。 通过以上步骤,就可以实现Java的在线编辑预览文档功能。用户可以在网页上实时编辑文档,并在编辑过程中进行预览和保存。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

飞流银河

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

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

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

打赏作者

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

抵扣说明:

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

余额充值