Goodnotes 5 テンプレート生成Perlスクリプト 修正版
iPad miniでのGoodnotes5 描画エリア(複数タブ使用時)は、実寸で横120mm縦136mmです。その座標空間内の座標を指定してテンプレート生成出来るようにスクリプトを修正しました。
注意事項
Perlスクリプト
ドット用紙
#!/usr/bin/perl use utf8; # --------------------------------------------------------------------- # Template Create Script for Note Application # # Copyright (c) 2019 qunitama. All rights reserved. # --------------------------------------------------------------------- # --------------------------------------------------------------------- # --- 固定値 変更不要 # --------------------------------------------------------------------- $MM_PER_IN = 25.4; # 1インチは25.4mm # --------------------------------------------------------------------- # --- 出力PDFのDPIを指定 # --------------------------------------------------------------------- $DPI = 300; # --------------------------------------------------------------------- # --- 中間ファイル名や出力ファイル名を指定 # --- ユーザ環境に合わせて変更してください # --------------------------------------------------------------------- $FILE_WK1 = "wk_1.bmp"; $FILE_WK2 = "wk_2.bmp"; $FILE_WK3 = "wk_3.png"; $FILE_PDF = "GN_dot.pdf"; # --------------------------------------------------------------------- # --- アプリの用紙エリアの実寸をmmで記入 # --- 機種:iPad mini アプリ:Goodnotes 120x136 # --------------------------------------------------------------------- $PDF_X_MM = 120; #縦置き時の横幅 $PDF_Y_MM = 136; #縦置き時の縦幅 # --------------------------------------------------------------------- # --- 生成倍率を指定 実寸で生成すると線が太いので # --- 生成用紙を大きくする # --------------------------------------------------------------------- $BAIRITSU = 1.6; # --------------------------------------------------------------------- # --- 色,太さ,FONT 指定 # --------------------------------------------------------------------- $PAPER_COLOR = "#FAFBFB"; # 色定義 $COL_USU = "#9FA0A0"; # 薄目 $COL_KOI = "#544A47"; # 濃目 $COL_RED = "#d7003a"; # 赤 $COL_BLU = "#007bbb"; # 青 # 線幅定義 $WID_HOS = "1"; # 細 $WID_FUT = "3"; # 太 # FONTを指定 $FONT = "/cygdrive/c/Windows/Fonts/BIZ-UDGothicR.ttc"; # --------------------------------------------------------------------- # --- 描画ルーチン *基本的には変更不要 # --------------------------------------------------------------------- sub z { my ($mm) = @_; return $DPI / $MM_PER_IN * $mm * $BAIRITSU; } sub rew { $cmd = sprintf("mv %s %s",$FILE_WK2,$FILE_WK1); system($cmd); } sub draw_paper { $cmd = sprintf( "convert -size %dx%d xc:%s %s", z($PDF_X_MM),z($PDF_Y_MM), $PAPER_COLOR,$FILE_WK1); system($cmd); } sub draw_line { my ($x1,$y1,$x2,$y2,$col,$width) = @_; $cmd = sprintf( "convert -stroke xc:%s -strokewidth". " %d -draw 'line %d,%d %d,%d' %s %s", $col,$width,z($x1),z($y1), z($x2),z($y2), $FILE_WK1,$FILE_WK2); system($cmd); rew; } sub draw_tatesen { my ($x,$y,$takasa,$col,$width,$kankaku,$honsuu) = @_; for($i=0;$i<$honsuu;$i++){ draw_line( $x+$kankaku*$i,$y, #$x+$kankaku*$i,$y+$takasa-1, $x+$kankaku*$i,$y+$takasa, $col,$width); } } sub draw_yokosen { my ($x,$y,$haba,$col,$width,$kankaku,$honsuu) = @_; for($i=0;$i<$honsuu;$i++){ draw_line( $x,$y+$kankaku*$i, #$x+$haba-1,$y+$kankaku*$i, $x+$haba,$y+$kankaku*$i, $col,$width); } } sub draw_dot { my ($cx,$cy,$x,$y,$col) = @_; $cmd = sprintf( "convert -fill xc:%s ". "-draw 'circle %d,%d %d,%d' %s %s", $col,z($cx),z($cy),z($x),z($y), $FILE_WK1,$FILE_WK2); system($cmd); rew; } sub draw_text { my ($x,$y,$font,$col,$size,$text) = @_; $cmd = sprintf( "convert -font \"%s\" -fill xc:%s ". "-pointsize %d -draw ". "\"text %d,%d '%s'\" %s %s", $font,$col,z($size),z($x),z($y),$text, $FILE_WK1,$FILE_WK2); system($cmd); rew; } sub make_png { $cmd = sprintf( "convert %s %s",$FILE_WK1,$FILE_WK3); system($cmd); } sub make_pdf { $cmd = sprintf( "convert -density %d -geometry %dx%d %s %s", $DPI,z($PDF_X_MM),z($PDF_Y_MM), $FILE_WK3,$FILE_PDF); system($cmd); } # --------------------------------------------------------------------- # --- 用紙生成処理 ※ユーザ指定処理 # --------------------------------------------------------------------- $bs = 5; # 基準間隔 5mm # 用紙生成 draw_paper; # dot 描画 for($y=$bs;$y<=135;$y+=$bs){ for($x=$bs;$x<=115;$x+=$bs){ draw_dot( $x,$y,$x+0.15,$y, $COL_USU); } } # PNGに変換 make_png; # PDFに変換 make_pdf;
5mm方眼用紙
#!/usr/bin/perl use utf8; # --------------------------------------------------------------------- # Template Create Script for Note Application # # Copyright (c) 2019 qunitama. All rights reserved. # --------------------------------------------------------------------- # --------------------------------------------------------------------- # --- 固定値 変更不要 # --------------------------------------------------------------------- $MM_PER_IN = 25.4; # 1インチは25.4mm # --------------------------------------------------------------------- # --- 出力PDFのDPIを指定 # --------------------------------------------------------------------- $DPI = 300; # --------------------------------------------------------------------- # --- 中間ファイル名や出力ファイル名を指定 # --- ユーザ環境に合わせて変更してください # --------------------------------------------------------------------- $FILE_WK1 = "wk_1.bmp"; $FILE_WK2 = "wk_2.bmp"; $FILE_WK3 = "wk_3.png"; $FILE_PDF = "GN_grid.pdf"; # --------------------------------------------------------------------- # --- アプリの用紙エリアの実寸をmmで記入 # --- 機種:iPad mini アプリ:Goodnotes 120x136 # --------------------------------------------------------------------- $PDF_X_MM = 120; #縦置き時の横幅 $PDF_Y_MM = 136; #縦置き時の縦幅 # --------------------------------------------------------------------- # --- 生成倍率を指定 実寸で生成すると線が太いので # --- 生成用紙を大きくする # --------------------------------------------------------------------- $BAIRITSU = 1.6; # --------------------------------------------------------------------- # --- 色,太さ,FONT 指定 # --------------------------------------------------------------------- $PAPER_COLOR = "#FAFBFB"; # 色定義 $COL_USU = "#9FA0A0"; # 薄目 $COL_KOI = "#544A47"; # 濃目 $COL_RED = "#d7003a"; # 赤 $COL_BLU = "#007bbb"; # 青 # 線幅定義 $WID_HOS = "1"; # 細 $WID_FUT = "3"; # 太 # FONTを指定 $FONT = "/cygdrive/c/Windows/Fonts/BIZ-UDGothicR.ttc"; # --------------------------------------------------------------------- # --- 描画ルーチン *基本的には変更不要 # --------------------------------------------------------------------- sub z { my ($mm) = @_; return $DPI / $MM_PER_IN * $mm * $BAIRITSU; } sub rew { $cmd = sprintf("mv %s %s",$FILE_WK2,$FILE_WK1); system($cmd); } sub draw_paper { $cmd = sprintf( "convert -size %dx%d xc:%s %s", z($PDF_X_MM),z($PDF_Y_MM), $PAPER_COLOR,$FILE_WK1); system($cmd); } sub draw_line { my ($x1,$y1,$x2,$y2,$col,$width) = @_; $cmd = sprintf( "convert -stroke xc:%s -strokewidth". " %d -draw 'line %d,%d %d,%d' %s %s", $col,$width,z($x1),z($y1), z($x2),z($y2), $FILE_WK1,$FILE_WK2); system($cmd); rew; } sub draw_tatesen { my ($x,$y,$takasa,$col,$width,$kankaku,$honsuu) = @_; for($i=0;$i<$honsuu;$i++){ draw_line( $x+$kankaku*$i,$y, #$x+$kankaku*$i,$y+$takasa-1, $x+$kankaku*$i,$y+$takasa, $col,$width); } } sub draw_yokosen { my ($x,$y,$haba,$col,$width,$kankaku,$honsuu) = @_; for($i=0;$i<$honsuu;$i++){ draw_line( $x,$y+$kankaku*$i, #$x+$haba-1,$y+$kankaku*$i, $x+$haba,$y+$kankaku*$i, $col,$width); } } sub draw_dot { my ($cx,$cy,$x,$y,$col) = @_; $cmd = sprintf( "convert -fill xc:%s ". "-draw 'circle %d,%d %d,%d' %s %s", $col,z($cx),z($cy),z($x),z($y), $FILE_WK1,$FILE_WK2); system($cmd); rew; } sub draw_text { my ($x,$y,$font,$col,$size,$text) = @_; $cmd = sprintf( "convert -font \"%s\" -fill xc:%s ". "-pointsize %d -draw ". "\"text %d,%d '%s'\" %s %s", $font,$col,z($size),z($x),z($y),$text, $FILE_WK1,$FILE_WK2); system($cmd); rew; } sub make_png { $cmd = sprintf( "convert %s %s",$FILE_WK1,$FILE_WK3); system($cmd); } sub make_pdf { $cmd = sprintf( "convert -density %d -geometry %dx%d %s %s", $DPI,z($PDF_X_MM),z($PDF_Y_MM), $FILE_WK3,$FILE_PDF); system($cmd); } # --------------------------------------------------------------------- # --- 用紙生成処理 ※ユーザ指定処理 # --------------------------------------------------------------------- $bs = 5; # 基準間隔 5mm # 用紙生成 draw_paper; # 罫線描画(縦線) draw_tatesen( $bs,0,$PDF_Y_MM,$COL_USU,$WID_HOS,$bs,23); # 罫線描画(横線) draw_yokosen( 0,$bs,$PDF_X_MM,$COL_USU,$WID_HOS,$bs,27); # PNGに変換 make_png; # PDFに変換 make_pdf;
グラフ用紙
#!/usr/bin/perl use utf8; # --------------------------------------------------------------------- # Template Create Script for Note Application # # Copyright (c) 2019 qunitama. All rights reserved. # --------------------------------------------------------------------- # --------------------------------------------------------------------- # --- 固定値 変更不要 # --------------------------------------------------------------------- $MM_PER_IN = 25.4; # 1インチは25.4mm # --------------------------------------------------------------------- # --- 出力PDFのDPIを指定 # --------------------------------------------------------------------- $DPI = 300; # --------------------------------------------------------------------- # --- 中間ファイル名や出力ファイル名を指定 # --- ユーザ環境に合わせて変更してください # --------------------------------------------------------------------- $FILE_WK1 = "wk_1.bmp"; $FILE_WK2 = "wk_2.bmp"; $FILE_WK3 = "wk_3.png"; $FILE_PDF = "GN_graph.pdf"; # --------------------------------------------------------------------- # --- アプリの用紙エリアの実寸をmmで記入 # --- 機種:iPad mini アプリ:Goodnotes 120x136 # --------------------------------------------------------------------- $PDF_X_MM = 120; #縦置き時の横幅 $PDF_Y_MM = 136; #縦置き時の縦幅 # --------------------------------------------------------------------- # --- 生成倍率を指定 実寸で生成すると線が太いので # --- 生成用紙を大きくする # --------------------------------------------------------------------- $BAIRITSU = 1.6; # --------------------------------------------------------------------- # --- 色,太さ,FONT 指定 # --------------------------------------------------------------------- $PAPER_COLOR = "#FAFBFB"; # 色定義 $COL_USU = "#9FA0A0"; # 薄目 $COL_KOI = "#544A47"; # 濃目 $COL_RED = "#d7003a"; # 赤 $COL_BLU = "#007bbb"; # 青 # 線幅定義 $WID_HOS = "1"; # 細 $WID_CHU = "2"; # 中 $WID_FUT = "3"; # 太 # FONTを指定 $FONT = "/cygdrive/c/Windows/Fonts/BIZ-UDGothicR.ttc"; # --------------------------------------------------------------------- # --- 描画ルーチン *基本的には変更不要 # --------------------------------------------------------------------- sub z { my ($mm) = @_; return $DPI / $MM_PER_IN * $mm * $BAIRITSU; } sub rew { $cmd = sprintf("mv %s %s",$FILE_WK2,$FILE_WK1); system($cmd); } sub draw_paper { $cmd = sprintf( "convert -size %dx%d xc:%s %s", z($PDF_X_MM),z($PDF_Y_MM), $PAPER_COLOR,$FILE_WK1); system($cmd); } sub draw_line { my ($x1,$y1,$x2,$y2,$col,$width) = @_; $cmd = sprintf( "convert -stroke xc:%s -strokewidth". " %d -draw 'line %d,%d %d,%d' %s %s", $col,$width,z($x1),z($y1), z($x2),z($y2), $FILE_WK1,$FILE_WK2); system($cmd); rew; } sub draw_tatesen { my ($x,$y,$takasa,$col,$width,$kankaku,$honsuu) = @_; for($i=0;$i<$honsuu;$i++){ draw_line( $x+$kankaku*$i,$y, #$x+$kankaku*$i,$y+$takasa-1, $x+$kankaku*$i,$y+$takasa, $col,$width); } } sub draw_yokosen { my ($x,$y,$haba,$col,$width,$kankaku,$honsuu) = @_; for($i=0;$i<$honsuu;$i++){ draw_line( $x,$y+$kankaku*$i, #$x+$haba-1,$y+$kankaku*$i, $x+$haba,$y+$kankaku*$i, $col,$width); } } sub draw_dot { my ($cx,$cy,$x,$y,$col) = @_; $cmd = sprintf( "convert -fill xc:%s ". "-draw 'circle %d,%d %d,%d' %s %s", $col,z($cx),z($cy),z($x),z($y), $FILE_WK1,$FILE_WK2); system($cmd); rew; } sub draw_text { my ($x,$y,$font,$col,$size,$text) = @_; $cmd = sprintf( "convert -font \"%s\" -fill xc:%s ". "-pointsize %d -draw ". "\"text %d,%d '%s'\" %s %s", $font,$col,z($size),z($x),z($y),$text, $FILE_WK1,$FILE_WK2); system($cmd); rew; } sub make_png { $cmd = sprintf( "convert %s %s",$FILE_WK1,$FILE_WK3); system($cmd); } sub make_pdf { $cmd = sprintf( "convert -density %d -geometry %dx%d %s %s", $DPI,z($PDF_X_MM),z($PDF_Y_MM), $FILE_WK3,$FILE_PDF); system($cmd); } # --------------------------------------------------------------------- # --- 用紙生成処理 ※ユーザ指定処理 # --------------------------------------------------------------------- $bs = 5; # 基準間隔 5mm # 用紙生成 draw_paper; # 罫線描画(縦線) draw_tatesen( 1,0,$PDF_Y_MM,$COL_USU,$WID_HOS,1,119); draw_tatesen( $bs,0,$PDF_Y_MM,$COL_USU,$WID_CHU,$bs,23); # 罫線描画(横線) draw_yokosen( 0,1,$PDF_X_MM,$COL_USU,$WID_HOS,1,135); draw_yokosen( 0,$bs,$PDF_X_MM,$COL_USU,$WID_CHU,$bs,27); # PNGに変換 make_png; # PDFに変換 make_pdf;
Weekly Schedule
#!/usr/bin/perl use utf8; # --------------------------------------------------------------------- # Template Create Script for Note Application # # Copyright (c) 2019 qunitama. All rights reserved. # --------------------------------------------------------------------- # --------------------------------------------------------------------- # --- 固定値 変更不要 # --------------------------------------------------------------------- $MM_PER_IN = 25.4; # 1インチは25.4mm # --------------------------------------------------------------------- # --- 出力PDFのDPIを指定 # --------------------------------------------------------------------- $DPI = 300; # --------------------------------------------------------------------- # --- 中間ファイル名や出力ファイル名を指定 # --- ユーザ環境に合わせて変更してください # --------------------------------------------------------------------- $FILE_WK1 = "wk_1.bmp"; $FILE_WK2 = "wk_2.bmp"; $FILE_WK3 = "wk_3.png"; $FILE_PDF = "GN_weekly.pdf"; # --------------------------------------------------------------------- # --- アプリの用紙エリアの実寸をmmで記入 # --- 機種:iPad mini アプリ:Goodnotes 120x136 # --------------------------------------------------------------------- $PDF_X_MM = 120; #縦置き時の横幅 $PDF_Y_MM = 136; #縦置き時の縦幅 # --------------------------------------------------------------------- # --- 生成倍率を指定 実寸で生成すると線が太いので # --- 生成用紙を大きくする # --------------------------------------------------------------------- $BAIRITSU = 1.6; # --------------------------------------------------------------------- # --- 色,太さ,FONT 指定 # --------------------------------------------------------------------- $PAPER_COLOR = "#FAFBFB"; # 色定義 $COL_USU = "#9FA0A0"; # 薄目 $COL_KOI = "#544A47"; # 濃目 $COL_RED = "#d7003a"; # 赤 $COL_BLU = "#007bbb"; # 青 # 線幅定義 $WID_HOS = "1"; # 細 $WID_FUT = "3"; # 太 # FONTを指定 $FONT = "/cygdrive/c/Windows/Fonts/BIZ-UDGothicR.ttc"; # --------------------------------------------------------------------- # --- 描画ルーチン *基本的には変更不要 # --------------------------------------------------------------------- sub z { my ($mm) = @_; return $DPI / $MM_PER_IN * $mm * $BAIRITSU; } sub rew { $cmd = sprintf("mv %s %s",$FILE_WK2,$FILE_WK1); system($cmd); } sub draw_paper { $cmd = sprintf( "convert -size %dx%d xc:%s %s", z($PDF_X_MM),z($PDF_Y_MM), $PAPER_COLOR,$FILE_WK1); system($cmd); } sub draw_line { my ($x1,$y1,$x2,$y2,$col,$width) = @_; $cmd = sprintf( "convert -stroke xc:%s -strokewidth". " %d -draw 'line %d,%d %d,%d' %s %s", $col,$width,z($x1),z($y1), z($x2),z($y2), $FILE_WK1,$FILE_WK2); system($cmd); rew; } sub draw_tatesen { my ($x,$y,$takasa,$col,$width,$kankaku,$honsuu) = @_; for($i=0;$i<$honsuu;$i++){ draw_line( $x+$kankaku*$i,$y, #$x+$kankaku*$i,$y+$takasa-1, $x+$kankaku*$i,$y+$takasa, $col,$width); } } sub draw_yokosen { my ($x,$y,$haba,$col,$width,$kankaku,$honsuu) = @_; for($i=0;$i<$honsuu;$i++){ draw_line( $x,$y+$kankaku*$i, #$x+$haba-1,$y+$kankaku*$i, $x+$haba,$y+$kankaku*$i, $col,$width); } } sub draw_dot { my ($cx,$cy,$x,$y,$col) = @_; $cmd = sprintf( "convert -fill xc:%s ". "-draw 'circle %d,%d %d,%d' %s %s", $col,z($cx),z($cy),z($x),z($y), $FILE_WK1,$FILE_WK2); system($cmd); rew; } sub draw_text { my ($x,$y,$font,$col,$size,$text) = @_; $cmd = sprintf( "convert -font \"%s\" -fill xc:%s ". "-pointsize %d -draw ". "\"text %d,%d '%s'\" %s %s", $font,$col,z($size),z($x),z($y),$text, $FILE_WK1,$FILE_WK2); system($cmd); rew; } sub make_png { $cmd = sprintf( "convert %s %s",$FILE_WK1,$FILE_WK3); system($cmd); } sub make_pdf { $cmd = sprintf( "convert -density %d -geometry %dx%d %s %s", $DPI,z($PDF_X_MM),z($PDF_Y_MM), $FILE_WK3,$FILE_PDF); system($cmd); } # --------------------------------------------------------------------- # --- 用紙生成処理 ※ユーザ指定処理 # --------------------------------------------------------------------- $bs = 5; # 基準間隔 5mm # 用紙生成 draw_paper; # 罫線描画(縦線) draw_tatesen( $bs,0,$PDF_Y_MM,$COL_USU,$WID_HOS,$bs,23); # 罫線描画(横線) draw_yokosen( 0,$bs,$PDF_X_MM,$COL_USU,$WID_HOS,$bs,27); # 曜日区切り線描画 draw_yokosen( 0,10,$PDF_X_MM,$COL_USU,$WID_FUT,$bs*3,8); # 曜日描画 draw_text(11, 24,$FONT,$COL_KOI,3,"月"); draw_text(11, 39,$FONT,$COL_KOI,3,"火"); draw_text(11, 54,$FONT,$COL_KOI,3,"水"); draw_text(11, 69,$FONT,$COL_KOI,3,"木"); draw_text(11, 84,$FONT,$COL_KOI,3,"金"); draw_text(11, 99,$FONT,$COL_BLU,3,"土"); draw_text(11,114,$FONT,$COL_RED,3,"日"); # 左から15mmの位置に縦線を描画 draw_tatesen( 15,10,105,$COL_USU,$WID_FUT,0,1); # dot 描画 $y = 10; for($i=0;$i<7;$i++){ $x = 25; for($j=0;$j<10;$j++){ draw_dot( $x-0.1,$y+1,$x+0.3,$y+1, $COL_KOI); $x+=10; } $y+=15; } # 9 10 11 ... 18 描画 $y = 10; for($i=0;$i<7;$i++){ $x = 20; for($j=0;$j<10;$j++){ if ($j==0){ $wkx=$x-0.5; # 9は1桁なので少し右に }else{ $wkx=$x-1; } draw_text( $wkx,$y+2,$FONT, $COL_KOI,2,$j+9); $x+=10; } $y+=15; } # PNGに変換 make_png; # PDFに変換 make_pdf;
完成したPDF
完成したPDFを置いておきますので、ご自由にお使い下さい。