您的Web应用程序需要在服务器上将HTML页面转换为PDF、DOC或TIFF。常见的选择都不理想:无头浏览器消耗大量内存并在高负载下崩溃,命令行进程启动慢且难以监控,云API会泄露您的数据并按次收费。
Total HTML Converter X提供完整的ActiveX / COM接口。只需在.NET、PHP、Python、ASP、VBScript或任何支持COM的运行时中实例化对象一次,调用Convert(),即可获得输出文件。无需派生子进程,无需浏览器渲染,无需外部API。文件永远不会离开您的服务器。
Process.Start(),没有stdout解析,没有僵尸进程。ActiveX是Microsoft的组件模型。在实际应用中,这意味着Total HTML Converter X会在Windows中注册一个COM类(HTMLConverter.HTMLConverterX),任何支持COM的运行时都可以实例化并调用它。您调用的不是REST API或命令行进程 — 而是将DLL加载到您的应用程序中,并对进程内对象调用方法。
这带来三个重要优势:
任何支持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()的第三个参数是用空格分隔的标志字符串。关键标志是-c FORMAT。更改它即可更改输出:
| 标志 | 输出 | 典型用途 |
|---|---|---|
-c PDF | 归档、打印、分发 | |
-c DOC / -c DOCX | Microsoft Word | 进一步编辑、协作 |
-c XLS | Excel | 从HTML中提取表格以供分析 |
-c TIFF | 多页TIFF | 传真系统、文档图像处理流水线 |
-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 = 200+ MB) |
| 并发性 | 每个进程线程安全 | 多进程 | 每个工作线程一个浏览器 |
| 错误处理 | 语言原生异常 | 解析stdout / 退出码 | 解析JSON协议 |
| 输出格式 | PDF、DOC、XLS、TIFF、JPEG、RTF、TXT、XHTML | 相同(同一引擎) | 通常仅PDF + PNG |
| 部署 | 单一MSI安装 | 单一MSI安装 | 浏览器 + 驱动程序 + 沙箱 |
| 需要网络 | 否 | 否 | 否(一旦安装完成) |
无GUI,无确认对话框,无"另存为"提示。在IIS下运行、在Windows服务中运行、或在无用户登录的计划任务中运行。
无需浏览器。转换器使用自己的代码解析HTML和CSS。这意味着Chrome更新不会破坏您的流水线,没有浏览器配置文件,没有驱动程序版本不匹配问题。
不同于按用户或按次收费,Total HTML Converter X按服务器授权。一个许可证为成千上万的用户提供服务。
安装程序附带可运行的ASP、PHP和C++示例项目。在Visual Studio、您选择的IDE或文本编辑器中打开它们,根据需要进行调整。
无水印,无转换次数限制,下载无需提供邮箱。将其集成到您的原型中,证明其有效,然后再购买许可证。
Windows 7/8/10/11 • Server 2012/2016/2019/2022
"替换了一条每个工作进程消耗2 GB内存且每晚都会崩溃的Puppeteer流水线。ActiveX调用完美融入我们现有的.NET工作服务 — 一次方法调用,无子进程,无需重启无头浏览器。内存保持平稳。PDF输出质量比Chromium给我们的效果更好,特别是在带表格的CSS上。"
Daniel Park Senior Backend Engineer
"我们在IIS下运行一个PHP计费门户。发票以HTML模板形式生成,实时转换为PDF,然后通过邮件发送给客户。COM集成只有三行PHP代码。无需云API,文件不会离开我们的服务器。相比我们评估过的按文档收费的API,$249.90的一次性许可证费用在使用的第一周就收回了成本。"
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客户端均可),保存为临时文件,然后将临时路径传递给转换器。