カスタムコンポーネントのレイアウトをPDFとして保存する方法を探していました。
いろいろなライブラリJS/PHPを試しました。私が欲しかったのは、utf-8サポート、テーブル、画像をPDFファイルに適切に保存することでした。
最終日は、DomPDFライブラリをコンポーネントに統合しようとしました。私はたくさんのガイドとハウツーを運がなくて読みました。
主な問題は、Joomlaがバージョン3.8(バージョンについて100%パーセントではない)と、構成ファイル[config.inc.php]を必要としないDomPDFの最新バージョンの後で、Document Rendererライブラリを変更したことです。
以前のJoomlaバージョンでは、次のガイドが正常に機能するはずです。 作成PDFビュー
したがって、デフォルトのビューでDomPDFを使用することは私にとって問題でした。これは、オプションとして、PDFをリストビューとアイテムビューからダウンロードするためのリンクを含めることを望んでいたためです。
最後に、生のビューときれいな出力のための新しいレイアウトファイルを使用してそれを行いました。
私は、修正、提案、またはその他の改善を受け入れます。
ありがとうございました
DomPdf の最新リリースをダウンロードします
Librariesフォルダー内に、リリースのdompdfフォルダーのコピーを配置します。
ビューファイルのコピーを作成/ components/mycom/views/item/view.html.phpto/ components/mycom/views/item/view.raw.php
生のビューでスクリプトスクリプトおよびその他の不要なものをすべて削除します。このビューは、PDFファイルをダウンロードするためのダイアログとしてのみ保存されます。
ファイルには何も表示されないため、すべての出力をphp変数に保存します。
defined('_JEXEC') or die('Restricted access');
require_once JPATH_LIBRARIES . '/dompdf/autoload.inc.php';
use Dompdf\Dompdf;
$html ='<style type="text/css">';
$html .='/*place your css if any here*/';
$html .='</style>';
$html .='<h1>' . $this->item->title . '</h1>';
$html .='<div>';
$html .= $this->item->content; //or any other field you like
$html .='</div>';
$dompdf = new Dompdf();
$dompdf->set_option('isHtml5ParserEnabled', true);
$dompdf->setPaper('A4', 'portrait');
$dompdf->setBasePath(JPATH_LIBRARIES . '/dompdf');
$dompdf->loadHtml($html);
$dompdf->render();
$dompdf->output();
$filename = $this->item->alias . '.pdf';
$dompdf->stream($filename);
次に、新しいレイアウトを指すrawタイプを使用して、/ components/mycom/views/item/tmpl/default.phpレイアウトファイルの任意の場所にリンクを配置しますpdf.php
<a href="index.php?option=com_mycom&view=myview&type=raw&layout=pdf&id=<?php echo $this->item->id?>" target="_blank">Download PDF</a>