HTMLをPDFファイルに変換するJava
概要
この記事では、Javaを使用してHTMLをPDFに変換する方法を説明します。コードは非常にシンプルで、HTMLをDocumentクラスにロードし、出力PDFとして保存するだけです。JavaでMHTMLをPDFに変換するのも同様です。以下のトピックをカバーしています。
Java HTML to PDF コンバーターライブラリ
Aspose.PDF for Java は、既存のHTMLドキュメントをPDFにシームレスに変換できるPDF操作APIです。HTMLをPDFに変換するプロセスは柔軟にカスタマイズできます。
HTMLをPDFに変換
以下のJavaコードサンプルは、HTMLドキュメントをPDFに変換する方法を示しています。
- HtmlLoadOptions クラスのインスタンスを作成します。
- Document オブジェクトを初期化します。
- Document.save(String) メソッドを呼び出して出力PDFドキュメントを保存します。
// ソースPDFドキュメントを開く
Document document = new Document(DATA_DIR + "PDFToHTML.pdf")
// HTML SaveOptionsオブジェクトをインスタンス化
HtmlSaveOptions htmlsaveOptions = new HtmlSaveOptions();
// ドキュメントを保存
document.save(DATA_DIR + "MultiPageHTML_out.html", htmlsaveOptions);
HTMLからPDFへの高度な変換
HTML変換エンジンには、変換プロセスを制御するためのいくつかのオプションがあります。
メディアクエリのサポート
- HTML LoadOptions を作成します。
- プリントまたはスクリーンモードを設定します。
- Document オブジェクト を初期化します。
- 出力PDFドキュメントを保存します。
メディアクエリは、異なるデバイスに合わせたスタイルシートを配信するための一般的な技術です。HtmlMediaType プロパティを使用してデバイスタイプを設定できます。
// HTML LoadOptionsを作成
HtmlLoadOptions options = new HtmlLoadOptions();
// プリントまたはスクリーンモードを設定
options.setHtmlMediaType(HtmlMediaType.Print);
// ドキュメントオブジェクトを初期化
String htmlFileName = Paths.get(DATA_DIR.toString(), "test.html").toString();
Document document = new Document(htmlFileName, options);
// 出力PDFドキュメントを保存
document.save(Paths.get(DATA_DIR.toString(), "HTMLtoPDF.pdf").toString());
document.close();
フォント埋め込みの有効化(無効化)
- 新しいHtml LoadOptions を追加します。
- フォント埋め込みを有効/無効にします。
- 新しいドキュメントを保存します。
HTMLページはしばしばフォントを使用します(例:ローカルフォルダのフォント、Google Fontsなど)。ドキュメント内のフォント埋め込みを制御することも、IsEmbedFonts プロパティを使用して可能です。
HtmlLoadOptions options = new HtmlLoadOptions();
// フォント埋め込みを有効/無効にします
options.setEmbedFonts(true);
Document document = new Document(DATA_DIR + "test_fonts.html", options);
document.save(DATA_DIR + "html_test.PDF");
document.close();
外部リソースの読み込みを管理する
変換エンジンは、HTMLドキュメントに関連付けられた特定のリソースの読み込みを制御するメカニズムを提供します。
HtmlLoadOptions クラスには CustomLoaderOfExternalResources プロパティがあり、これを使用してリソースローダーの動作を定義できます。
HtmlLoadOptions options = new HtmlLoadOptions();
options.setCustomLoaderOfExternalResources(
new LoadOptions.ResourceLoadingStrategy() {
public LoadOptions.ResourceLoadingResult invoke(String resourceURI) {
// 置換のためのクリアテンプレートリソースを作成:
LoadOptions.ResourceLoadingResult res = new LoadOptions.ResourceLoadingResult(new byte[] {});
// i.imgur.comサーバーの場合は空のバイト配列を返す
if (resourceURI.contains("i.imgur.com")) {
return res;
} else {
// デフォルトのリソースローダーでリソースを処理
res.setLoadingCancelled(true);
return res;
}
}
});
Document document = new Document(DATA_DIR + "test.html", options);
document.save(DATA_DIR + "html_test.PDF");
document.close();
MHTMLをPDFに変換
オンラインでMHTMLをPDFに変換してみてください
Aspose.PDF for Javaは、オンラインの無料アプリケーション“MHTML to PDF”を提供しており、その機能と品質を調査することができます。
MHTML、MIME HTMLの略であり、通常は外部リンクによって表されるリソース(例えば画像、Flashアニメーション、Javaアプレット、オーディオファイル)をHTMLコードと共に1つのファイルに統合するために使用されるウェブページアーカイブ形式です。MHTMLファイルの内容は、MIMEタイプmultipart/relatedを使用してHTMLメールメッセージとしてエンコードされます。
次のコードスニペットは、MHTMLファイルをJavaでPDF形式に変換する方法を示しています。
// MHTMLファイルの読み込みオプションを指定するためのMhtLoadOptionsのインスタンスを作成します。
MhtLoadOptions options = new MhtLoadOptions();
// MHTMLファイルのパスを設定します。
String mhtmlFileName = Paths.get(DATA_DIR.toString(), "samplefile.mhtml").toString();
// MHTMLファイルをDocumentオブジェクトに読み込みます。
Document document = new Document(mhtmlFileName, options);
// ドキュメントをPDFファイルとして保存します。
document.save(Paths.get(DATA_DIR.toString(), "MarkdowntoPDF.pdf").toString());
// ドキュメントを閉じます。
document.close();