ホームページ  >  記事  >  バックエンド開発  >  PHP は、PHP/JAVA 経由で JasperReport レポートを呼び出します。 Bridge_PHP チュートリアル

PHP は、PHP/JAVA 経由で JasperReport レポートを呼び出します。 Bridge_PHP チュートリアル

WBOY
WBOYオリジナル
2016-07-13 17:46:46926ブラウズ

この記事では、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 ドキュメントを出力できます。

 

 

抜粋自 有所である、有所でない

http://www.bkjia.com/PHPjc/478560.htmlwww.bkjia.comtru​​ehttp://www.bkjia.com/PHPjc/478560.html技術記事 JasperReport (http://jasperforge.org/) は、強力で活発なテーブル生成ツールであり、次のようなものを表示できます。
声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。