私のコピーブックジェネレーターはオープンソースです!

xxy-コピーブック

導入

子供が小学校に入学したときは、書道をもっと練習できるように、コピーブックジェネレーターを手に入れたいと考えていました。父親の書き方が良くなかったため、子供たちの書き方をもっと美しく見せたいと考えていました。さまざまな理由から。 、子供は4年生でした。私はコピーブックジェネレーターを書き終えました。手遅れになることを願っています。
これはコピーブックによって生成されたコアクラスライブラリです。現在はオープンソースです。私のような友人にも役立つことを願っています。
私のBステーションのアドレス:space.bilibili.com/1159595523
ナゲッツのアドレス:juejin.cn/user/350569…

主な機能

  • コピーブックテーブルのスタイルの定義をサポートします。さまざまなスタイルのフィールド、水平線、および境界線をカスタマイズして、一緒に使用できます。
  • 拡張カスタムコピーブックセルスタイルをサポートします。
  • 拼音のコピーブックがサポートされています。
  • 使用するフォントをカスタマイズします。
  • テキストが多すぎる場合は、ページングによって複数ページのコピーブックを自動的に生成できます。
  • 1行または複数文字の1行でさまざまな使用スタイルを使用できます。

ソフトウェアアーキテクチャ

  • コピーブックセルはデコレータパターンを使用して設計されています。独自の線分スタイルを実装するには、AbstractCellDecoratorを実装する必要があり、テキストスタイルを実装するには、AbstractCellTextDecoratorを実装する必要があります。cell.lineは実装された線分装飾であり、cell.textは実装されたテキスト装飾です。

  • コピーブックの生成にはビルダーモードが使用されます。CopybookDirectorはビルダーのディレクターです。独自のテンプレートを実現するには、AbstractCopybookBuilderを実装する必要があります。

  • コアスタイルのデコレータUMLマップ1657432805444-ebb79f40-a413-4f7f-bc1d-8e71e13287a3.png

  • すべてのクラスのUMLマップ1657432965905-df5b05c8-74d1-425b-92c3-82d58afe049a.png

使用説明書

お気に入りのフォントは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();
}

全体的な使用プロセスは次のとおりです。

  1. CopybookTemplateを介してテンプレートスタイルを設定します。
  2. CopybookDataを介してテンプレートデータを設定します。
  3. テンプレートのBaseCopybookを使用してコピーブックを生成します。その他の使用方法については、テスト中のAppTestを参照してください。

参加して貢献する

個人的な余暇の仕事にはまだ多くの欠点があります。コードを提出してください。

  1. このリポジトリをフォークする
  2. 新しいFeat_xxxブランチ
  3. コードを送信
  4. 新しいプルリクエスト

  • 基本的なコピーブックConstruct.png
  • 拼音コピーブックConstructPinyin0.png
  • コピーブックのヘッダーとフッターを設定しますConstructHeaderAndFooter0.png
  • 自動マルチページコピーブック
    • 最初のページConstructMore0.png
    • 2ページ目ConstructMore1.png

おすすめ

転載: juejin.im/post/7118635049779462157