我目前正在使用PDFBox,我正在尝试打开PDF,以便用户可以用鼠标选择要裁剪的区域,我不知道如何继续制作PDF查看器
PDPage#setCropBox(PDRectangle cropBox)
https://pdfbox.apache.org/docs/2.0.2/javadocs/org/apache/pdfbox/pdmodel/PDPage.html#setCropBox(org.apache.pdfbox.pdmodel.common.PDRectangle)https://pdfbox.apache.org/docs/2.0.2/javadocs/org/apache/pdfbox/pdmodel/common/PDRectangle.html
这里我唯一缺少的是用户如何决定要裁剪到哪一点(我正在考虑鼠标选择
package uk.mushow.pdftoexcel;
import javafx.application.Application;
import javafx.geometry.Insets;
import javafx.scene.Scene;
import javafx.scene.control.Button;
import javafx.scene.layout.GridPane;
import javafx.scene.layout.Pane;
import javafx.scene.layout.VBox;
import javafx.stage.FileChooser;
import javafx.stage.Stage;
import org.apache.pdfbox.pdmodel.PDDocument;
import org.apache.pdfbox.pdmodel.PDPage;
import java.io.File;
import java.io.IOException;
public class PDFToExcel extends Application {
public static void main(String[] args) {
launch();
}
@Override
public void start(final Stage stage) {
stage.setTitle("PDF Test");
final FileChooser fileChooser = new FileChooser();
final Button openButton = new Button("Select pdf");
openButton.setOnAction(event -> {
configureFileChooser(fileChooser);
File file = fileChooser.showOpenDialog(stage);
if (file != null) {
try {
openFile(file);
} catch (IOException e) {
e.printStackTrace();
}
}
});
final GridPane inputGridPane = new GridPane();
GridPane.setConstraints(openButton, 0, 1);
inputGridPane.setHgap(6);
inputGridPane.setVgap(6);
inputGridPane.getChildren().add(openButton);
final Pane rootGroup = new VBox(60);
rootGroup.getChildren().add(inputGridPane);
rootGroup.setPadding(new Insets(60, 60, 60, 60));
stage.setScene(new Scene(rootGroup));
stage.show();
}
private void configureFileChooser(final FileChooser fileChooser) {
fileChooser.setTitle("pdf selector");
fileChooser.getExtensionFilters().add(new FileChooser.ExtensionFilter("PDF", "*.pdf"));
}
private void openFile(File file) throws IOException {
PDDocument pdDocument = PDDocument.load(file);
//This is where I don't know how to handle the file
PDPage pdPage = pdDocument.getPage(0);
//Need the user to select his own cropbox but can't be just values from his head otherwise it wouldn't be accurate);
}
}
谢啦!
编辑:添加的图像
用户如何知道选择该绿色矩形的坐标?
在大多数pdf视图/注释器中获取坐标的最佳方法是添加高亮显示。这通常会提供一些用户反馈,因此这个重缩放示例的左上角距离左侧45 mm,距离顶部111.7mm(然而,这并不是全图,因为实际单位已转换为mm,所以您需要将高光数据导出到不同的单位集,不同的查看器可能会使用不同的单位集。两者都是正确的,但只是通过不同的输出显示值。
你需要“摆平”这些差异,导出评论通常可以做到这一点,然而数学可能是一个挑战,因为它是在PDF页面坐标中完成的。
"rect": [
227.495148,
351.695496,
386.449585,
430.445496
],
"subtype": "Popup",
"annotationType": 16,
"parentType": "Square",
"parentId": "6R",
"parentRect": [
128.322571,
24.175232,
210.179276,
485.779327
],
您将需要使用所选的库进行实验,以确定哪种库最简单,就我个人而言,我希望使用milking命令行实用程序来为我完成数学和文本输出。
问题内容: 我想将新的Jenkinsfile用于新工作。 我在单独的存储库中有jenkinsfile: 我在bash中通过git ls-remote从另一个gitlab存储库获得分支。然后将它们存储在变量中:branch1,branch2,brach3…。 然后我想在用户输入选择中使用这些变量 然后,我将使用git部署选定的分支。 问题是我无法在用户选择的变量中使用它。 我只需要让用户从另一个gi
我想让程序根据我的扫描仪输入从ArrayList中进行选择。比如,我写早餐和甜食,它必须随机列出早餐甜食,并打印随机索引。 我还在学习Java,我只是在玩,并试图编码小项目来训练它。 下面是我已经写过的课程: 我是否可以将列表存储在变量中,可能是这样的: 我知道很难理解我,但英语不是我的主要语言,希望它能被理解。
我是JavaFX的新手,我似乎找不到如何做到这一点。 我在Vbox中有一个ListView,我用一个可见的字符串列表填充它。我已经将ListView的SelectionMode设置为MULTIPLE,这允许我在按住Ctrl或Shift键的同时选择多个项目。 我希望能够单击一行并向下拖动鼠标并选择多行,但我不知道该怎么做。我已经尝试了几次搜索,似乎只找到了拖放,这不是我需要的。
我正在实现一个游戏,我想让玩家点击一个特定的视图。 我希望我的控制线程等到我得到一个值回来(我已经单击了视图并处理了结果)。目前,我正在通过创建一个线程、运行一个要求它们单击的方法来执行此操作,然后进入一个当鼠标单击事件更改在time循环中使用的变量时终止的time循环。 我正在写一个游戏,其中我有一个线程不断接收事件。对于一个特定事件,我想提示用户做出响应,但要做到这一点,我需要使用JavaFX
在ListView中,我可以按下< kbd>Ctrl Shift并单击项目进行选择。但是,我想拖动鼠标来选择项目(如DataGridView)。我尝试了下面的代码,我遇到了这样的问题: 我的代码:
问题内容: 我从bootswatch下载了主题,并试图允许用户切换主题。切换主题后,所有引导CSS都会暂时消失,直到加载新主题为止。在加载CSS之前如何防止更改,或者在加载新主题之前切换回默认主题? index.ejs(在头) 选拔 索引控制器 选择控制器 任何帮助表示赞赏!谢谢 问题答案: 我认为这不是AngularJS的问题。我认为您的方法应该有所不同。 据我所知,主题功能通常按以下方式实现。