xxy-コピーブック
導入
子供が小学校に入学したときは、書道をもっと練習できるように、コピーブックジェネレーターを手に入れたいと考えていました。父親の書き方が良くなかったため、子供たちの書き方をもっと美しく見せたいと考えていました。さまざまな理由から。 、子供は4年生でした。私はコピーブックジェネレーターを書き終えました。手遅れになることを願っています。
これはコピーブックによって生成されたコアクラスライブラリです。現在はオープンソースです。私のような友人にも役立つことを願っています。
私のBステーションのアドレス:space.bilibili.com/1159595523
ナゲッツのアドレス:juejin.cn/user/350569…
主な機能
- コピーブックテーブルのスタイルの定義をサポートします。さまざまなスタイルのフィールド、水平線、および境界線をカスタマイズして、一緒に使用できます。
- 拡張カスタムコピーブックセルスタイルをサポートします。
- 拼音のコピーブックがサポートされています。
- 使用するフォントをカスタマイズします。
- テキストが多すぎる場合は、ページングによって複数ページのコピーブックを自動的に生成できます。
- 1行または複数文字の1行でさまざまな使用スタイルを使用できます。
ソフトウェアアーキテクチャ
-
コピーブックセルはデコレータパターンを使用して設計されています。独自の線分スタイルを実装するには、AbstractCellDecoratorを実装する必要があり、テキストスタイルを実装するには、AbstractCellTextDecoratorを実装する必要があります。cell.lineは実装された線分装飾であり、cell.textは実装されたテキスト装飾です。
-
コピーブックの生成にはビルダーモードが使用されます。CopybookDirectorはビルダーのディレクターです。独自のテンプレートを実現するには、AbstractCopybookBuilderを実装する必要があります。
-
コアスタイルのデコレータUMLマップ
-
すべてのクラスのUMLマップ
使用説明書
お気に入りのフォントはresources/fontsフォルダーに入れることができます。著作権の問題により、ここではフォントを提供できませんので、ご自身で収集してください。
できるだけ早くそれを使用したい友人はこれらの2つのクラスを見ることができます:
- CopybookTemplateは、コピーブックの背景色、デフォルトの境界線など、コピーブックのスタイルを設定するために使用されます。
- 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();
}
全体的な使用プロセスは次のとおりです。
- CopybookTemplateを介してテンプレートスタイルを設定します。
- CopybookDataを介してテンプレートデータを設定します。
- テンプレートのBaseCopybookを使用してコピーブックを生成します。その他の使用方法については、テスト中のAppTestを参照してください。
参加して貢献する
個人的な余暇の仕事にはまだ多くの欠点があります。コードを提出してください。
- このリポジトリをフォークする
- 新しいFeat_xxxブランチ
- コードを送信
- 新しいプルリクエスト
例
- 基本的なコピーブック
- 拼音コピーブック
- コピーブックのヘッダーとフッターを設定します
- 自動マルチページコピーブック
- 最初のページ
- 2ページ目