3

ユーザーがページをファイルとして保存して、後できれいに表示できるようにするボタン(おそらくPDFとして)を作成する良い方法はありますか?@mediaprintCSSを尊重する必要があります。

考慮されるオプション:

  1. http: //www.web2pdfconvert.com-スタイリングは非常に基本的であり、@mediaprintを考慮していません-@mediaprintCSSを使用した場合は許容されます
  2. ファイルへの印刷をトリガーする[印刷]ボタン(Microsoft XPS Document Writerなど)-私の理解では、これは実行不可能であり、ユーザーがファイルに簡単に印刷できることを理解していれば、ボタンは必要ありません。
  3. Word doc-編集可能であるという利点がありますが、これは特に動的な書式設定では非常に複雑であると私は理解しています
  4. Buttonは、 http: //www.fpdf.org/を使用するように、pdfを提供する別のPHPファイルを開きます-私の理解では、CSSですでに作成したフォーマットを再作成する作業が大量にあり、できない可能性がありますそこに100%を取得するには
  5. Wordで表示可能なHTMLを保存する-CSSが別のファイルにあるため、電子メールで扱いにくく、WordはCSSを適切に処理しません

私が見逃しているもっと簡単な方法はありますか?または、これらのオプションの1つで見つけた障害を乗り越えるための良い方法はありますか?

4

1 に答える 1

0

私は以前にこれをしなければならなかったので、あなたの痛みを知っています。私の解決策について説明し、適切なコードを提供します。

ユーザーにページ全体の PDF をダウンロードしてもらうことにしました。HTML を PDF にレンダリングするライブラリが必要でした。さらに、これにはコア サイトとは異なる CSS が必要になることもわかっていました。しかし、私はそれを複製したくありませんでした (メディアクエリのサポートのように... 新しい改行を作成するためなど)。そのため、プロジェクタのメディア タイプである dompdf を使用することになり、Zend Framework の組み込みツールを使用して同じページをロードすることで、Web サイトをロードしました。(このソリューションには ZF は必要ありません)。

これをやってみましょう(ああ、そうです、これは完璧ではありませんが、かなり近づくことができます!)

1) domPDFをダウンロード

2) dompdf_config.custom.inc.php ファイルで、次の行のコメントを外すか、追加するか、何でもします (はい、これは完璧ではありませんが、このメディア タイプを使用する多くのプロジェクターを知りません)。

define("DOMPDF_DEFAULT_MEDIA_TYPE", "projection");

3) 次に、CSS を変更して、メディア クエリを作成します。

@media projection {
    // all of your css to make sure this works fine - like page breaks
}

4) そしてもちろん、最後に file_get_contents() や curl などを使用してページ全体を取得します。

最後のコードは次のようになります ($html = 保存するページのコンテンツ全体)

require_once(APPLICATION_PATH . '/../library/dompdf/dompdf_config.inc.php');
$dompdf = new DOMPDF();
$dompdf->set_protocol('http://');
$dompdf->set_host($options->domain);
$dompdf->load_html($html);
$dompdf->render();
$dompdf->stream('Printed.pdf');
于 2013-02-19T02:40:17.720 に答える