teratail header banner
teratail header banner
質問するログイン新規登録

質問編集履歴

4

誤記訂正

2019/02/17 11:35

投稿

saya24
saya24

スコア258

title CHANGED
File without changes
body CHANGED
@@ -22,7 +22,7 @@
22
22
  function hMaker($pcnt) {
23
23
 
24
24
  global $html2;
25
- $html2 = '<div style="float:right; text-align: right;"><span>'.date('Y年m月d日').' </span><span>P.'.$pcnt.'</span></div><div style="float:left;" ><span class="b12" style="text-align: left;">積水メディカル株式会社</span><span> 行</span></div>
25
+ $html2 = '<div style="float:right; text-align: right;"><span>'.date('Y年m月d日').' </span><span>P.'.$pcnt.'</span></div><div style="float:left;" ><span class="b12" style="text-align: left;">○○○○株式会社</span><span> 行</span></div>
26
26
  <div style="clear: both"></div>
27
27
  <h1>注文書</h1>
28
28
  <table><thead><tr><th style="width: 30%">取引先名</th><th style="width: 40%">住所</th><th style="width: 15%">TEL</th><th style="width: 15%">郵便番号</th></tr></thead>';

3

誤記訂正

2019/02/17 11:35

投稿

saya24
saya24

スコア258

title CHANGED
File without changes
body CHANGED
@@ -1,4 +1,4 @@
1
- PHPでDBの内容を、TCPDFというライブラリを使用してPDFに出力しようとしています。
1
+ PHPで TCPDFというライブラリを使用して DBの内容をPDFに出力しようとしています。
2
2
  初心者向けに紹介されたサイト[参考にしたサイト](https://www.sejuku.net/blog/73032)をみながらなんとかPDFが画面に現われるようになりましたが、
3
3
  自分なりに手順を拡張できずに困っています。
4
4
 
@@ -13,7 +13,7 @@
13
13
  を最後の1回に行う構成で考えています。以下現況のコーディングですが、PDFが現われなくなてしまいました。原因は一体なにでしょう?
14
14
  今回functionにしているmPage()の部分を、functionとはせず単純に2回立て続けに書いたら、ちゃんと2ページに渡って同じデータの内容が表れてきました。ということは2回以上に渡って、writeHTMLのメソッドが実行されたった1回のOutputのメソッドが実行されても 問題はないということですよねぇ??
15
15
 
16
- 尚、$rows には4列の項目を保持する100レコードの連想配列す。
16
+ 尚、$rows には4列の項目を保持する100レコードの連想配列が格納されています。
17
17
  やはり$tcpdf->writeHTML($html);をfunctionにくくったことで 動かなくなってしまっているのでしょうか?(そうだとしたらどうすれば良いのか分からないので、対策をご教示頂けたら幸いです)
18
18
 
19
19
 

2

自分の試しているコーディングを追記

2019/02/17 10:27

投稿

saya24
saya24

スコア258

title CHANGED
File without changes
body CHANGED
@@ -1,24 +1,101 @@
1
- PHPでDBの内容を、TCPDFというライブラリを使用してPDFに出力しようとしています。
1
+ PHPでDBの内容を、TCPDFというライブラリを使用してPDFに出力しようとしています。
2
2
  初心者向けに紹介されたサイト[参考にしたサイト](https://www.sejuku.net/blog/73032)をみながらなんとかPDFが画面に現われるようになりましたが、
3
3
  自分なりに手順を拡張できずに困っています。
4
4
 
5
- こちらの記事にあるとおり、現在の当方のコーディングも最終的に
5
+ 一般的な記事では
6
6
  ```PHP
7
7
  $tcpdf->writeHTML($html);
8
8
  ```
9
+ のオブジェクト・メソッドで1度きりの表示内容設定ですが、改ページ制御のためにこの手順を何回かに分けて(ページヘッダ部分とTABLEのHTMLを格納)行って、PDFへの出力、
10
+ ```PHP
11
+ $tcpdf->Output('XXXXXX.pdf', 'I');
12
+ ```
9
- オブジェクト・メソッドでPDF内容を出力しています。
13
+ を最後1回行う構成で考えています。以下現況のコーディングですが、PDFが現われなくなてしまいました。原因は一体なにでしょう?
14
+ 今回functionにしているmPage()の部分を、functionとはせず単純に2回立て続けに書いたら、ちゃんと2ページに渡って同じデータの内容が表れてきました。ということは2回以上に渡って、writeHTMLのメソッドが実行されたった1回のOutputのメソッドが実行されても 問題はないということですよねぇ??
10
15
 
16
+ 尚、$rows には4列の項目を保持する100レコードの連想配列です。
11
- つまり一つの変数($html出力しい内容を収めければらない認識をしていて、自分も事前にDB内容を連想配列に格納、これをHTML形式のTABLEとの「変数」に格納る手順とって
17
+ $tcpdf->writeHTML($html);をfunctionくくっことで 動かってまっていょうか?(うだとしたらどうれば良いのか分からないので、対策ご教示頂けたら幸
12
18
 
13
- 【質問】
19
+
14
- 参考にしたページからすると、ページの追加は恐らくに
20
+
15
21
  ```PHP
16
- $tcpdf->AddPage();
17
- ```というメソッドから達成されていると推察できるのですが、適時改ページを行うには、現在の開発手順(一つの変数に出力したい内容マルマルが収まっている)では達成できない、ということなのでしょうか?
18
- 変数の中に改ページの意思を宣言することなどできるのでしょうか?
19
- 現在のところ制御が一切できていないので、ページ最下部までの出力がわれたのち 自動的な改ページが行われている感じです。
20
- 2ページ目の頭に、TABLEのTHEADの部分が勝手に表れているのにもびっくりしましたが...(本当はTABLEのヘッダだけでなく、帳票タイトル{日付・宛先・注文書というタイトルetc}をページヘッダとして改ページ後は表して欲しい)
22
+ function hMaker($pcnt) {
23
+
24
+ global $html2;
25
+ $html2 = '<div style="float:right; text-align: right;"><span>'.date('Y年m月d日').' </span><span>P.'.$pcnt.'</span></div><div style="float:left;" ><span class="b12" style="text-align: left;">積水メディカル株式会社</span><span> </span></div>
26
+ <div style="clear: both"></div>
27
+ <h1>注文書</h1>
28
+ <table><thead><tr><th style="width: 30%">取引先名</th><th style="width: 40%">住所</th><th style="width: 15%">TEL</th><th style="width: 15%">郵便番号</th></tr></thead>';
29
+ }
21
30
 
22
- どういった手順で、改ページを制御できるのか?どこからどこまでの部分がページヘッダである、と宣言できるのでしょうか?
31
+ function dMaker_f($col1,$col2,$col3,$col4) {
32
+ global $html2;
33
+ $html2 = $html2.'<tbody><tr><td style="width: 30%">'.$col1.'</td><td style="width: 40%">'.$col2.'</td><td style="width: 15%">'.$col3.'</td><td style="width: 15%">'.$col4.'</td></tr>';
34
+ }
23
35
 
36
+ function dMaker($col1,$col2,$col3,$col4) {
37
+ global $html2;
38
+ $html2 = $html2.'<tr><td style="width: 30%">'.$col1.'</td><td style="width: 40%">'.$col2.'</td><td style="width: 15%">'.$col3.'</td><td style="width: 15%">'.$col4.'</td></tr>';
39
+ }
40
+
41
+
42
+ $tcpdf = new TCPDF("L", "mm", "A4", true, "UTF-8" );
43
+ $tcpdf->SetFont("kozgopromedium", "", 10);
24
- 分かりやすいサンプルが掲載された記事・サイトなどご紹介頂けたら幸いです!
44
+ $tcpdf->setPrintHeader(false);
45
+ $tcpdf->SetDisplayMode(80);
46
+ $tcpdf->SetAutoPageBreak(false); //自動改ページモードをオフ
47
+
48
+ $linecount = 99;
49
+ $pcnt = 0;
50
+ foreach($rows as $row){
51
+ if (count($rows)> 0 && $linecount > 50) {
52
+ if ($pcnt > 0) {
53
+ $html2 = $html2.'</tbody></table>';
54
+ mPage();
55
+ $html2 = null;
56
+ }
57
+ $linecount = 0;
58
+ $pcnt++;
59
+ $tcpdf->AddPage(); // 【ライブラリのメソッド】:ページ手配
60
+ hMaker($pcnt); // HTMLでヘッダのデザインを変数$html2に追記
61
+ dMaker_f($row["tname"], $row["taddress"], $row["ttelno"], $row["tpostno"]);// HTMLで明細を変数$html2に追記(TBODYタグ含む)
62
+ } else {
63
+ dMaker($row["tname"], $row["taddress"], $row["ttelno"], $row["tpostno"]);// HTMLで明細を変数$html2に追記(TBODYタグ含まない)
64
+ }
65
+ $linecount++;
66
+ }
67
+ if (count($rows)> 0) {
68
+ $html2 = $html2.'</tbody></table>';
69
+ } else {
70
+ $html2 = "対象はありません。";
71
+ }
72
+ mPage();
73
+
74
+ //★☆★TCPDFを紹介している記事では、出力内容($html)が仕上がったら この部分を一度だけ実行
75
+ //★☆★改ページ制御のため、ページ単位にこの部分を呼ぶようにしてみた。
76
+ function mPage() {
77
+ // $tcpdf->AddPage(); //【ライブラリのメソッド】:ページ手配⇒コメント!!!
78
+ $html = <<< EOF
79
+ <style>
80
+ h1 {
81
+ font-size: 24px;
82
+ text-align: center;
83
+ }
84
+ span.b12 {
85
+ font-size: 12px;
86
+ font-weight: bold;
87
+ }
88
+ table {
89
+ border-collapse: collapse;
90
+ }
91
+ table th, table td {
92
+ border: solid 1px black;
93
+ }
94
+ </style>
95
+ EOF;
96
+ $tcpdf->writeHTML($html.$html2); // 【ライブラリのメソッド】:表示内容の設定
97
+ }
98
+
99
+
100
+ $tcpdf->Output('XXXXX.pdf', 'I'); // 【ライブラリのメソッド】:表示
101
+ ```

1

誤記ていせい

2019/02/17 10:22

投稿

saya24
saya24

スコア258

title CHANGED
File without changes
body CHANGED
@@ -2,7 +2,7 @@
2
2
  初心者向けに紹介されたサイト[参考にしたサイト](https://www.sejuku.net/blog/73032)をみながらなんとかPDFが画面に現われるようになりましたが、
3
3
  自分なりに手順を拡張できずに困っています。
4
4
 
5
- こちらの記事にあるとり、現在の当方のコーディングも最終的に
5
+ こちらの記事にあるとり、現在の当方のコーディングも最終的に
6
6
  ```PHP
7
7
  $tcpdf->writeHTML($html);
8
8
  ```