PHP は、PHP/JAVA 経由で JasperReport レポートを呼び出します。 Bridge_PHP チュートリアル
この記事では、PHP-Java-Bridge テクノロジを使用して JasperReport Web レポートの出力を実現する方法について説明します。
JasperReport (http://jasperforge.org/) は、豊富なページ コンテンツを表示し、PDF、HTML、または XML 形式に変換できる、強力かつ柔軟なレポート生成ツールです。このライブラリは完全に Java で書かれており、J2EE や Web アプリケーションを含むさまざまな Java アプリケーションで動的コンテンツを生成するために使用できます。
付属のレポート設計ツールは iReport (無料) です。このツールは視覚的なレポート設計を実現し、PDF、HTML、および WORD の一般的な形式でレポートを出力できます。保存されたファイルには .jrxml という拡張子が付いており、正常に実行するには Java 環境が必要です。 PHP は直接呼び出すことができません。
PHP は直接呼び出すことができないため、PHP-Java-Bridge テクノロジに頼る必要があります。詳細については、http://php-java-bridge.sourceforge.net/pjb/index.php
を参照してください。1. tomcat をインストールします。exe インストール バージョンを選択すると、インストール中に jre 環境が自動的にインストールされます。tomcat の圧縮バージョンの場合は、Java 環境を別途インストールする必要があり、設定がより複雑になります。 Tomcat のインストール バージョンを使用することをお勧めします。
Tomcat ポートを 6000 に設定します。デフォルトのポート 8080 は占有されています。サイトのルート ディレクトリは、Tomcat の下の Web アプリです
。2. php-java-bridge パッケージを http://php-java-bridge.sourceforge.net/pjb/download.php にダウンロードします。ダウンロード後、その中に JavaBridge.war ファイルが含まれています。 Web アプリケーションの場合、http://localhost:6000/JavaBridge/ を実行すると、Web アプリケーションに JavaBridge ディレクトリが生成されます。
3. ireport3.0 をインストールします (更新バージョンがあります)。C:Program FilesJasperSoftiReport-3.0.0lib のすべての内容を tomcat の webapps/JavaBridge/WEB-INF/lib/ にコピーします。ジャバブリッジ、大丈夫です。
4. 生成された JavaBridge ディレクトリから Java ディレクトリを PHP サイトにコピーします (または、php.ini ファイルを見つけて、内部のallow_url_include パラメータを on に変更し、JavaBridge の下の java/java.inc を直接参照します)。レポート ファイル http://www.rjohnson.id.au/download/jasper/test.jrxml をダウンロードし、PHP サイトの下に配置します。
次に、PHP サイトの下に PHP ファイルを作成します
ireport.php (コードにはポートが含まれるため、個人的な状況に応じて変更する必要があります)
1
2
3 /**
4 * Java 拡張機能がロードされたかどうかを確認します。
5 */
6 関数 checkJavaExtension()
7{
8 if(!extension_loaded('java'))
9 {
10 $sapi_type = php_sapi_name();
11
12 //$port = (isset($_SERVER['SERVER_PORT']) && (($_SERVER['SERVER_PORT'])>1024)) $_SERVER['SERVER_PORT'] : '6000';
13 //echo $port;
14 $ポート = 6000;
15 if ($sapi_type == "cgi" || $sapi_type == "cgi-fcgi" || $sapi_type == "cli")
16
17 if(!(PHP_SHLIB_SUFFIX=="so" && @dl('java.so'))&&!(PHP_SHLIB_SUFFIX=="dll" && @dl('php_java.dll'))&&!(@include_once("java /Java.inc"))&&!(require_once("http://127.0.0.1:$port/JavaBridge/java/Java.inc")))
18 {
19 return "Java 拡張機能がインストールされていません。";
20 }
21 }
他22個
23 {
24 if(!(@include_once("java/Java.inc")))
25 {
26
27 require_once("http://127.0.0.1:$port/JavaBridge/java/Java.inc");
28 }
29 }
30 }
31 if(!function_exists("java_get_server_name"))
32 {
33 return "ロードされた Java 拡張機能は PHP/Java ブリッジではありません";
34 }
35
36 true を返します;
37 }
38
39 /**
40 * PHP の値を Java の値に変換します...
41 * @param string $value
42 * @param string $className
43 * @returns ブール値の成功
44 */
45 関数 ConvertValue($value, $className)
46 {
47 // 文字列の場合は、通常の変換を使用します
48 // Java 拡張機能のメソッド...
49 試してみます
50 {
51 if ($className == 'java.lang.String')
52 {
53 $temp = new Java('java.lang.String', $value);
54 $temp を返します。
55 }
56 else if ($className == 'java.lang.Boolean' ||
57 $className == 'java.lang.Integer' ||
58 $className == 'java.lang.Long' ||
59 $className == 'java.lang.Short' ||
60 $className == 'java.lang.Double' ||
61 $className == 'java.math.BigDecimal')
62 {
63 $temp = new Java($className, $value);
64 $temp を返します。
65 }
66 else if ($className == 'java.sql.Timestamp' ||
67 $className == 'java.sql.Time')
68 {
69 $temp = 新しい Java($className);
70 $javaObject = $temp->valueOf($value);
71 $javaObject を返す。
72 }
73 }
74 catch (例外 $err)
75 {
76 echo ( '値を変換できません、' . $value .
77 ' を ' に変換できませんでした。 $クラス名);
78 false を返します。
79 }
80
81 echo ( '値を変換できません。クラス名 '.$className.
82 「認識されません」);
83 falseを返します。
84 }
85
86
87 checkJavaExtension();
88
89 $compileManager = new JavaClass("net.sf.jasperreports.engine.JasperCompileManager");
90 $report = $compileManager->compileReport(realpath("test.jrxml"));
91
92 $fillManager = new JavaClass("net.sf.jasperreports.engine.JasperFillManager");
93
94 $params = 新しい Java("java.util.HashMap");
95 $params->put("テキスト", "これはテスト文字列です");
96 $params->put("数値", 3.00);
97 $params->put("日付", ConvertValue("2007-12-31 0:0:0", "java.sql.Timestamp"));
98
99 $emptyDataSource = new Java("net.sf.jasperreports.engine.JREmptyDataSource");
100 $jasperPrint = $fillManager->fillReport($report, $params, $emptyDataSource);
101
102 $outputPath = realpath(".")."/"."output.pdf";
103
104 $exportManager = new JavaClass("net.sf.jasperreports.engine.JasperExportManager");
105 $exportManager->exportReportToPdfFile($jasperPrint, $outputPath);
106
107 header("コンテンツタイプ: application/pdf");
108 読み取りファイル($outputPath);
109
110 リンク解除($outputPath);
111
112 ?>
5、PHP ステーション ポイント、http://www.BkJia.com :8080/ireport.php にアクセスすると、PDF ドキュメントを出力できます。
抜粋自 有所である、有所でない

PHPが多くのWebサイトよりも優先テクノロジースタックである理由には、その使いやすさ、強力なコミュニティサポート、広範な使用が含まれます。 1)初心者に適した学習と使用が簡単です。 2)巨大な開発者コミュニティと豊富なリソースを持っています。 3)WordPress、Drupal、その他のプラットフォームで広く使用されています。 4)Webサーバーとしっかりと統合して、開発の展開を簡素化します。

PHPは、特にWeb開発の分野で、最新のプログラミングで強力で広く使用されているツールのままです。 1)PHPは使いやすく、データベースとシームレスに統合されており、多くの開発者にとって最初の選択肢です。 2)動的コンテンツ生成とオブジェクト指向プログラミングをサポートし、Webサイトを迅速に作成および保守するのに適しています。 3)PHPのパフォーマンスは、データベースクエリをキャッシュおよび最適化することで改善でき、その広範なコミュニティと豊富なエコシステムにより、今日のテクノロジースタックでは依然として重要になります。

PHPでは、弱い参照クラスを通じて弱い参照が実装され、ガベージコレクターがオブジェクトの回収を妨げません。弱い参照は、キャッシュシステムやイベントリスナーなどのシナリオに適しています。オブジェクトの生存を保証することはできず、ごみ収集が遅れる可能性があることに注意する必要があります。

\ _ \ _ Invokeメソッドを使用すると、オブジェクトを関数のように呼び出すことができます。 1。オブジェクトを呼び出すことができるように\ _ \ _呼び出しメソッドを定義します。 2。$ obj(...)構文を使用すると、PHPは\ _ \ _ Invokeメソッドを実行します。 3。ロギングや計算機、コードの柔軟性の向上、読みやすさなどのシナリオに適しています。

繊維はPhp8.1で導入され、同時処理機能が改善されました。 1)繊維は、コルーチンと同様の軽量の並行性モデルです。 2)開発者がタスクの実行フローを手動で制御できるようにし、I/O集約型タスクの処理に適しています。 3)繊維を使用すると、より効率的で応答性の高いコードを書き込むことができます。

PHPコミュニティは、開発者の成長を支援するための豊富なリソースとサポートを提供します。 1)リソースには、公式のドキュメント、チュートリアル、ブログ、LaravelやSymfonyなどのオープンソースプロジェクトが含まれます。 2)StackOverFlow、Reddit、およびSlackチャネルを通じてサポートを取得できます。 3)開発動向は、RFCに従うことで学ぶことができます。 4)コミュニティへの統合は、積極的な参加、コード共有への貢献、および学習共有への貢献を通じて達成できます。

PHP and Python each have their own advantages, and the choice should be based on project requirements. 1.PHPは、シンプルな構文と高い実行効率を備えたWeb開発に適しています。 2。Pythonは、簡潔な構文とリッチライブラリを備えたデータサイエンスと機械学習に適しています。

PHPは死にかけていませんが、常に適応して進化しています。 1)PHPは、1994年以来、新しいテクノロジーの傾向に適応するために複数のバージョンの反復を受けています。 2)現在、電子商取引、コンテンツ管理システム、その他の分野で広く使用されています。 3)PHP8は、パフォーマンスと近代化を改善するために、JITコンパイラおよびその他の機能を導入します。 4)Opcacheを使用してPSR-12標準に従って、パフォーマンスとコードの品質を最適化します。


ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

AI Hentai Generator
AIヘンタイを無料で生成します。

人気の記事

ホットツール

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

WebStorm Mac版
便利なJavaScript開発ツール

MantisBT
Mantis は、製品の欠陥追跡を支援するために設計された、導入が簡単な Web ベースの欠陥追跡ツールです。 PHP、MySQL、Web サーバーが必要です。デモおよびホスティング サービスをチェックしてください。

SublimeText3 Linux 新バージョン
SublimeText3 Linux 最新バージョン

メモ帳++7.3.1
使いやすく無料のコードエディター
