web-dev-qa-db-ja.com

PDFビューから使用可能な動的Drupalを生成するにはどうすればよいですか?

私の目標は、コンテンツノードのPDFビューを生成することです。 [Views PDF モジュールを [〜#〜] tcpdf [〜#〜] クラスですが、パフォーマンスはひどいです。ただ遅いだけではありません。AWFULを意味します。コンテンツの単純なページをPDFとして表示する場合、これは悪化するエクスペリエンスであり、数百のコンテンツを表示する場合、非常に苦痛です= PDFページが長い。まったく受け入れられない。

誰もがこれと戦うための良い解決策を持っていますか?私が探しているのは、単一のノードを取得し、「PDFとして表示」リンク/機能を提供することだけです。これはかなり簡単なはずですが、まだ解決できていません。

任意の助けいただければ幸いです。ありがとう!

3
R Brennan

PHPのhtml> pdf生成ツールでは、スタイルからマークアップ、ライブラリのサーバー側エラー、および=との非互換性に至るまで、1:1で問題が発生することはありませんでした。 PHPバージョン、パッケージエラーなど。

別のオプションは、 PhantomJS または同等のツールを使用して、ヘッドレスブラウザを使用して output a PDF file for yoただし、PhantomJSはメンテナンスされなくなる可能性があることに注意してください 、Chromeにはヘッドレス同等物があるようになりました。

ただし、 Drupal 7および8のモジュールで、この機能を提供します (開示、私はメンテナーです)がありますが、端に少しエルボグリースがかかる場合がありますPhantomJSのベースjsコントローラーが提供されていますが、変更することができます。必要な場合は、[ファイル]> [印刷]を実行するのと同じですPDFブラウザーでは、これはすべてのPHP libs。

https://www.drupal.org/project/phantomjs_capture

その代わりに、あなたに合うかもしれない 使用できるAPIを備えたホステッドサービスプロバイダーがあります (開示-私はそれとは何の関係もありません)。

1
Kevin

私の経験から、「PDFとして表示」のような機能は、「印刷」または「保存」というリンクでより適切に答えられ、その目的のために特定のHTMLスタイルでコンテンツを出力します。かつてあなたがやろうとしていることをやったが、最近では自分の考えを変えた。

1
Paulo Faria

単一のノードからPDFファイルを生成する場合は、 PDFを使用してmPDF モジュールをお勧めします。

それがあなたを助けることを願っています。

0
Ximizu Huynh

dompdf library をカスタムモジュールに実装できます。これは、PHPで記述されたHTMLレイアウトおよびレンダリングエンジンに準拠しています。 PDFレンダリングは PDFLib またはバンドルバージョンのR&OS CPDFクラスによって提供されます。

変換は非常に簡単です。次にコード例を示します。

<?php
// Require the Composer autoloader or use Composer Manager module.
// @see: http://getcomposer.org/doc/00-intro.md
require 'vendor/autoload.php';

// Disable DOMPDF's internal autoloader if you are using Composer Manager module.
define('DOMPDF_ENABLE_AUTOLOAD', false);

// include DOMPDF's default configuration
require_once 'vendor/dompdf/dompdf/dompdf_config.inc.php';

$htmlString = ''; // Replace $htmlString with html of of your content node.
$dompdf = new DOMPDF();
$dompdf->load_html($htmlString);
$dompdf->render();
$dompdf->stream("sample.pdf");
0
kenorb