在JavaFX 11+中创建自定义纸张大小,可以通过以下步骤实现:
import javafx.print.Paper;
import javafx.print.Printer;
import javafx.print.PrinterJob;
import javafx.scene.transform.Scale;
public class CustomPaper {
public static void main(String[] args) {
// 创建自定义纸张大小
double widthInInches = 8.5;
double heightInInches = 11;
Paper customPaper = createCustomPaper(widthInInches, heightInInches);
// 创建打印任务
Printer printer = Printer.getDefaultPrinter();
PrinterJob printerJob = PrinterJob.createPrinterJob(printer);
// 设置打印纸张大小
printerJob.getJobSettings().setPageLayout(printer.createPageLayout(customPaper, Printer.MarginType.DEFAULT));
// 执行打印任务
if (printerJob != null) {
boolean success = printerJob.printPage(printNode);
if (success) {
printerJob.endJob();
}
}
}
private static Paper createCustomPaper(double widthInInches, double heightInInches) {
double widthInPoints = inchesToPoints(widthInInches);
double heightInPoints = inchesToPoints(heightInInches);
return Paper.custom(widthInPoints, heightInPoints, PaperUnit.POINTS);
}
private static double inchesToPoints(double inches) {
return inches * 72; // 1 inch = 72 points
}
}
createCustomPaper
方法来实现。该方法将英寸转换为点(1英寸=72点),并使用Paper.custom
方法创建自定义纸张。Printer.getDefaultPrinter
方法获取默认打印机,然后使用PrinterJob.createPrinterJob
方法创建打印任务。通过调用printerJob.getJobSettings().setPageLayout
方法设置打印纸张的布局,传入自定义的纸张对象和默认的边距类型。printerJob.printPage
方法打印指定的节点(printNode),并根据返回值判断打印是否成功。如果成功,调用printerJob.endJob
方法结束打印任务。这样,就可以在JavaFX 11+中创建自定义纸张大小并进行打印。请注意,以上代码仅为示例,实际应用中可能需要根据具体需求进行适当的修改。
推荐的腾讯云相关产品:腾讯云云服务器(CVM)和腾讯云云打印服务。腾讯云云服务器提供了高性能、可扩展的云计算服务,可用于部署和运行JavaFX应用程序。腾讯云云打印服务提供了便捷的打印解决方案,可用于将打印任务发送到云打印机。您可以通过访问腾讯云官网了解更多关于这些产品的详细信息和使用方法。
腾讯云云服务器(CVM)产品介绍链接:https://cloud.tencent.com/product/cvm 腾讯云云打印服务产品介绍链接:https://cloud.tencent.com/product/cps
领取专属 10元无门槛券
手把手带您无忧上云