5

私は、約 10,000 人のユーザーのデータを含む動的な pdf ファイルを生成中です。通常、アプリは MySQL と PHP を使用して開発されています。fpdf()動的コンテンツは非常に重いため、クラスで処理するのは難しいと感じました。そこで、.php を使用して出力 PHP ページを HTML ファイルに変換しましたob_get_clean()。これで、html ファイルと pdf ファイルが正常に生成されました。しかし、各ユーザーのデータの後に改ページを残したいのです。つまり、すべてのユーザーのデータは新しいページで開始する必要があります。HTML タグを使用できませんでした。動的に生成された HTML ファイルでは、すべてが<html>and</html>タグから外れているためです。すべてのユーザーのデータの後にpdfファイルで改ページを作成する方法を教えてください...よろしくお願いします:)

4

4 に答える 4

17

html2pdf はページタグをサポートしています:

protected function _tag_open_PAGE($param) {} 

2229行目。サポートされている属性を確認できます。たとえば、次の例では、1 つのページを横向きモードで、もう 1 つを縦向きモードで作成します。

<page orientation="l">
... some content ...
</page>
<page orientation="p">
... some content ...
</page>
于 2014-02-14T07:38:10.493 に答える
13

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>

大文字と小文字を区別するスタイルに注意してください。プラグインがそれを処理するかどうかはわかりません

于 2013-01-04T16:43:02.610 に答える
2

あなたはおそらくいくつかのcssを使いたいでしょう、例えば:

h1 {page-break-before:always}
于 2010-01-22T14:24:30.387 に答える
2

同じ問題を抱えた後、私はこれを理解しました。彼らが使用するパーサーは 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();
于 2012-08-28T16:49:25.583 に答える