私は、約 10,000 人のユーザーのデータを含む動的な pdf ファイルを生成中です。通常、アプリは MySQL と PHP を使用して開発されています。fpdf()
動的コンテンツは非常に重いため、クラスで処理するのは難しいと感じました。そこで、.php を使用して出力 PHP ページを HTML ファイルに変換しましたob_get_clean()
。これで、html ファイルと pdf ファイルが正常に生成されました。しかし、各ユーザーのデータの後に改ページを残したいのです。つまり、すべてのユーザーのデータは新しいページで開始する必要があります。HTML タグを使用できませんでした。動的に生成された HTML ファイルでは、すべてが<html>
and</html>
タグから外れているためです。すべてのユーザーのデータの後にpdfファイルで改ページを作成する方法を教えてください...よろしくお願いします:)
4 に答える
html2pdf はページタグをサポートしています:
protected function _tag_open_PAGE($param) {}
2229行目。サポートされている属性を確認できます。たとえば、次の例では、1 つのページを横向きモードで、もう 1 つを縦向きモードで作成します。
<page orientation="l">
... some content ...
</page>
<page orientation="p">
... some content ...
</page>
macdabby の作業に基づいています (これは機能しません)。しかし、彼のおかげで、その考えは正しいです。
Html2Pdf v4.03
たとえば、タグ DIV を解析したいとします。
html2pdf.class.php 行 2948:
protected function _tag_close_DIV($param, $other='div')
{
if ($this->parsingCss->value['page-break-after'] == "always")
$this->_setNewPage(null, '', null, $this->_defaultTop);
$this->parsingCss->setPosition();
...
}
parsingCss.class.php 行 114:
//add a new style declaration
public function initStyle()
{
...
$this->value['page-break-after'] = null;
}
1024 行目で、switch ケースに新しいハンドラーを追加します。
case 'page-break-after':
$this->value[$nom] = $val;
break;
そして、それが機能するためには、html コンテンツに break 要素が含まれている必要があります。
<div style="page-break-after:always; clear:both"></div>
大文字と小文字を区別するスタイルに注意してください。プラグインがそれを処理するかどうかはわかりません
あなたはおそらくいくつかのcssを使いたいでしょう、例えば:
h1 {page-break-before:always}
同じ問題を抱えた後、私はこれを理解しました。彼らが使用するパーサーは page-break-after タグをサポートしていますが、html2pdf は機能しません。
html2pdf.classに次の変更を加えることで機能すると思います:
4174行目あたり、最初の内部:
protected function _tag_close_P($param){
次のようにする必要があります。
if($this->parsingCss->value['page-break-after'] == "always")
$this->_setNewPage();
2961行目あたり、最初の内部:
protected function _tag_close_DIV($param, $other='div'){
次のようにする必要があります。
if($this->parsingCss->value['page-break-after'] == "always")
$this->_setNewPage();