javafx预览PDF

第一种方法: 调用其它可外部程序打开

Runtime.getRuntime().exec("rundll32 url.dll,FileProtocolHandler " + new File("C:\\Program Files\\aaa\\202306171607001.pdf").getAbsolutePath());

第二种方法:javafx程序内部打开PDF预览,并支持放大缩小

1. 引入依赖

<repositories>
    <repository>
        <id>jitpack.io</id>
        <url>https://jitpack.io</url>
    </repository>
</repositories>

<dependency>
    <groupId>com.github.Dansoftowner</groupId>
    <artifactId>PDFViewerFX</artifactId>
    <version>0.7</version>
</dependency>

这个依赖maven不一定能下载下来, 反正我是没下载下来, 因此我是把jar包搞到了本地进行引入的。本人下载的是0.5版本的jar包,测试了一下,可以打开但是发现中文乱码。看各位需求吧,如果是纯英文文档, 则建议使用此方法。

jar包下载地址:https://github.com/Dansoftowner/PDFViewerFX/tree/0.8

2. 代码

  PDFDisplayer displayer = new PDFDisplayer();
  Stage stage = (Stage)btn.getScene().getWindow();
  stage.setScene(new Scene(displayer.toNode())); 
 //第一种方法 0.5版本
  //displayer.displayPdf(new File("D:\\aaa\\202306171607001.pdf"));
//第二种方法 0.5版本
 displayer.displayPdf(new BufferedInputStream(new FileInputStream(new File("D:\\aaa\\202306171607001.pdf"))));
下面是使用 JPedal 和 JavaFX 实现 PDF 预览和复制 PDF 文本内容的基本步骤及示例代码: ### 1. 添加依赖 首先需要在项目中添加 JPedal 和 JavaFX 的依赖。如果使用 Maven 项目,可以在 `pom.xml` 中添加以下依赖: ```xml <dependencies> <!-- JPedal --> <dependency> <groupId>org.jpedal</groupId> <artifactId>jpedal</artifactId> <version>6.6.1</version> </dependency> <!-- JavaFX --> <!-- 根据具体的 JavaFX 版本和使用情况添加相应依赖 --> </dependencies> ``` ### 2. 实现 PDF 预览和文本复制功能 ```java import javafx.application.Application; import javafx.scene.Scene; import javafx.scene.control.TextArea; import javafx.scene.image.Image; import javafx.scene.image.ImageView; import javafx.scene.layout.VBox; import javafx.stage.Stage; import org.jpedal.PdfDecoderFX; import org.jpedal.exception.PdfException; import java.io.File; public class PdfPreviewAndTextCopy extends Application { @Override public void start(Stage primaryStage) { try { // 初始化 PDF 解码器 PdfDecoderFX pdfDecoder = new PdfDecoderFX(true); // 打开 PDF 文件 File pdfFile = new File("path/to/your/pdf/file.pdf"); pdfDecoder.openPdfFile(pdfFile.getAbsolutePath()); // 获取第一页的图像 Image pdfPageImage = pdfDecoder.getPageAsImage(1); ImageView imageView = new ImageView(pdfPageImage); // 获取 PDF 文本内容 String pdfText = pdfDecoder.extractPageText(1); TextArea textArea = new TextArea(pdfText); // 创建布局 VBox vbox = new VBox(imageView, textArea); // 创建场景 Scene scene = new Scene(vbox, 800, 600); // 设置舞台 primaryStage.setTitle("PDF Preview and Text Copy"); primaryStage.setScene(scene); primaryStage.show(); } catch (PdfException e) { e.printStackTrace(); } } public static void main(String[] args) { launch(args); } } ``` ### 代码解释 - **依赖导入**:导入所需的 JavaFX 和 JPedal 类。 - **初始化解码器**:创建 `PdfDecoderFX` 对象并打开 PDF 文件。 - **获取页面图像**:使用 `getPageAsImage` 方法获取指定页面的图像,并使用 `ImageView` 显示。 - **提取文本内容**:使用 `extractPageText` 方法提取指定页面的文本内容,并使用 `TextArea` 显示。用户可以在 `TextArea` 中复制文本。 - **布局和场景设置**:使用 `VBox` 布局将图像和文本区域垂直排列,并创建场景和舞台显示。 ### 注意事项 - 请将 `"path/to/your/pdf/file.pdf"` 替换为实际的 PDF 文件路径。 - 确保 JavaFX 环境正确配置,特别是在 Java 11 及以上版本中,需要手动配置 JavaFX 模块。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

微微一笑满城空

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

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

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

打赏作者

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

抵扣说明:

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

余额充值