質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
PDF

PDF(Portable Document Format)とはISOによって国際標準として制定されている電子ドキュメント用の拡張子です。

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

Q&A

0回答

1849閲覧

PDFを出力した際に明細行を表示させている行数を修正したい

nabex

総合スコア66

PDF

PDF(Portable Document Format)とはISOによって国際標準として制定されている電子ドキュメント用の拡張子です。

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

0グッド

0クリップ

投稿2016/06/16 09:46

PDFファイルを出力した際の明細行の中身を表示させている行数を修正したいです。

例えば明細の中身が
1 サンプル
2 サンプル2
3 サンプル3
4 サンプル4
5 サンプル5
6 サンプル6
と、6行ある場合は上記のように出力させたいのですが、

1 サンプル
2 サンプル2
3 サンプル3
4 サンプル4
5 サンプル5
5 サンプル6

と一番最後の行数だけ前の行数が表示されてしまいます。
すいません、どなたか教えてください。よろしくお願いします。

// 明細行行数分挿入
foreach ( $row as $detail_cnt => &$record ) {

$errResult = $this->getErrDetail($record["view_h_err_kbn_h"], $this->err_columns); $row[$detail_cnt]["err_naiyo"] = $errResult; $csv_row = $this->setBlankToValues ( $row [$detail_cnt], $h_details_out_def ); $csv_row["page"] = $page_cnt; $csv_row ["edit_type"] = ""; if( !isset($row[$detail_cnt+1]) ) $csv_row ["edit_type"] = $edit_type ["1line"]; $csv_rows [] = $csv_row; $row_num ++; // 1回の集約でも明細行が多ければページをまたぐ現在のページ+フッタの数 if ($row_num + 4 > $max_rownum) $page_cnt ++; } $csv_row = $this->makeCsvRow($row [$detail_cnt], $h_footer1_out_def, $page_cnt); $csv_rows [] = $csv_row; $row_num++; $csv_row = $this->makeCsvRow($row [$detail_cnt], $h_footer2_out_def, $page_cnt); $csv_rows [] = $csv_row; $row_num++; $csv_row = $this->makeCsvRow($row [$detail_cnt], $h_footer3_out_def, $page_cnt); $h_footer4_val_def = $this->extractArrayKeys($csv_order,'err_naiyo','edit_type'); $csv_row_ft4 = $this->makeCsvRow($row [$detail_cnt], $h_footer4_out_def, $page_cnt); if(!$this->isSetInRow($csv_row_ft4,$h_footer4_val_def)){//ft4に値が存在するかどうか $csv_row ["edit_type"] = $edit_type ["2lines"]; } $csv_rows [] = $csv_row; $row_num++; //値を取得 $h_footer4_val_def = array_merge($this->extractArrayKeys($csv_order,'err_naiyo','edit_type')); $csv_row = $this->makeCsvRow($row [$detail_cnt], $h_footer4_out_def, $page_cnt); if ($row_num < $max_rownum) { if($this->isSetInRow($csv_row,$h_footer4_val_def)){//$footer4に値があるとき $csv_row ["edit_type"] = $edit_type ["2lines"]; $csv_rows [] = $csv_row; $row_num ++; } $csv_row = $this->setBlankToValues ( $row [1] ); $csv_rows [] = $csv_row; $row_num ++; } else {//最大行よりも大きい場合且つ$footer4の値が存在するとき空欄をいれずに線のみ挿入 if($this->isSetInRow($csv_row,$h_footer4_val_def)){ $csv_row ["edit_type"] = $edit_type ["2lines"]; $csv_rows [] = $csv_row; $row_num ++; } }

// //次の集約があるかチェック存在しない場合処理終了
// if (! isset ( $map [$seqno + 1] ))
// break;
// // (次回集約の明細の数+footer4の有無+footer1,2,3とheaderの合計数)
// $next_rows_num = count ( $map [$seqno + 1] ) + $ft4_err_flg['next_err_flg'] + 5;

// if ($next_rows_num + $row_num >= $max_rownum){
// // 次の集約の項目の終了地点が60を超える場合、ブランク行で明細行余分を埋めて改ページ
// $margin_num = $max_rownum - $row_num;
// if ($margin_num > 0) {
// $blank_lines = $this->getBlankLines( $row [1], $margin_num );
// $csv_rows = array_merge( $csv_rows, $blank_lines );
// }
// $row_num = 0; // 初期化
// $page_cnt ++;
// }
}

//次の集約があるかチェック存在しない場合処理終了 if (! isset ( $map [$seqno + 1] )) break; if($map [$seqno+1] [1] ["view_denpyo_cls"] == DEF_DENPYO_CLS_RYODEN){ // (次回集約の明細の数+footer4の有無+footer1,2,3とheaderの合計数+両伝) $next_rows_num = count ( $map [$seqno + 1] ) + $ft4_err_flg['next_err_flg'] + 5 + 6; } else { // (次回集約の明細の数+footer4の有無+footer1,2,3とheaderの合計数) $next_rows_num = count ( $map [$seqno + 1] ) + $ft4_err_flg['next_err_flg'] + 5; } if($next_rows_num + $row_num >= $max_rownum){ // 次の集約の項目の終了地点がMAX行を超える場合、ブランク行で明細行余分を埋めて改ページ $margin_num = $max_rownum - $row_num; if ($margin_num > 0) { $blank_lines = $this->getBlankLines( $row [1], $margin_num ); $csv_rows = array_merge( $csv_rows, $blank_lines ); } $row_num = 0; // 初期化 $page_cnt ++; } } // 分行用後の行数にあわせ、表示ページ列に値を入力、必要なら空行を挿入しつつ行を出力用のCSVの形に分行した配列の集合を返す。 return $csv_rows;

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

amaranthine

2016/06/17 04:57

ソースは、マークダウンで```で囲っていただけると見やすいです。`$this->makeCsvRow()`メソッドが表示される部分ということでよいのでしょうか。それともこれは`$csv_rows`を返しているだけで、返された先で表示を行っているのでしょうか? そもそもメソッド名からして本ソースは、CSVを生成するものではないのですか? PDFを出力しているように見えません。 「}」が一つ多いので途中かと思うし変数の内容も不明、かつ、(PDF出力ソースと思ってみると)コメントも意味不明です。ソース貼り付けるなら、問題の部分を特定するか、特定できないなら、全部見せて頂くか、その前提となるものについて説明して頂けないと分からない部分があります。
nabex

2016/06/17 09:53

ご親切にありがとうございます。CSVファイルを作成してからPDFを出力させるようになっていることがわかりました。 全部はやはり載せきれないと思いますので、頑張ってみます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだ回答がついていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問