プロジェクトのニーズに応じて、HTML コードを PDF または画像に変換して保存します。私は最初に Flying Saucer を使用して HTML コードを PDF ドキュメントに生成しましたが、この間に中国語のサポートや画像パスの問題も解決されました。それで十分ですが、テスト中に、一部の PDF ドキュメントで生成されるスタイルに問題があることがわかりました。検索した結果、Flying Saucer は古いテクノロジーであり、もう誰もやっていないため、あまり使いやすいものではないことがわかりました。 CSS3.0のサポート。
機能を実装する必要があり、HTML コードを他人に変更させるのは現実的ではないため、他のテクノロジーを試してください。その後、画像を生成するのに便利だろうと思って検索したところ、CSSBOX を使用して画像に HTML コードを生成できることがわかり、試してみたところうまくいき、喜んでこの機能をシステムに組み込みました。 。問題はなかったのですが、あるページで CSS3 を使用して斜めの直線を描画したのですが、CSSBOX を変換できませんでした。
実は最初、wkhtmltopdf で HTML コードを PDF ドキュメントに生成できることは知っていましたが、実際にはソフトウェアをインストールし、そのソフトウェアを Java コードで呼び出して変換を実行する必要がありました。 jar パッケージを直接導入できる他の技術は試していませんが、今のところ他に方法がないので、試してみましょう。今は画像に HTML コードを生成したいので、wkhtmltoimage を使用しています。実際には、wkhtmltox ソフトウェアをインストールするときに、wkhtmltopdf と wkhtmltoimage が同時にインストールされます。
wkhtmltoimage を使用する際には、多くの回り道がありました。主な理由は、私が Linux に詳しくなく、インストール中に多くの問題に遭遇したためです。あくまで個人的な意見ですので、多少の誤差はご容赦ください。次に、このソフトアーマーをJavaで呼び出す具体的な使い方を紹介します。具体的にはWindows環境とLinux環境に分かれます。
1. ソフトウェアのダウンロード アドレス:
公式ダウンロード アドレス ホームページ: http://wkhtmltopdf.org/downloads.html
このページで wkhtmltox の最新バージョンをダウンロードできます。
私はバージョン 0.12.2 を使用しています。ダウンロード アドレスは次のとおりです: http://download.gna.org/wkhtmltopdf/0.12/0.12.2/
2.
Windows 環境でのソフトウェアのインストールについては詳しく説明しません。私は http://download.gna.org/wkhtmltopdf/0.12/0.12.2/ から wkhtmltox-0.12.2_msvc2013-win64.exe のバージョンをダウンロードしました。 32 ビット ユーザーの場合は、ダウンロードする 32 ビット バージョンを選択できます。ダウンロードが完了したら、ダブルクリックしてインストールします。インストールが完了すると、インストール ディレクトリに wkhtmltopdf.exe と wkhtmltoimage.exe が見つかります。これら 2 つの実行プログラムは、PDF の変換と画像の変換に使用されます。これらの呼び出し方法については後ほど説明します。
3. Linux 環境のインストール
このバージョンの RPM wkhtmltox-0.12.2_linux-centos6-i386.rpm を http://download.gna.org/wkhtmltopdf/0.12/0.12.2/ パッケージからダウンロードしました。私の仮想マシンには 32 ビット バージョンの CentOS 6.5 がインストールされていますが、実際の状況に応じて Linux バージョンと 32 ビット バージョンと 64 ビット バージョンをダウンロードできます。それ。
ダウンロード方法。私と同じように使用する場合は、Linux 上で wget http://download.gna.org/wkhtmltopdf/0.12/0.12.2/wkhtmltox-0.12.2_linux-centos6-i386.rpm を直接使用してダウンロードできます。これは仮想マシンなので、最初にローカル マシンにダウンロードしてから、rz -be を使用して Linux にアップロードすることもできます。rz コマンドを使用して大きなファイルをアップロードする場合は、-be コマンドを追加する必要があります。アップロードは成功しません。 Linux に rz コマンドがない場合は、yum -y install lrzsz コマンドを使用して rz および sz コマンドをインストールできます。
以下でインストールを開始します:
1) RPM パッケージがダウンロードされたディレクトリに移動し、rpm -ivh wkhtmltox-0.12.2_linux-centos6-i386.rpm コマンドを実行します。結果は次のように表示されます。
失敗 その理由は、xorg-x11-fonts-Type1 と xorg-x11-fonts-75dpi の依存関係が欠落しているためです。そのため、最初に依存関係をインストールする必要があります。
2) xorg-x11-fonts-Type1 の依存関係をインストールします: yum -y install xorg-x11-fonts-Type1。
3) xorg-x11-fonts-75dpi の依存関係をインストールします: yum -y install xorg-x11-fonts-75dpi。 4) wkhtmltox を再度インストールします: rpm -ivh wkhtmltox-0.12.2_linux-centos6-i386.rpm、OK、インストールは成功しました。インストール中に他の依存関係が欠落している場合は、まず欠落している依存関係をインストールしてから、wkhtmltox をインストールする必要があります。欠落している依存関係をクエリする方法は、yum search xxxx (xxxx は欠落している依存関係のキーワード) で、クエリ結果から正しい yum ソースを見つけてインストールします。 5) インストールが完了したら、wkhtmltoimage http://www.baidu.com 1.jpg または wkhtmltopdf http://www.baidu.com 1.pdf を使用して、インストールが成功したかどうかをテストできます。 4. Java プログラム呼び出し Java を呼び出す場合、追加の Jar パッケージを追加する必要はありません。 Java 呼び出しコード:public class CustomWKHtmlToPdfUtil { public String getCommand(String sourceFilePath, String targetFilePath) { String system = System.getProperty("os.name"); if(system.contains("Windows")) { return "D:\\Program Files\\wkhtmltopdf\\wkhtmltoimage.exe " + sourceFilePath + " " + targetFilePath; }else if(system.contains("Linux")) { return "wkhtmltoimage " + sourceFilePath + " " + targetFilePath; } return ""; } public static void main(String[] args) throws Exception{ CustomWKHtmlToPdfUtil util = new CustomWKHtmlToPdfUtil(); String command = util.getCommand("e:/html/result.html", "e:/html/result.jpg"); Process process = Runtime.getRuntime().exec(command); process.waitFor(); //这个调用比较关键,就是等当前命令执行完成后再往下执行 System.out.println("执行完成"); } }
其实就是使用Java调用cmd的执行命令,但是调用要区分Windows和Linux系统,如果是Windows系统,则必须要指定wkhtmltoimage或者wkhtmltopdf的位置,我在Windows的安装位置是D:\Program Files\wkhtmltopdf,因此我在上面调用wkhtmltoimage时使用的路径是D:\Program Files\wkhtmltopdf\wkhtmltoimage.exe。在Linux环境下,由于软件在安装时,会把wkhtmltopdf和wkhtmlimage安装到系统命令中,因此不需要指定安装路径,直接调用就可以了。
我比较推荐使用wkhtmltoimage生成JPG图片,我调用wkhtmltopdf生成PDF时会有点问题。以上是我的一些经历,希望对大家有用!