- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我的 JavaFX 程序准备并打印出一组 VBox。
这是 ModPrintCycle。这是提供打印选项的窗口
public PrintCycle data;
//PrintCycle is a HashMap of VBoxes containing all the details
PrinterJob pj;
ChoiceBox<String> cbxPrinters = new ChoiceBox<String>();
ArrayList<Printer> arrPrinters = new ArrayList<Printer>();
//util.say just pops out a messagebox attached to ModPrintCycle.
public void printAll(ArrayList<String> pageList){
if(cbxPrinters.getSelectionModel().getSelectedIndex() >=0){
if (data.tables.size() > 0){
Printer curP = Printer.getDefaultPrinter();
if(arrPrinters.size() > 0 ){
curP = arrPrinters.get(cbxPrinters.getSelectionModel().getSelectedIndex());
}
try{
pj = PrinterJob.createPrinterJob(curP);
PageLayout pp = curP.createPageLayout(Paper.LEGAL, PageOrientation.PORTRAIT, MarginType.DEFAULT);
PageLayout pl = curP.createPageLayout(Paper.LEGAL, PageOrientation.LANDSCAPE, MarginType.DEFAULT);
for(String p : pageList){
Printable pt = data.tables.get(p);
pt.scaleToFit();
if(pt.isLandscape()){
pj.printPage(pl,pt);
}
else{
pj.printPage(pp,pt);
}
}
pj.endJob();
}catch(Exception e){
util.say(ModPrintCycle.this, "Error on Print");
}
}else{
util.say(ModPrintCycle.this, "Nothing to print");
}
}
else{
util.say(ModPrintCycle.this, "No Printer Selected");
}
}
打印机已安装并设置为默认打印机,我的程序检测到它。但是当我打印时,没有错误弹出,打印机也没有收到任何作业。
我确定我的程序之前运行良好(Lubuntu 15.10,32 位)。但是现在,我将它转移到另一台计算机上。 Lubuntu 15.10,64 位。我安装了 openjfx 和 openjdk 版本“1.8.0_66-internal”。
我该怎么做才能找出它不打印的原因?
尝试制作较小的打印作业,但效果相同。
Button testPrint = new Button("Test Print");
testPrint.setOnAction(new EventHandler<ActionEvent>(){
@Override
public void handle(ActionEvent arg0) {
try{
Printer p = Printer.getDefaultPrinter();
PrinterJob pj = PrinterJob.createPrinterJob(p);
//util.say(ModShortcuts.this, "Print: " + pj.getJobStatus());
Boolean k = pj.printPage(p.createPageLayout(Paper.LEGAL,PageOrientation.PORTRAIT,MarginType.DEFAULT), new Text("Hey"));
//util.password(); //reused for a showAndWait() dialog
//util.say(ModShortcuts.this, "Print: " + pj.getJobStatus());
//util.say(ModShortcuts.this, "attempted Print using: " + pj.getPrinter().getName());
if(k){
//util.say(ModShortcuts.this, "Print: " + pj.getJobStatus());
pj.endJob();
//util.say(ModShortcuts.this, "Print: " + pj.getJobStatus());
}
}catch(Exception e){
e.printStackTrace();
}
}
});
vbox.getChildren().add(testPrint);
取消注释,输出为
Print: Not Printing
Print: Printing
attempted Print using: AstinePrinter
Print: Printing
Print: Done
AstinePrinter 是我的打印机的名称。
编辑:使用
sudo add-apt-repository ppa:webupd8team/java
sudo apt-get update
sudo apt-get install oracle-java8-installer
我安装了Oracle Java 8,还是一样的问题。
编辑:还有 Oracle Java 7。
编辑:
尝试禁用防火墙,以防是端口问题
sudo ufw disable
仍然没有。
最佳答案
我发现了一个叫做 CUPS4J 的东西,它让我可以绕过 Java 在 64 位 Ubuntu 中尝试访问 CUPS 时遇到的问题。它使用字节数组打印出来,幸运的是,JavaFX 有一种方法可以对所选节点进行快照。
有点模糊,但已经足够好了。 注意:我不是专家,我不知道为什么需要这样做。但这样做让我可以毫无错误地使用 CUPS4J,所以它一定是正确的。
cups4j
,因为存在必须修复的依赖项。将其导入您的项目。编辑:之所以需要以下内容,是因为不知何故,我的包没有随附 org.slf4j
。如果您的类路径表明您拥有它,请跳过这些步骤。
接下来,对于那里的每个类,Logger
的所有实例(cAsEsEnSiTiVe) 应替换为 Log
,并修复您的导入 (Ctrl+Shift+O)。这将建议 Log
的版本,并且 LogFactory
将被自动检测。我的导入路径是 org.apache.commons.logging.*
最后,在库下的构建路径中删除 org.slf4j
的库依赖项。
(我确定使用 Runnable Jar 没问题,但我就是这样做的,因为使用 Runnable Jar 会出错)
这是我对打印功能所做的简化。
private void print(Region node){
//Make the image with the proper sizes
WritableImage wi = new WritableImage(
(int) Math.round(Math.ceil(node.getWidth())),
(int) Math.round(Math.ceil(node.getHeight())));
//shoot the image
wi = node.snapshot(new SnapshotParameters(), wi);
//write the image into a readable context
ByteArrayOutputStream out = new ByteArrayOutputStream();
try{
ImageIO.write(SwingFXUtils.fromFXImage(wi, null), "png", out);
}catch(Exception e){
System.out.println("Error with SnapShot function");
}
//Get your printer
CupsClient cc = new CupsClient();
CupsPrinter cp = cc.getDefaultPrinter();
//print the readable context
cp.print(new PrintJob.Builder(out.toByteArray()).build());
//unlike PrinterJob, you do not need to end it.
}
我不确定,但我在 CUPS4J 论坛上看到错误报告说多个页面存在问题,但我还没有遇到过。
如果有人有更好的答案,欢迎补充。但到目前为止,这对我有用。
关于JavaFX (OpenJFX) 不让我打印,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36393305/
我的 JavaFX 程序准备并打印出一组 VBox。 这是 ModPrintCycle。这是提供打印选项的窗口 public PrintCycle data; //PrintCycle is
我正在使用 Linux 并尝试从 Oracle 的 JDK 切换到 OpenJDK 和 OpenJFX,但我在使用 JavaFX 应用程序时遇到了严重的问题。 以这个简单的程序为例: import j
我即将利用 Scala 和 JavaFX/OpenJFX 启动一个新的 GUI 项目。 上次我参与时,Java 8 是最先进的,JavaFX 与 JDK 和 JRE 集成,Scala 使用 JDK 8
我正在尝试安装最新版本的 BlueJ,它需要 JDK 11 和 OpenJFX。我现在已经从 Java 8 更新到 11,但我找不到实际安装 OpenJFX 的方法。我尝试检查 Open JFX 的版
我下载了存档 openjfx-11-ea+13_windows-x64_bin-sdk 和 OpenJDK。然后我创建一个 JavaFX 应用程序项目并在 Intellij IDEA (1.8.3)
我想使用特定版本的 openjfx,所以我使用命令下载它 sudo apt install openjfx=8u161-b12-1ubuntu2 但是 intellij idea 似乎找不到这个文件,
我正在尝试从 openjfx 源构建 JFX 场景生成器,但我找不到有效的操作方法或清晰的文档,我已经阅读了官方的 openjfx 说明,该说明不是针对场景生成器的,而是针对整个 sdk 的, 所以我
我安装了 OpenJDK 11 和 OpenJFX 11,并设法构建并运行了 JavaFX 应用程序。但是,我只能在命令行中添加 --module-path 和 --add-modules 参数后才能
我想知道openjfx是否合并到OpenJDK中,如果没有,我在哪里可以找到openjfx的ppa链接? 谢谢 最佳答案 OpenJFX 和 OpenJDK 是两个独立的项目,因此不会合并。 至于 P
我正在尝试在我的笔记本电脑上构建JavaFX sceneBuilder,我已经从 OpenJFx 项目下载了源代码并成功构建了 SDK,但是在场景构建器构建过程中我遇到了以下错误,我有点困惑,因为我完
我想为 Windows x86 arch 构建我的 JavaFX 应用程序。所以我下载了 Adopt OpenJdk 32-bit build 并用它来创建 Java Runtime Image。当我
我正在尝试在带有 openjdk 11 的 Netbeans 11 上使用 Maven 运行一个简单的 java fx 示例。我遵循了 OpenJfx tutorial直至将 JavaFx 创建为全局
我尝试在 official doc 之后创建一个 JavaFX maven 项目(使用 Maven 的 IntelliJ 章,非模块化项目)。我按照概述将 archtype artifact id 替
我尝试使用 OpenJFX 模块和 Maven 启动一个新项目。我关注的是:https://openjfx.io/openjfx-docs/ (转到 JavaFX with Maven -> Modu
我正在将我的项目转换为使用来自 Adoptopenjdk 的 openjdk 8...我知道 OpenJDK 不再携带 javafx。因此,我将 org.openjfx.javafx 设置为项目的依赖
我目前正在使用 OpenJDK 11 和 OpenJFX 构建应用程序。它编译得很好,可以启动,但是没有标题栏,如果我点击靠近应用程序的边缘,它会注册为点击它后面的任何窗口。 我正在使用 Intell
我正在阅读这个问题:Action Buttons css style in JavaFX ControlFX dialog , 以了解是否可以根据样式更改 JavaFX 警报对话框。 答案很好,但我想
SwingNode 在使用 Spring Boot、OpenJFX 和 Maven 的应用程序中导致链接错误 我通读了有关此问题的帖子,尝试按照他们的建议进行操作(请参阅下面的代码),但无法解决我的问
JavaFXpackager 似乎在 openjdk/openjfx 11 中不可用。 我想用它创建二进制 CSS (BSS)。 https://docs.oracle.com/javase/8/do
有谁知道是否有办法在 Eclipse 工作区中使用 JavaFX 模块?我有一个 OSGi-maven 多模块化应用程序。 到目前为止,我已经尝试了几件事。 下载 JavaFX SDK 并将 jar
我是一名优秀的程序员,十分优秀!