Adobe ColdFusion(2023 リリース)には、新しい PDF エンジン 2.0 が導入されています。
有効にする方法
ColdFusion Administrator/データとサービス/PDF サービスで、新しいエンジンのオプションがデフォルトで選択されています。
PDF 2.0 について
PDF エンジン 2.0 だけで、任意の HTML を完全な標準 PDF に変換することができます。HTML5、CSS3 および JavaScript をサポートしています。通常は、HTML から PDF へのサーバーサイド変換に使用されます。電子配布用の動的なデータドリブン型ドキュメント(レポート、請求書、フォーム、データシートなど)から、印刷および電子出版用の複雑な高画質 PDF(カタログ、マーケティング資料、技術ドキュメント、ジャーナルなど)までを対象としています。
この新しいエンジンは、デフォルトで、Windows、Linux、Mac および Solaris のすべてのプラットフォームで使用できます。
- 多数の PDF ファイルを変換する場合は、jetty.lax ファイルで –Xmx1024m を使用して、メモリ設定を 1024 MB に増やすことをお勧めします。
- web.xml ファイルの変更点 - 最後に言及されている 4 つの設定(下記)は、エンジン 1.0 にのみ適用され、新しいエンジン 2.0 には適用されません。
maxPDFConversionForService, startScanPort, endScanPort, maxMemoryUsage
HTML5
追加の前処理やクリーンアップを行わずに、HTML5 を PDF ドキュメントに変換できます。このエンジンでは、すべての HTML5 要素をサポートしています。
例
<cfhtmltopdf destination="canvas.pdf" overwrite="yes"> <!DOCTYPE html> <html lang="en"> <head> <meta charset="utf-8"> <title>Filling Color inside a Rectangle on the Canvas</title> <style> canvas { border: 1px solid #000; } </style> <script> window.onload = function() { var canvas = document.getElementById("myCanvas"); var context = canvas.getContext("2d"); context.rect(50, 50, 200, 100); context.fillStyle = "#FB8B89"; context.fill(); context.lineWidth = 5; context.strokeStyle = "black"; context.stroke(); }; </script> </head> <body> <canvas id="myCanvas" width="300" height="200"></canvas> </body> </html> </cfhtmltopdf>
出力
CSS3
計算、メディアクエリ、ボックスシャドウ、テキストシャドウおよびフィルターを使用できます。要素の変形、回転および拡大/縮小を行って、HTML と CSS の組み合わせを PDF に変換できます。このエンジンでは、領域、欄外要素、グリッドおよびフレキシブルボックスレイアウトをサポートしています。
例
<cfhtmltopdf destination="CSS3_Flexbox.pdf" overwrite="yes"> <!DOCTYPE html> <html lang="en"> <head> <meta charset="utf-8"> <title>Example of Controlling Flow inside Flex Container along Main Axis</title> <style> .flex-container { width: 80%; min-height: 300px; margin: 0 auto; font-size: 32px; display: -webkit-flex; -webkit-flex-direction: row-reverse; display: flex; flex-direction: row-reverse; border: 1px solid #666; } .flex-container div { padding: 10px; -webkit-flex: 1; -ms-flex: 1; flex: 1; } .item1 { background: #e84d51; } .item2 { background: #7ed636; } .item3 { background: #2f97ff; } </style> </head> <body> <div class="flex-container"> <div class="item1">Item 1</div> <div class="item2">Item 2</div> <div class="item3">Item 3</div> </div> </body> </html> </cfhtmltopdf>
出力
JavaScript
JavaScript ベースのレイアウトを PDF に移行できます。さらに、HTML5 Canvas、Highcharts およびその他の JavaScript ライブラリも標準でサポートされています。
例
<cfhtmltopdf destination=”js.pdf” overwrite="yes"> <!DOCTYPE html> <html> <head> <link rel = "stylesheet" href = "http://cdn.leafletjs.com/leaflet-0.7.3/leaflet.css" /> <script src = "http://cdn.leafletjs.com/leaflet-0.7.3/leaflet.js"></script> </head> <body> <div id = "map" style = "width: 900px; height: 580px"></div> <script> // マップオプションを作成 var mapOptions = { center: [17.385044, 78.486671], zoom: 10 } // マップオブジェクトを作成 var map = new L.map('map', mapOptions); // レイヤーオブジェクトを作成 var layer = new L.TileLayer('http://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png'); // レイヤーをマップに追加 map.addLayer(layer); </script> </body> </html> </cfhtmltopdf>
出力
PDF/A への準拠
PDF 2.0 では、PDF/A-1a または PDF/A-3a 準拠のファイルおよびその他の PDF/A サブ形式のファイルの作成をサポートしています。
PDF/A は、ドキュメントの長期的なアーカイブを目的とする一連の ISO 標準規格(「ISO 19005」)です。これらの標準規格の目的は、外観を再現すると共に、ドキュメントの構造を内包できるようにすることです。ドキュメントの表示に必要なすべての情報は、同じ方法で常にファイルに埋め込まれています。外部リソースへの依存は許可されていません。PDF/A-1a および PDF/A-3a では、出力 PDF ドキュメントがタグ付けされる必要もあるので、アクセシビリティの高いドキュメントが提供されます。
PDF 2.0 では、これらの要件にできる限り適合することが保証されます。
サポートされている PDF/A 準拠レベルは、PDF/A-1a、PDF/A-1b、PDF/A-2a、PDF/A-2b、PDF/A-2u、PDF/A-3a、PDF/A-3b および PDF/A-3u です。
準拠は、下記のように、cfhtmltopdf タグに属性として追加することができます。
例
<cfhtmltopdf source="input.html" destination="pdfa3u.pdf" conformance="PDFA3u" overwrite="yes"> </cfhtmltopdf>
ヘッダーとフッターの機能強化
PDF 2.0 では、ヘッダーとフッターで HTML コンテンツがサポートされています。
これまでは静的テキストのみでしたが、任意の HTML 要素を使用して素晴らしい現代的なヘッダーとフッターを作成できるようになりました。
<cfhtmltopdf> 何らかの HTML コンテンツ <cfhtmltopdfitem type="header"> <html> <table width="100%" style="font-size: 12px; font-family: Tahoma, sans-serif" > <tr> <td valign="top" align="left" width="50%"> <img border="0" height="88" src=https://www.google.co.uk/logos/doodles/2022/seasonal-holidays-2022- 6753651837109831.4-law.gif /> </td> <td valign="center" align="left" height="50%" width="50%"> <h1>Header</h1> </td> </tr> </table> <table width="100%" style="border-bottom: 1px; font-size: 10px; font-family: Tahoma, sans-serif; cellspacing=5" > <tr> <td valign="middle" align="center" width="10%"> <strong>Sl No. </strong> </td> <td valign="middle" align="left" width="36%"> <strong>Column1</strong> </td> <td valign="middle" align="right" width="10%"> <strong>Column2</strong> </td> <td valign="middle" align="right" width="12%"> <strong>Column3</strong> </td> </tr> </table> </html> </cfhtmltopdfitem> <cfhtmltopdfitem type="pagebreak"> </cfhtmltopdfitem> <cfhtmltopdfitem type="footer"> <p>footer</p> </cfhtmltopdfitem> </cfhtmltopdf>
出力