如何在BeanShell脚本中获取jEdit主JTextArea以生成Isabelle理论文件截图?
解决Isabelle/jEdit理论文件导出为带排版高亮图片的问题
直接访问contentTextArea的BeanShell方案
无需修改jEdit代码,可通过jEdit内置API在BeanShell脚本中直接获取主文本区域:
- 获取当前激活的视图对象:
View view = jEdit.getActiveView(); - 从视图中提取编辑面板:
EditPane editPane = view.getEditPane(); - 获取对应的文本区域组件:
TextArea textArea = editPane.getTextArea();
拿到textArea后,结合图像绘制逻辑即可生成带排版和语法高亮的图片,完整示例脚本如下:
import javax.swing.*; import java.awt.*; import java.awt.image.BufferedImage; import java.io.File; import javax.imageio.ImageIO; // 获取当前活跃的文本编辑区域 View view = jEdit.getActiveView(); EditPane editPane = view.getEditPane(); TextArea textArea = editPane.getTextArea(); // 创建匹配文本区域尺寸的图片 int imgWidth = textArea.getWidth(); int imgHeight = textArea.getHeight(); BufferedImage outputImage = new BufferedImage(imgWidth, imgHeight, BufferedImage.TYPE_INT_RGB); // 将文本区域内容绘制到图片 Graphics2D g2d = outputImage.createGraphics(); textArea.paint(g2d); g2d.dispose(); // 保存图片到指定路径(替换为你的目标路径) File savePath = new File("/home/user/isabelle_theory.png"); ImageIO.write(outputImage, "png", savePath);
脚本调用方式
通过shell命令调用Isabelle/jEdit并执行脚本:
isabelle jedit -r /path/to/your/export_script.bsh
替代方案
如果上述方法存在兼容性问题,可尝试:
- 利用jEdit打印功能:将理论文件打印为PDF,再通过
convert等工具转成图片,需确保打印设置保留高亮格式。 - Isabelle文档导出命令:使用
isabelle document生成带格式的文档,再从中提取图片,该方式更适合批量处理纯内容格式,而非界面实时高亮样式。
内容的提问来源于stack exchange,提问作者Gergely
相关产品推荐
相关产品推荐

