Mercurial > mercurial > hgweb_golang.cgi
comparison src/kaigo/fwgo/fw4.pl @ 57:05f3d51ad966
add fwgo.
author | pyon@macmini |
---|---|
date | Wed, 15 Jul 2020 18:18:24 +0900 |
parents | |
children |
comparison
equal
deleted
inserted
replaced
56:7396e7407abd | 57:05f3d51ad966 |
---|---|
1 ########################################################### | |
2 ## 入力ファイルを 4分割割付する | |
3 ## Last Change: 2020-07-14 火 17:33:00. | |
4 ########################################################### | |
5 | |
6 use PDF::API2; | |
7 | |
8 my ($in_file, $out_file) = ($ARGV[0], $ARGV[1]); | |
9 if ($in_file eq '' || $out_file eq '') { | |
10 print "bad arguments.\n"; | |
11 exit; | |
12 } | |
13 | |
14 # ページごとに分割 | |
15 my $p1_pdf = PDF::API2->new(); | |
16 my $p2_pdf = PDF::API2->new(); | |
17 my $p3_pdf = PDF::API2->new(); | |
18 my $p4_pdf = PDF::API2->new(); | |
19 | |
20 my $in_pdf = PDF::API2->open($in_file); | |
21 my ($n1, $n2, $n3, $n4); | |
22 for my $p (1..$in_pdf->pages) { | |
23 if ($p % 4 == 1) { | |
24 $p1_pdf->import_page($in_pdf, $p); | |
25 $n1++; | |
26 next; | |
27 } | |
28 if ($p % 4 == 2) { | |
29 my $page = $p2_pdf->import_page($in_pdf, $p); | |
30 $page->rotate(180); | |
31 $n2++; | |
32 next; | |
33 } | |
34 if ($p % 4 == 3) { | |
35 $p3_pdf->import_page($in_pdf, $p); | |
36 $n3++; | |
37 next; | |
38 } | |
39 my $page = $p4_pdf->import_page($in_pdf, $p); | |
40 $page->rotate(180); | |
41 $n4++; | |
42 } | |
43 if ($n1 > $n2) { | |
44 my $page = $p2_pdf->page(); | |
45 $page->mediabox('B5'); | |
46 } | |
47 if ($n1 > $n3) { | |
48 my $page = $p3_pdf->page(); | |
49 $page->mediabox('B5'); | |
50 } | |
51 if ($n1 > $n4) { | |
52 my $page = $p4_pdf->page(); | |
53 $page->mediabox('B5'); | |
54 } | |
55 $p1_pdf->saveas('p1.pdf'); | |
56 $p2_pdf->saveas('p2.pdf'); | |
57 $p3_pdf->saveas('p3.pdf'); | |
58 $p4_pdf->saveas('p4.pdf'); | |
59 $p1_pdf->end; | |
60 $p2_pdf->end; | |
61 $p3_pdf->end; | |
62 $p4_pdf->end; | |
63 | |
64 # 移動 | |
65 $p2_pdf = PDF::API2->open('p2.pdf'); | |
66 my $p2m_pdf = PDF::API2->new(); | |
67 for my $p (1..$p2_pdf->pages) { | |
68 my $page = $p2m_pdf->page(); | |
69 $page->mediabox('B5'); | |
70 my $gfx = $page->gfx(); | |
71 my $xo = $p2m_pdf->importPageIntoForm($p2_pdf, $p); | |
72 $gfx->formimage($xo, -230, 200, 1.0); | |
73 } | |
74 $p2m_pdf->saveas('p2m.pdf'); | |
75 $p2m_pdf->end; | |
76 | |
77 $p4_pdf = PDF::API2->open('p4.pdf'); | |
78 my $p4m_pdf = PDF::API2->new(); | |
79 for my $p (1..$p4_pdf->pages) { | |
80 my $page = $p4m_pdf->page(); | |
81 $page->mediabox('B5'); | |
82 my $gfx = $page->gfx(); | |
83 my $xo = $p4m_pdf->importPageIntoForm($p4_pdf, $p); | |
84 $gfx->formimage($xo, -230, 200, 1.0); | |
85 } | |
86 $p4m_pdf->saveas('p4m.pdf'); | |
87 $p4m_pdf->end; | |
88 | |
89 # 割付 | |
90 my $new_pdf = PDF::API2->new(); | |
91 $p1_pdf = PDF::API2->open('p1.pdf'); | |
92 $p2m_pdf = PDF::API2->open('p2m.pdf'); | |
93 $p3_pdf = PDF::API2->open('p3.pdf'); | |
94 $p4m_pdf = PDF::API2->open('p4m.pdf'); | |
95 my $zoom = 0.82; | |
96 for my $p (1..$p1_pdf->pages) { | |
97 $page = $new_pdf->page(); | |
98 $page->mediabox('B5'); | |
99 | |
100 my $gfx = $page->gfx(); | |
101 my $xo1 = $new_pdf->importPageIntoForm($p1_pdf, $p); | |
102 $gfx->formimage($xo1, -20, 20, $zoom); | |
103 | |
104 my $xo2 = $new_pdf->importPageIntoForm($p2m_pdf, $p); | |
105 $gfx->formimage($xo2, -20, -170, $zoom); | |
106 | |
107 my $xo3 = $new_pdf->importPageIntoForm($p3_pdf, $p); | |
108 $gfx->formimage($xo3, 230, 20, $zoom); | |
109 | |
110 my $xo4 = $new_pdf->importPageIntoForm($p4m_pdf, $p); | |
111 $gfx->formimage($xo4, 230, -170, $zoom); | |
112 } | |
113 $new_pdf->saveas($out_file); | |
114 $new_pdf->end; | |
115 $p1_pdf->end; | |
116 $p2m_pdf->end; | |
117 $p3_pdf->end; | |
118 $p4m_pdf->end; | |
119 | |
120 # 掃除 | |
121 unlink 'p1.pdf'; | |
122 unlink 'p2.pdf'; | |
123 unlink 'p3.pdf'; | |
124 unlink 'p4.pdf'; | |
125 unlink 'p2m.pdf'; | |
126 unlink 'p4m.pdf'; | |
127 |