Révision | 61 (tree) |
---|---|
l'heure | 2020-10-05 14:23:03 |
Auteur | hirukawa_ryo |
* aoiro 0.7.2
仕訳帳・総勘定元帳・損益計算書・貸借対照表・社員資本等変動計算書のPDF出力に使用するフォントローダーを外部指定できるようにしました。
PDF出力するwriteToメソッドに引数OutputStreamを指定できるようにしました。
@@ -32,8 +32,6 @@ | ||
32 | 32 | |
33 | 33 | public class Main { |
34 | 34 | |
35 | - public static FontLoader fontLoader; | |
36 | - | |
37 | 35 | public static void main(String[] args) { |
38 | 36 | |
39 | 37 | System.setProperty("org.apache.commons.logging.Log", "org.apache.commons.logging.impl.NoOpLog"); |
@@ -156,16 +154,17 @@ | ||
156 | 154 | Set<String> fontFileNames = new HashSet<String>(); |
157 | 155 | fontFileNames.addAll(FontLoader.FILENAMES_YUGOTHIC); |
158 | 156 | fontFileNames.addAll(FontLoader.FILENAMES_YUMINCHO); |
159 | - fontLoader = new FontLoader(FontLoader.getDefaultFontDir(), fontFileNames, null); | |
157 | + FontLoader fontLoader = new FontLoader(FontLoader.getDefaultFontDir(), fontFileNames, null); | |
160 | 158 | |
161 | - | |
162 | 159 | // 仕訳帳をファイルに出力します。 |
163 | 160 | // この処理は総勘定元帳(GeneralLedger)を作成してから呼び出す必要があります。GeneralLedgerによって仕訳帳の「元丁」が設定されるからです。 |
161 | + generalJournal.setFontLoader(fontLoader); | |
164 | 162 | generalJournal.writeTo(outputDir.resolve("仕訳帳.pdf")); |
165 | 163 | System.out.println(" 仕訳帳.pdf を出力しました。"); |
166 | 164 | |
167 | 165 | // 総勘定元帳をファイルに出力します。 |
168 | 166 | // この処理は仕訳帳(GeneralJournal)を作成してから呼び出す必要があります。GeneralJournalによって総勘定元帳の「仕丁」が設定されるからです。 |
167 | + generalLedger.setFontLoader(fontLoader); | |
169 | 168 | generalLedger.writeTo(outputDir.resolve("総勘定元帳.pdf")); |
170 | 169 | System.out.println(" 総勘定元帳.pdf を出力しました。"); |
171 | 170 |
@@ -173,6 +172,7 @@ | ||
173 | 172 | //損益計算書 |
174 | 173 | ProfitAndLossLayout plLayout = accountTitlesLoader.getProfitAndLossLayout(); |
175 | 174 | ProfitAndLoss pl = new ProfitAndLoss(plLayout, journalEntries, isSoloProprietorship); |
175 | + pl.setFontLoader(fontLoader); | |
176 | 176 | pl.writeTo(outputDir.resolve("損益計算書.pdf")); |
177 | 177 | System.out.println(" 損益計算書.pdf を出力しました。"); |
178 | 178 |
@@ -179,6 +179,7 @@ | ||
179 | 179 | //貸借対照表 |
180 | 180 | BalanceSheetLayout bsLayout = accountTitlesLoader.getBalanceSheetLayout(); |
181 | 181 | BalanceSheet bs = new BalanceSheet(bsLayout, journalEntries, isSoloProprietorship); |
182 | + bs.setFontLoader(fontLoader); | |
182 | 183 | bs.writeTo(outputDir.resolve("貸借対照表.pdf")); |
183 | 184 | System.out.println(" 貸借対照表.pdf を出力しました。"); |
184 | 185 |
@@ -186,6 +187,7 @@ | ||
186 | 187 | if (!isSoloProprietorship) { |
187 | 188 | StatementOfChangesInEquityLayout sceLayout = accountTitlesLoader.getStatementOfChangesInEquityLayout(); |
188 | 189 | StatementOfChangesInEquity ce = new StatementOfChangesInEquity(sceLayout, journalEntries); |
190 | + ce.setFontLoader(fontLoader); | |
189 | 191 | ce.writeTo(outputDir.resolve("社員資本等変動計算書.pdf")); |
190 | 192 | System.out.println(" 社員資本等変動計算書.pdf を出力しました。"); |
191 | 193 | } |
@@ -4,6 +4,7 @@ | ||
4 | 4 | import java.io.IOException; |
5 | 5 | import java.io.InputStream; |
6 | 6 | import java.io.InputStreamReader; |
7 | +import java.io.OutputStream; | |
7 | 8 | import java.io.Writer; |
8 | 9 | import java.nio.charset.StandardCharsets; |
9 | 10 | import java.nio.file.Files; |
@@ -30,6 +31,7 @@ | ||
30 | 31 | import net.osdn.aoiro.model.Node; |
31 | 32 | import net.osdn.aoiro.report.layout.BalanceSheetLayout; |
32 | 33 | import net.osdn.pdf_brewer.BrewerData; |
34 | +import net.osdn.pdf_brewer.FontLoader; | |
33 | 35 | import net.osdn.pdf_brewer.PdfBrewer; |
34 | 36 | |
35 | 37 | /** 貸借対照表 |
@@ -55,6 +57,7 @@ | ||
55 | 57 | |
56 | 58 | private List<String> pageData = new ArrayList<String>(); |
57 | 59 | private List<String> printData; |
60 | + private FontLoader fontLoader; | |
58 | 61 | |
59 | 62 | private List<String> warnings = new ArrayList<String>(); |
60 | 63 |
@@ -705,10 +708,19 @@ | ||
705 | 708 | } |
706 | 709 | } |
707 | 710 | |
711 | + public void setFontLoader(FontLoader fontLoader) { | |
712 | + this.fontLoader = fontLoader; | |
713 | + } | |
714 | + | |
708 | 715 | public void writeTo(Path path) throws IOException { |
709 | 716 | prepare(); |
710 | 717 | |
711 | - PdfBrewer brewer = new PdfBrewer(Main.fontLoader); | |
718 | + PdfBrewer brewer; | |
719 | + if(fontLoader != null) { | |
720 | + brewer = new PdfBrewer(fontLoader); | |
721 | + } else { | |
722 | + brewer = new PdfBrewer(); | |
723 | + } | |
712 | 724 | brewer.setCreator(Util.getPdfCreator()); |
713 | 725 | BrewerData pb = new BrewerData(printData, brewer.getFontLoader()); |
714 | 726 | brewer.setTitle("貸借対照表"); |
@@ -717,6 +729,23 @@ | ||
717 | 729 | brewer.close(); |
718 | 730 | } |
719 | 731 | |
732 | + public void writeTo(OutputStream out) throws IOException { | |
733 | + prepare(); | |
734 | + | |
735 | + PdfBrewer brewer; | |
736 | + if(fontLoader != null) { | |
737 | + brewer = new PdfBrewer(fontLoader); | |
738 | + } else { | |
739 | + brewer = new PdfBrewer(); | |
740 | + } | |
741 | + brewer.setCreator(Util.getPdfCreator()); | |
742 | + BrewerData pb = new BrewerData(printData, brewer.getFontLoader()); | |
743 | + brewer.setTitle("貸借対照表"); | |
744 | + brewer.process(pb); | |
745 | + brewer.save(out); | |
746 | + brewer.close(); | |
747 | + } | |
748 | + | |
720 | 749 | /** 次期開始仕訳を作成します。 |
721 | 750 | * |
722 | 751 | * @param path 次期開始仕訳を保存するファイル。nullを指定した場合、ファイル出力はおこないません。 |
@@ -4,6 +4,7 @@ | ||
4 | 4 | import java.io.IOException; |
5 | 5 | import java.io.InputStream; |
6 | 6 | import java.io.InputStreamReader; |
7 | +import java.io.OutputStream; | |
7 | 8 | import java.nio.charset.StandardCharsets; |
8 | 9 | import java.nio.file.Path; |
9 | 10 | import java.time.LocalDate; |
@@ -17,6 +18,7 @@ | ||
17 | 18 | import net.osdn.aoiro.model.Debtor; |
18 | 19 | import net.osdn.aoiro.model.JournalEntry; |
19 | 20 | import net.osdn.pdf_brewer.BrewerData; |
21 | +import net.osdn.pdf_brewer.FontLoader; | |
20 | 22 | import net.osdn.pdf_brewer.PdfBrewer; |
21 | 23 | |
22 | 24 | /** 仕訳帳 |
@@ -33,6 +35,7 @@ | ||
33 | 35 | |
34 | 36 | private List<String> pageData = new ArrayList<String>(); |
35 | 37 | private List<String> printData; |
38 | + private FontLoader fontLoader; | |
36 | 39 | |
37 | 40 | public GeneralJournal(List<JournalEntry> journalEntries, boolean isSoloProprietorship) throws IOException { |
38 | 41 | this.entries = journalEntries; |
@@ -345,11 +348,20 @@ | ||
345 | 348 | |
346 | 349 | return rowsRequired; |
347 | 350 | } |
348 | - | |
351 | + | |
352 | + public void setFontLoader(FontLoader fontLoader) { | |
353 | + this.fontLoader = fontLoader; | |
354 | + } | |
355 | + | |
349 | 356 | public void writeTo(Path path) throws IOException { |
350 | 357 | prepare(); |
351 | 358 | |
352 | - PdfBrewer brewer = new PdfBrewer(Main.fontLoader); | |
359 | + PdfBrewer brewer; | |
360 | + if(fontLoader != null) { | |
361 | + brewer = new PdfBrewer(fontLoader); | |
362 | + } else { | |
363 | + brewer = new PdfBrewer(); | |
364 | + } | |
353 | 365 | brewer.setCreator(Util.getPdfCreator()); |
354 | 366 | BrewerData pb = new BrewerData(printData, brewer.getFontLoader()); |
355 | 367 | brewer.setTitle("仕訳帳"); |
@@ -357,4 +369,21 @@ | ||
357 | 369 | brewer.save(path); |
358 | 370 | brewer.close(); |
359 | 371 | } |
372 | + | |
373 | + public void writeTo(OutputStream out) throws IOException { | |
374 | + prepare(); | |
375 | + | |
376 | + PdfBrewer brewer; | |
377 | + if(fontLoader != null) { | |
378 | + brewer = new PdfBrewer(fontLoader); | |
379 | + } else { | |
380 | + brewer = new PdfBrewer(); | |
381 | + } | |
382 | + brewer.setCreator(Util.getPdfCreator()); | |
383 | + BrewerData pb = new BrewerData(printData, brewer.getFontLoader()); | |
384 | + brewer.setTitle("仕訳帳"); | |
385 | + brewer.process(pb); | |
386 | + brewer.save(out); | |
387 | + brewer.close(); | |
388 | + } | |
360 | 389 | } |
@@ -4,6 +4,7 @@ | ||
4 | 4 | import java.io.IOException; |
5 | 5 | import java.io.InputStream; |
6 | 6 | import java.io.InputStreamReader; |
7 | +import java.io.OutputStream; | |
7 | 8 | import java.nio.charset.StandardCharsets; |
8 | 9 | import java.nio.file.Path; |
9 | 10 | import java.time.LocalDate; |
@@ -22,6 +23,7 @@ | ||
22 | 23 | import net.osdn.aoiro.model.Debtor; |
23 | 24 | import net.osdn.aoiro.model.JournalEntry; |
24 | 25 | import net.osdn.pdf_brewer.BrewerData; |
26 | +import net.osdn.pdf_brewer.FontLoader; | |
25 | 27 | import net.osdn.pdf_brewer.PdfBrewer; |
26 | 28 | |
27 | 29 | /** 総勘定元帳 |
@@ -40,6 +42,7 @@ | ||
40 | 42 | |
41 | 43 | private List<String> pageData = new ArrayList<>(); |
42 | 44 | private List<String> printData; |
45 | + private FontLoader fontLoader; | |
43 | 46 | |
44 | 47 | public GeneralLedger(Set<AccountTitle> accountTitles, List<JournalEntry> journalEntries, boolean isSoloProprietorship, boolean showMonthlyTotal) throws IOException { |
45 | 48 | this.accountTitles = new LinkedHashSet<>(accountTitles); |
@@ -572,12 +575,20 @@ | ||
572 | 575 | } |
573 | 576 | return counterpartAccounts; |
574 | 577 | } |
578 | + | |
579 | + public void setFontLoader(FontLoader fontLoader) { | |
580 | + this.fontLoader = fontLoader; | |
581 | + } | |
575 | 582 | |
576 | - | |
577 | 583 | public void writeTo(Path path) throws IOException { |
578 | 584 | prepare(); |
579 | 585 | |
580 | - PdfBrewer brewer = new PdfBrewer(Main.fontLoader); | |
586 | + PdfBrewer brewer; | |
587 | + if(fontLoader != null) { | |
588 | + brewer = new PdfBrewer(fontLoader); | |
589 | + } else { | |
590 | + brewer = new PdfBrewer(); | |
591 | + } | |
581 | 592 | brewer.setCreator(Util.getPdfCreator()); |
582 | 593 | BrewerData pb = new BrewerData(printData, brewer.getFontLoader()); |
583 | 594 | brewer.setTitle("総勘定元帳"); |
@@ -585,7 +596,24 @@ | ||
585 | 596 | brewer.save(path); |
586 | 597 | brewer.close(); |
587 | 598 | } |
588 | - | |
599 | + | |
600 | + public void writeTo(OutputStream out) throws IOException { | |
601 | + prepare(); | |
602 | + | |
603 | + PdfBrewer brewer; | |
604 | + if(fontLoader != null) { | |
605 | + brewer = new PdfBrewer(fontLoader); | |
606 | + } else { | |
607 | + brewer = new PdfBrewer(); | |
608 | + } | |
609 | + brewer.setCreator(Util.getPdfCreator()); | |
610 | + BrewerData pb = new BrewerData(printData, brewer.getFontLoader()); | |
611 | + brewer.setTitle("総勘定元帳"); | |
612 | + brewer.process(pb); | |
613 | + brewer.save(out); | |
614 | + brewer.close(); | |
615 | + } | |
616 | + | |
589 | 617 | /** 指定した勘定科目を含む仕訳データを取得します。 |
590 | 618 | * |
591 | 619 | * @param accountTitle 勘定科目 |
@@ -4,6 +4,7 @@ | ||
4 | 4 | import java.io.IOException; |
5 | 5 | import java.io.InputStream; |
6 | 6 | import java.io.InputStreamReader; |
7 | +import java.io.OutputStream; | |
7 | 8 | import java.nio.charset.StandardCharsets; |
8 | 9 | import java.nio.file.Path; |
9 | 10 | import java.time.LocalDate; |
@@ -30,6 +31,7 @@ | ||
30 | 31 | import net.osdn.aoiro.model.Node; |
31 | 32 | import net.osdn.aoiro.report.layout.ProfitAndLossLayout; |
32 | 33 | import net.osdn.pdf_brewer.BrewerData; |
34 | +import net.osdn.pdf_brewer.FontLoader; | |
33 | 35 | import net.osdn.pdf_brewer.PdfBrewer; |
34 | 36 | |
35 | 37 | /** 損益計算書(P/L) |
@@ -52,6 +54,7 @@ | ||
52 | 54 | private List<Entry<String, Amount[]>> monthlyTotals; |
53 | 55 | private List<String> pageData = new ArrayList<>(); |
54 | 56 | private List<String> printData; |
57 | + private FontLoader fontLoader; | |
55 | 58 | |
56 | 59 | public ProfitAndLoss(ProfitAndLossLayout plLayout, List<JournalEntry> journalEntries, boolean isSoloProprietorship) throws IOException { |
57 | 60 | this.plLayout = plLayout; |
@@ -516,10 +519,19 @@ | ||
516 | 519 | printData.add("\t\t\\line " + String.format("150 0.2 150 %.2f", y + ROW_HEIGHT + ROW_HEIGHT)); |
517 | 520 | } |
518 | 521 | |
522 | + public void setFontLoader(FontLoader fontLoader) { | |
523 | + this.fontLoader = fontLoader; | |
524 | + } | |
525 | + | |
519 | 526 | public void writeTo(Path path) throws IOException { |
520 | 527 | prepare(); |
521 | 528 | |
522 | - PdfBrewer brewer = new PdfBrewer(Main.fontLoader); | |
529 | + PdfBrewer brewer; | |
530 | + if(fontLoader != null) { | |
531 | + brewer = new PdfBrewer(fontLoader); | |
532 | + } else { | |
533 | + brewer = new PdfBrewer(); | |
534 | + } | |
523 | 535 | brewer.setCreator(Util.getPdfCreator()); |
524 | 536 | BrewerData pb = new BrewerData(printData, brewer.getFontLoader()); |
525 | 537 | brewer.setTitle("損益計算書"); |
@@ -527,7 +539,24 @@ | ||
527 | 539 | brewer.save(path); |
528 | 540 | brewer.close(); |
529 | 541 | } |
530 | - | |
542 | + | |
543 | + public void writeTo(OutputStream out) throws IOException { | |
544 | + prepare(); | |
545 | + | |
546 | + PdfBrewer brewer; | |
547 | + if(fontLoader != null) { | |
548 | + brewer = new PdfBrewer(fontLoader); | |
549 | + } else { | |
550 | + brewer = new PdfBrewer(); | |
551 | + } | |
552 | + brewer.setCreator(Util.getPdfCreator()); | |
553 | + BrewerData pb = new BrewerData(printData, brewer.getFontLoader()); | |
554 | + brewer.setTitle("損益計算書"); | |
555 | + brewer.process(pb); | |
556 | + brewer.save(out); | |
557 | + brewer.close(); | |
558 | + } | |
559 | + | |
531 | 560 | private static String formatMoney(long amount) { |
532 | 561 | if(MINUS_SIGN != null && amount < 0) { |
533 | 562 | return MINUS_SIGN + String.format("%,d", -amount); |
@@ -4,6 +4,7 @@ | ||
4 | 4 | import java.io.IOException; |
5 | 5 | import java.io.InputStream; |
6 | 6 | import java.io.InputStreamReader; |
7 | +import java.io.OutputStream; | |
7 | 8 | import java.nio.charset.StandardCharsets; |
8 | 9 | import java.nio.file.Path; |
9 | 10 | import java.time.LocalDate; |
@@ -33,6 +34,7 @@ | ||
33 | 34 | import net.osdn.aoiro.model.Node; |
34 | 35 | import net.osdn.aoiro.report.layout.StatementOfChangesInEquityLayout; |
35 | 36 | import net.osdn.pdf_brewer.BrewerData; |
37 | +import net.osdn.pdf_brewer.FontLoader; | |
36 | 38 | import net.osdn.pdf_brewer.PdfBrewer; |
37 | 39 | |
38 | 40 | public class StatementOfChangesInEquity { |
@@ -64,6 +66,7 @@ | ||
64 | 66 | |
65 | 67 | private List<String> pageData = new ArrayList<>(); |
66 | 68 | private List<String> printData; |
69 | + private FontLoader fontLoader; | |
67 | 70 | |
68 | 71 | public StatementOfChangesInEquity(StatementOfChangesInEquityLayout sceLayout, List<JournalEntry> journalEntries) throws IOException { |
69 | 72 | this.sceLayout = sceLayout; |
@@ -456,11 +459,20 @@ | ||
456 | 459 | y += ROW_HEIGHT; |
457 | 460 | } |
458 | 461 | } |
459 | - | |
462 | + | |
463 | + public void setFontLoader(FontLoader fontLoader) { | |
464 | + this.fontLoader = fontLoader; | |
465 | + } | |
466 | + | |
460 | 467 | public void writeTo(Path path) throws IOException { |
461 | 468 | prepare(); |
462 | 469 | |
463 | - PdfBrewer brewer = new PdfBrewer(Main.fontLoader); | |
470 | + PdfBrewer brewer; | |
471 | + if(fontLoader != null) { | |
472 | + brewer = new PdfBrewer(fontLoader); | |
473 | + } else { | |
474 | + brewer = new PdfBrewer(); | |
475 | + } | |
464 | 476 | brewer.setCreator(Util.getPdfCreator()); |
465 | 477 | BrewerData pb = new BrewerData(printData, brewer.getFontLoader()); |
466 | 478 | brewer.setTitle("社員資本等変動計算書"); |
@@ -468,7 +480,24 @@ | ||
468 | 480 | brewer.save(path); |
469 | 481 | brewer.close(); |
470 | 482 | } |
471 | - | |
483 | + | |
484 | + public void writeTo(OutputStream out) throws IOException { | |
485 | + prepare(); | |
486 | + | |
487 | + PdfBrewer brewer; | |
488 | + if(fontLoader != null) { | |
489 | + brewer = new PdfBrewer(fontLoader); | |
490 | + } else { | |
491 | + brewer = new PdfBrewer(); | |
492 | + } | |
493 | + brewer.setCreator(Util.getPdfCreator()); | |
494 | + BrewerData pb = new BrewerData(printData, brewer.getFontLoader()); | |
495 | + brewer.setTitle("社員資本等変動計算書"); | |
496 | + brewer.process(pb); | |
497 | + brewer.save(out); | |
498 | + brewer.close(); | |
499 | + } | |
500 | + | |
472 | 501 | private static String formatMoney(long amount) { |
473 | 502 | if(MINUS_SIGN != null && amount < 0) { |
474 | 503 | return MINUS_SIGN + String.format("%,d", -amount); |