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

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

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

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

Q&A

0回答

616閲覧

【PHP】TCPDFで文字列を渡してPDF化するclassを作りたい

退会済みユーザー

退会済みユーザー

総合スコア0

PHP

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

1グッド

1クリップ

投稿2019/05/17 08:18

前提・実現したいこと

TCPDFを使ってユーザーがテキストエリアに入れた文字列(HTML)をPDFで表示またはDLできるようにしたいです。
その際、表示用とDL用の関数を持つclassを作ってぞれぞれに対象の文字列(HTML)を渡したいと考えています。

データベースにある文字列をPDF化して表示するところまではできたので、下記はそのコードになります。
これをどのように改変すれば関数を使って汎用的に利用できるかで行き詰っています。

PHPの基礎をやり始めたばかりでまだclassやfunctionなどの関数の知識が乏しく、書いてみてもエラーばかりで正しい書き方がわかりません。
しっかり勉強するべきなのは重々承知です。
しかし急ぎ対応したい事案でして、身勝手ではありますが皆さまのお知恵をお借りできればと思っております。

渡す文字列はinput type textareaでjsを使って値を取り出す想定です。
(ここも間違っていたらご指摘いただけると助かります)

何卒、ご教示のほどお願い申し上げます。

該当のソースコード

PHP

1<?php 2 3~データベースから文字列(HTML)を取得($contentsとする)~ 4 5include("./TCPDF/tcpdf.php"); 6 7 define("MY_PDF_PAGE_ORIENTATION" , "P"); 8 define("MY_PDF_FONT_NAME" , "kozgopromedium"); 9 define("MY_PDF_FONT_SIZE" , 15); 10 define("MY_PDF_UNIT" , "mm"); 11 define("MY_PDF_PAGE_FORMAT" , "A4"); 12 define("MY_PDF_IMAGE_SCALE_RATIO" , 1); 13 define("MY_PDF_MARGIN_HEADER" , 0); 14 define("MY_PDF_MARGIN_FOOTER" , 0); 15 define("MY_PDF_MARGIN_TOP" , 20); 16 define("MY_PDF_MARGIN_LEFT" , 20); 17 define("MY_PDF_MARGIN_RIGHT" , 20); 18 define("MY_PDF_MARGIN_BOTTOM" , 20); 19 20class MYPDF extends TCPDF { 21 public function Header(){ 22 $this->SetAutoPageBreak(false, 0); 23 } 24} 25 26$pdf = new MYPDF(MY_PDF_PAGE_ORIENTATION, MY_PDF_UNIT, MY_PDF_PAGE_FORMAT, true, 'UTF-8', false); 27$pdf->SetTitle("hogehoge"); 28$pdf->SetMargins(MY_PDF_MARGIN_LEFT, MY_PDF_MARGIN_TOP, MY_PDF_MARGIN_RIGHT); 29$pdf->SetAutoPageBreak(TRUE, MY_PDF_MARGIN_BOTTOM); 30$pdf->setPrintHeader(false); 31$pdf->setPrintFooter(true); 32$pdf->setImageScale(MY_PDF_IMAGE_SCALE_RATIO); 33$pdf->SetFont(MY_PDF_FONT_NAME, "", MY_PDF_FONT_SIZE); 34 35// ここからclassを作る? 36 37$pdf->AddPage(); 38$html =<<<_EOF 39 40<style> 41.title { 42 font-weight: bold; 43 text-align: center; 44} 45table { 46 border-spacing:0; 47 border-collapse: collapse; 48} 49table tr td { 50 border: 1px solid black; 51 font-weight: normal; 52} 53</style> 54 55{$contents} 56 57_EOF; 58 59$pdf->writeHTML($html, true, false, true, false, ''); 60$pdf->lastPage(); 61$pdf_output = null; 62$fileName = "hogehoge.pdf"; 63$fileName = mb_convert_encoding( $fileName, 'SJIS-WIN', 'UTF-8' ); 64$pdf_output = $pdf->Output(null,'S'); 65 66if ($pdf_output != null) { 67 header( "Pragma: public" ); 68 header( "Expires: 0 "); 69 header( "Cache-Control: must-revalidate, post-check=0, pre-check=0" ); 70 header( "Content-Transfer-Encoding: binary" ); 71 // ブラウザ 72 header( "Content-Type: application/pdf" ); 73 header( "Content-Disposition: inline; filename=\"{$fileName}\"" ); 74 // ダウンロード 75 //header( "Content-Type: application/octet-streams" ); 76 //header( "Content-Disposition: attachment; filename=\"{$fileName}\"" ); 77 echo $pdf_output; 78 exit; 79} 80 81?>
DrqYuto👍を押しています

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

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

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

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

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

namda

2019/05/21 07:18

何を書いてどう失敗してるか書いてください。でないと丸投げと言われます。 classにしたいと言ってますがコードからはそれどころではない様子が伺えます。 何しようとして何ができないのか具体的に記述し、失敗するソースコードも添えてください。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

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

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

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問