Webアプリケーションがサーバー上でHTMLページをPDF、DOC、またはTIFFに変換する必要があります。一般的な選択肢には難点があります。ヘッドレスブラウザはRAMを大量に消費し、負荷がかかるとクラッシュします。コマンドラインプロセスは起動が遅く、監視も困難です。クラウドAPIはデータを外部に流出させ、呼び出しごとに課金されます。
Total HTML Converter Xは、完全なActiveX / COMインターフェースを公開しています。.NET、PHP、Python、ASP、VBScript、またはCOM対応のランタイムからオブジェクトを一度インスタンス化し、Convert()を呼び出すだけで、出力ファイルが得られます。サブプロセスの生成もブラウザレンダリングも外部APIも不要です。ファイルがサーバーから出ることはありません。
Process.Start()も、stdout解析も、ゾンビプロセスもありません。(30日間体験版 — メール登録不要)
サーバーライセンスは$249.90から
ActiveXはMicrosoftのコンポーネントモデルです。実用的には、Total HTML Converter XがWindowsにCOMクラス(HTMLConverter.HTMLConverterX)を登録し、COM対応のランタイムがインスタンス化して呼び出せることを意味します。REST APIやコマンドラインプロセスを呼び出しているのではなく — DLLをアプリケーションにロードし、プロセス内オブジェクトのメソッドを呼び出しています。
これが重要な理由は3つあります。
COMを扱う任意の言語が動作します。C#およびVB.NETは.NET相互運用経由、C++はCoCreateInstance経由、PHPはCOMクラス経由、Pythonはpywin32経由、Classic ASPはServer.CreateObject経由、VBScript、JScript/WSH、Delphi、PowerShell、Rubyはwin32ole経由、Node.jsはwinax経由です。
reg query HKCR\HTMLConverter.HTMLConverterXを実行します。キーが存在すれば、COMオブジェクトの準備完了です。Type.GetTypeFromProgID()を使用します。PHPではnew COM("HTMLConverter.HTMLConverterX")を使います。Pythonではwin32com.client.Dispatch("HTMLConverter.HTMLConverterX")を使います。Convert(source, destination, options)を呼び出します。入力HTMLパス、出力ファイルパス、および-c PDF、-OwnerPassword secret、-Watermark CONFIDENTIALのようなフラグを含むオプション文字列を渡します。C# / .NET
var conv = Activator.CreateInstance(
Type.GetTypeFromProgID("HTMLConverter.HTMLConverterX"));
conv.GetType().InvokeMember("Convert",
System.Reflection.BindingFlags.InvokeMethod, null, conv,
new object[] { @"C:\In\report.html", @"C:\Out\report.pdf",
"-c PDF -OwnerPassword s3cret -NoPrint" });
PHP
$c = new COM("HTMLConverter.HTMLConverterX");
$c->Convert(
"C:\\In\\report.html",
"C:\\Out\\report.pdf",
"-c PDF -Watermark DRAFT -log C:\\Logs\\html.log"
);
Python (pywin32)
import win32com.client
conv = win32com.client.Dispatch("HTMLConverter.HTMLConverterX")
conv.Convert(
r"C:\In\report.html",
r"C:\Out\report.pdf",
"-c PDF -OwnerPassword secret -NoPrint"
)
Classic ASP / VBScript
Set Conv = Server.CreateObject("HTMLConverter.HTMLConverterX")
Conv.Convert _
"C:\In\report.html", _
"C:\Out\report.pdf", _
"-c PDF -Watermark ""COMPANY CONFIDENTIAL"""
Set Conv = Nothing
Convert()の第3引数はスペース区切りのフラグ文字列です。キーとなるフラグは-c FORMATです。これを変更すると出力が変わります。
| フラグ | 出力 | 主な用途 |
|---|---|---|
-c PDF | アーカイブ、印刷、配布 | |
-c DOC / -c DOCX | Microsoft Word | さらなる編集、コラボレーション |
-c XLS | Excel | HTMLから表を抽出して分析 |
-c TIFF | マルチページTIFF | FAXシステム、ドキュメントイメージングパイプライン |
-c JPEG | JPEG画像 | サムネイル、埋め込みプレビュー |
-c RTF | リッチテキスト | DOCXを使わないWord互換の編集可能な出力 |
-c TXT | プレーンテキスト | テキストインデックス、検索システム |
-c XHTML | XHTML | 整形されたHTML出力 |
セキュリティおよびレイアウトフラグと組み合わせることができます。
-OwnerPassword secret — PDFオーナーパスワード(権限を制御)-UserPassword open123 — PDFオープンパスワード-NoPrint / -NoCopy / -NoModify — PDFの権限制限-Watermark "CONFIDENTIAL" — すべてのページにウォーターマークテキストを押印-PageSize A4 / Letter / Legal — 用紙サイズ-log C:\Logs\html.log — 監視用に変換ログを出力| 項目 | Total HTML Converter X (ActiveX) | コマンドライン | ヘッドレスブラウザ |
|---|---|---|---|
| 起動コスト | なし(プロセス内DLL) | 呼び出しごとにプロセス生成 | 重い — 新しいブラウザインスタンス |
| メモリフットプリント | 小 | 小 | 大(Chromium = 200MB以上) |
| 並行処理 | プロセスごとにスレッドセーフ | マルチプロセス | ワーカーごとに1ブラウザ |
| エラーハンドリング | 言語ネイティブ例外 | stdout / 終了コードを解析 | JSONプロトコルを解析 |
| 出力フォーマット | PDF, DOC, XLS, TIFF, JPEG, RTF, TXT, XHTML | 同じ(同じエンジン) | 通常PDF + PNGのみ |
| デプロイ | 単一のMSIインストール | 単一のMSIインストール | ブラウザ + ドライバー + サンドボックス |
| ネットワーク必須 | 不要 | 不要 | 不要(インストール後) |
GUIなし、確認ダイアログなし、「名前を付けて保存」プロンプトなし。IIS配下、Windowsサービス内、またはログインユーザーなしのスケジュールタスクから実行できます。
ブラウザ不要。コンバーターは独自のコードでHTMLおよびCSSを解析します。つまり、Chromeのアップデートがパイプラインを壊すこともなく、ブラウザプロファイルも、ドライバーのバージョン不一致もありません。
ユーザーごとや変換ごとの価格設定とは異なり、Total HTML Converter Xはサーバーごとにライセンスされます。1つのライセンスで数千のユーザーにサービスを提供できます。
インストーラーには動作するASP、PHP、C++のサンプルプロジェクトが含まれています。Visual Studio、お好みのIDE、またはテキストエディタで開いてニーズに合わせて適応させてください。
ウォーターマークなし、変換制限なし、ダウンロードにメール登録不要。プロトタイプに統合し、動作を確認してから、ライセンスを取得してください。
(30日間体験版 — メール登録不要)
サーバーライセンスは$249.90から
Windows 7/8/10/11 • Server 2012/2016/2019/2022
"ワーカーあたり2GBのRAMを消費し、毎晩クラッシュしていたPuppeteerパイプラインを置き換えました。ActiveX呼び出しは既存の.NETワーカーサービスに収まります — 1回のメソッド呼び出し、サブプロセスなし、再起動するヘッドレスブラウザなし。メモリは一定のままです。PDF出力品質はChromiumよりも優れており、特にテーブル付きCSSでそう感じます。"
Daniel Park Senior Backend Engineer
"IIS配下でPHPの請求ポータルを運用しています。請求書はHTMLテンプレートとして生成され、即座にPDFに変換され、顧客にメールで送信されます。COM統合はPHPコード3行です。クラウドAPIなし、ファイルがサーバーから出ることもありません。$249.90の一回限りのライセンスは、評価していたドキュメント単位APIと比較して、使用初週で元が取れました。"
Amira Hassan Web Applications Developer
"15年以上稼働しているClassic ASPアプリケーションと統合しました。<code>Server.CreateObject("HTMLConverter.HTMLConverterX")</code>がIIS配下で一発で動きました。32ビットと64ビットの登録が分かれていて助かります — 私は32ビット版が必要でした。VB6向けのサンプルがもっとあるとドキュメントは良くなりますが、ASPサンプルは適応するのに十分近いものでした。"
Victor Rossi IT Integration Lead
CoCreateInstance経由)、PHP(COMクラス経由)、Python(pywin32経由)、Classic ASPおよびVBScript(Server.CreateObject経由)、JScript / WSH、Delphi、PowerShell、Ruby(win32ole経由)、Node.js(winaxまたは類似のバインディング経由)が含まれます。Server.CreateObject経由で呼び出します。ASP.NETアプリケーションはCOMクラスを直接参照します。IISアプリケーションプールのアイデンティティは、ソースHTMLファイルへの読み取りアクセス、出力ディレクトリへの書き込みアクセス、COMレジストリハイブへの読み取りアクセスが必要です。Classic ASPの場合、32ビット版をインストールした場合はアプリプールで32ビットアプリケーションを有効にしてください。Convert()メソッドはCOM例外をスローし、言語側でネイティブ例外として表面化します — .NETではCOMException、PHPではcom_exception、Pythonではpywintypes.com_error、VBScriptではランタイムエラーです。例外にはHRESULTと記述的なメッセージが含まれており、ログ記録や復旧が可能です。Convert()に渡されるオプション文字列の一部としても受け入れられます。例: Convert(src, dst, "-c PDF -Watermark DRAFT -OwnerPassword secret -NoPrint")。windowsservercoreベースイメージで機能しますが、より小さなnanoserverイメージ(完全なCOMサポートがない)では機能しません。30日間の体験版を使って正確な展開ターゲットを確認するのが簡単です。Convert()メソッドはソースとしてローカルファイルパスを期待します。ライブURLを処理する必要がある場合は、まずアプリケーションでダウンロードし(任意のHTTPクライアントが使用可能)、一時ファイルに保存してから、その一時パスをコンバーターに渡してください。無料トライアルをダウンロードして、ファイルを数分で変換。
クレジットカードもメールアドレスも不要。