我的字帖生成器开源啦!

技术博客 / 1508人浏览 / 0人评论

前人栽树,后人乘凉,本文仅做记录,原文链接:
https://juejin.cn/post/7118635049779462157?searchId=20240406094810B129A5CF436F29ED4E23

xxy-copybook
git地址我复制了一份,https://gitee.com/zsxslx/xxy-copybook

主要功能
1、支持定义字帖表格样式。田字格、横线、边框多种样式可自定义搭配使用。
2、支持扩展自定义字帖单元格样式。
3、支持拼音字帖。
4、自定义使用的字体。
5、文字过多时,可自动分页生成多页字帖。
6、多种使用样式,可以一字一行,也可以一行多字。
软件架构
1、字帖单元格使用装饰器模式设计,要实现自己的线段样式需要实现AbstractCellDecorator,要实现文字样式需要实现AbstractCellTextDecorator。
在cell.line中是已经实现的线段装饰,cell.text是已经实现的文字装饰。
2、字帖的生成使用建造者模式,CopybookDirector是建造者的导向器,要实现自己的模板需要实现AbstractCopybookBuilder。
3、核心样式的装饰器UML导图
image.png
4、所有类的UML导图
image.png
使用说明
大家可以将自己喜欢的字体放到resources/fonts文件夹内,因为版权问题,我这里不能提供字体了,大家自己收集吧。
希望尽快使用起来的小伙伴可以看一下这两个类:
1、CopybookTemplate用来设置字帖样式,包括字帖的背景色,默认的边线等。
2、CopybookData用来设置字帖数据,这里放置字帖上要显示的文字,拼音,字帖头、尾的内容。 一个基本的字帖生成代码:

//设置显示的文字
String text = "屈渊孟甫韩愈禹锡仲龚";
//字体名字
String fontName = "嗡阿吽-田英章钢笔楷书简";

CopybookTemplate.CopybookTemplateBuilder copybookTemplateBuilder = CopybookTemplate.builder()
        .emptyCellNum(2)
        .textLineStroke(StrokeForCell.LINE)
        //单元格使用一个边框+田字格样式。
        .textCellLineStyle(CollUtil.toList(LineStyle.BORDER, LineStyle.TIAN));
//给边框格一个加粗的边线
copybookTemplateBuilder.textLineStrokeMap(MapUtil
        .builder(LineStyle.BORDER.getValue(), StrokeForCell.LINE_BOLD)
        .build());
Font font = new Font(fontName, Font.PLAIN, 140);
copybookTemplateBuilder.font(font);
//设置模板数据
CopybookTemplate copybookTemplate = copybookTemplateBuilder.pagePadding(new Integer[]{10,10,10,200}).build();
CopybookData copybookData = CopybookData.builder()
        .author("Radium")
        .wordList(CollUtil.toList(text.split("")))
        .build();

BaseCopybook baseCopybook = new BaseCopybook(copybookTemplate, copybookData);
CopybookDirector director = new CopybookDirector(baseCopybook);
try {
    Copybook construct = director.buildCopybook();
    BufferedImage bufferedImage = construct.exportFirstImage();
    //输出图像
    ByteArrayOutputStream output = new ByteArrayOutputStream();
    ImageIO.write(bufferedImage, "png", output);
    FileUtil.writeBytes(output.toByteArray(),
            new File(outputPath+"construct.png"));
} catch (Exception e) {
    e.printStackTrace();
}

总体使用流程是这样的:
1、通过CopybookTemplate设置模板样式。
2、通过CopybookData设置模板数据。
3、使用模板的BaseCopybook来生成字帖。 更多使用方法可以查看test中的AppTest。

0 条评论

还没有人发表评论

发表评论 取消回复

记住我的信息,方便下次评论
有人回复时邮件通知我