在Web服务器上将Doc转换为PDF, HTML, XLS, 图像和文本。
Windows
2000/2003/Vista
7/8/10/11
and
2012/2016/2019/2022 Server
and
Docker/Citrix/Wine
Total Doc Converter X 是一款服务器端 SDK,可将 Word 文档(DOC、DOCX、DOCM、RTF、TXT)转换为 PDF、HTML、XHTML、XLS、JPG、TIFF、PNG、RTF 和 Unicode TXT—无需在服务器上安装 Microsoft Word、Office Interop 或任何无界面 Office 实例。它以静默方式运行:无图形界面、无对话框、无弹窗。Total Doc Converter X 同时提供命令行程序和 ActiveX/COM 接口,可直接接入 ASP、PHP、.NET、Python、Ruby、Java 以及任何支持 COM 的后端。源格式覆盖范围:
-Recurse -kfs)实现整棵文档树的批量处理;与 Total Folder Monitor 联动,实现文件到达即触发的热文件夹自动转换。
多用户友好:在 Windows 服务器上一次安装,即可作为 Web 服务对外暴露,或作为 Windows 服务运行。多线程引擎以最高速度处理批量任务。兼容 IIS、Docker、Citrix 和 Wine。
免费试用(30 天试用期,无任何限制),亲自验证它是否物有所值。
当前支持的部分文件格式转换:
|
|
|
LLM 智能体(Claude、ChatGPT、Cursor、Cline)和检索框架(LangChain、LlamaIndex、Haystack)并不读取 DOCX — 它们读取的是文本。Total Doc Converter X 会把 Word 文档写成 GitHub-Flavored Markdown,配以结构化的 frontmatter 与可选的 Docling 兼容旁路文件,让文档进入您的向量存储时保留其标题、列表、表格以及内嵌图片引用 — 而不是变成一段丢失了章节结构的扁平文字。
选择 Markdown 输出后您会得到:
Heading 1…Heading 6 变成 # / ## / ###;项目符号与编号列表保留为列表;Quote 样式映射为 > 引用块
 形式引用,存在时一并保留原始题注
source_file、format(MIME)、来自文档元数据的 title 与 author、created、modified、检测到的 languages、generator,以及用于溯源的 binary_hash
.docling.json 旁路文件 — 符合 Docling schema 的 JSON:表格边界矩形、列表嵌套层级、样式锚点,以及分块器可读取的 chunks_hint 数组
这就是 CoolUtils RAG Adapter — 一套统一的 Markdown 约定,由每款 Total Converter X 产品共享。完整规范、样例 .md + .docling.json 以及集成代码片段,请见 Coolutils Converter X — RAG Adapter 页面。
string src = @"C:\test\Source.docx";
string dest = @"C:\test\Dest.pdf";
var cnv = new DocConverterX();
cnv.Convert(src, dest, "-cPDF -log c:\\test\\Doc.log");
if (!string.IsNullOrEmpty(cnv.ErrorMessage))
throw new Exception(cnv.ErrorMessage);
public static class Function1
{
[FunctionName("Function1")]
public static async Task Run(
[HttpTrigger(AuthorizationLevel.Anonymous, "get", "post", Route = null)] HttpRequest req,
ILogger log)
{
StringBuilder sbLogs = new StringBuilder();
sbLogs.AppendLine("started...");
try
{
ProcessStartInfo startInfo = new ProcessStartInfo();
startInfo.CreateNoWindow = true;
startInfo.UseShellExecute = false;
var assemblyDirectoryPath = Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location);
assemblyDirectoryPath = assemblyDirectoryPath.Substring(0, assemblyDirectoryPath.Length - 4);
var executablePath = $@"{assemblyDirectoryPath}\Converter\DocConverterX.exe";
sbLogs.AppendLine(executablePath + "...");
var srcPath = $@"{assemblyDirectoryPath}\src\sample.docx";
var outPath = Path.GetTempFileName() + ".pdf";
startInfo.FileName = executablePath;
if (File.Exists(outPath))
{
File.Delete(outPath);
}
if (File.Exists(executablePath) && File.Exists(srcPath))
{
sbLogs.AppendLine("files exists...");
}
else
sbLogs.AppendLine("EXE & source files NOT exists...");
startInfo.WindowStyle = ProcessWindowStyle.Hidden;
startInfo.Arguments = $"\"{srcPath}\" \"{outPath}\" -cPDF";
using (Process exeProcess = Process.Start(startInfo))
{
sbLogs.AppendLine($"wait...{DateTime.Now.ToString()}");
exeProcess.WaitForExit();
sbLogs.AppendLine($"complete...{DateTime.Now.ToString()}");
}
sbLogs.AppendLine("Conversion complete.");
}
catch (Exception ex)
{
sbLogs.AppendLine(ex.ToString());
}
return new OkObjectResult(sbLogs);
}
}
dim C
Set C=CreateObject("DocConverter.DocConverterX")
C.Convert "c:\source.docx", "c:\dest.pdf", "-cPDF -log c:\doc.log"
Response.Write C.ErrorMessage
set C = nothing
dim C
Set C=CreateObject("DocConverter.DocConverterX")
Response.Clear
Response.AddHeader "Content-Type", "binary/octet-stream"
Response.AddHeader "Content-Disposition", "attachment; filename=test.pdf"
Response.BinaryWrite C.ConvertToStream("C:\www\ASP\Source.docx", "C:\www\ASP", "-cpdf -log c:\doc.log")
set C = nothing
$src="C:\\test\\test.docx";
$dest="C:\\test\\test.pdf";
if (file_exists($dest)) unlink($dest);
$c= new COM("DocConverter.DocConverterX");
$c->convert($src,$dest, "-cPDF -log c:\\test\\Doc.log");
if (file_exists($dest)) echo "OK"; else echo "fail:".$c->ErrorMessage;
require 'win32ole'
c = WIN32OLE.new('DocConverter.DocConverterX')
src = "C:\\test\\test.docx"
dest = "C:\\test\\test.pdf"
c.convert(src, dest, "-cPDF -log c:\\test\\Doc.log")
if not File.exist?(dest)
puts c.ErrorMessage
end
import win32com.client
import os.path
c = win32com.client.Dispatch("DocConverter.DocConverterX")
src = "C:\\test\\test.docx"
dest = "C:\\test\\test.pdf"
c.convert(src, dest, "-cPDF -log c:\\test\\Doc.log")
if not os.path.exists(dest):
print(c.ErrorMessage)
uses Dialogs, Vcl.OleAuto;
var
c: OleVariant;
begin
c := CreateOleObject('DocConverter.DocConverterX');
c.Convert('c:\test\source.docx', 'c:\test\dest.pdf', '-cPDF -log c:\test\Doc.log');
if c.ErrorMessage <> '' then
ShowMessage(c.ErrorMessage);
end;
var c = new ActiveXObject("DocConverter.DocConverterX");
c.Convert("C:\\test\\source.docx", "C:\\test\\dest.pdf", "-cPDF");
if (c.ErrorMessage != "")
alert(c.ErrorMessage)
use Win32::OLE; my $src = "C:\\test\\test.docx"; my $dest = "C:\\test\\test.pdf"; my $c = CreateObject Win32::OLE 'DocConverter.DocConverterX'; $c->convert($src, $dest, "-cPDF -log c:\\test\\Doc.log"); print $c->ErrorMessage if -e $dest;
"到目前为止,Total Doc Converter X 一直在正确完成工作,即在 Windows 计划任务中通过命令行将 Doc 文件转换为 PDF 文件。如果遇到任何问题,我一定会联系你们。感谢这款产品。"
Brandon Belma
NSG Consulting
"我们使用 Total Doc Converter 已有数年,最近刚刚升级到 X 版本。它一直运行得很好,我们对这款产品非常满意。我们用它把文档转换为 PDF 格式。我打算仔细看看文档,看还能用它做些什么。"
Todd Braley
IT Manager, DRI Title And Escrow
"客户提交的诉状和动议是带有内嵌批注和修订记录的 DOCX 文件。Total Doc Converter X 配合 -PFXFile/-PFXPass 生成的签名归档 PDF 能被法院系统接受。我们替换掉了原先的 Word Interop 流程—过去只要客户发来一个损坏的 DOC,那条流水线就会崩溃;这里内置的解析器更宽容,而 Word 在那种情况下根本拒绝打开文件。已在生产环境运行五年,没有一次故障可以归咎于这款转换器。"
Marek L.
Senior Backend Developer at a legal-tech vendor
"员工政策文档由客户以数十种企业模板的 DOCX 形式发送过来。我们在文档进入员工门户之前,将每一份都渲染为带水印戳记和 Bates 页码的 PDF。Total Doc Converter X 加上 Total Folder Monitor:客户把文件丢进收件文件夹,转换器把它们处理掉,门户再取走 PDF。我们任何一台转换虚拟机上都没有装 Word,没有授权方面的疑虑,按我们目前的硬件吞吐量大约是每分钟 200 份文档。"
Yuna K.
DevOps Engineer at an HR SaaS
"我们以 Royalty-Free 许可证将 Total Doc Converter X 集成到自家的文档管理产品中。一次性的项目费用只是 Aspose.Words 按开发人员订阅价格的零头。我们的安装程序会发布并注册 ActiveX,应用程序直接调用它,最终用户只看到我们自己的界面。32 位 ActiveX 的限制让我们花了几天时间重做流水线,但当我们询问变通方案时,技术支持响应得很及时。"
Karim Z.
Independent Software Vendor
在服务器上将 Word 文档转换为 PDF、图像及其他格式的开发人员和 IT 团队
通过 ActiveX 为您的 Web 应用添加 DOC 转 PDF 功能
Web 开发人员将 Total Doc ConverterX 集成到 ASP、PHP 或 .NET 应用程序中,让用户可以上传 Word 文件并获得转换后的 PDF、HTML 或图像输出。转换器在服务器上静默运行,无图形界面,可同时处理多个转换请求而不中断。
将 Word 上传文件转换为 PDF 和 TIFF 用于归档系统
文档管理平台使用 Total Doc ConverterX 将传入的 DOC 和 DOCX 文件转换为标准化存储用的 PDF 或基于图像归档用的 TIFF。转换器精确保留文档版式,并在批量处理整个目录树时保持文件夹结构。
通过命令行在服务器上转换 Word 文件
企业 IT 团队通过计划批处理任务运行 Total Doc ConverterX,转换来自电子邮件系统、上传门户和共享驱动器的 Word 文件。配合 Total Folder Monitor 使用,可在监控文件夹中自动转换新到达的 DOC 文件——完全无需人工干预,无弹出窗口。
为网络上的所有用户提供文档转换服务
组织在中央服务器上部署 Total Doc ConverterX,让各部门员工通过共享服务将 Word 文档转换为 PDF、XLS、HTML 或图像。单台服务器安装替代数十套桌面转换器——降低许可成本和 IT 维护负担。
将 Word 转换功能嵌入您自己的软件产品
软件厂商通过 ActiveX 将 Total Doc ConverterX 集成到其应用程序中,无需自行构建渲染引擎即可提供 DOC 转 PDF、DOC 转 TIFF 和 DOC 转 HTML 转换功能。该 API 处理 Word、DOCX、RTF 和 TXT 文件,完整保留版式,并提供可自定义的输出设置。
Total Doc ConverterX 附带 DocConverterX.exe,这是一个可以从脚本、计划任务、CI 运行器或任何后端服务驱动的控制台二进制程序。标志集与 GUI 版的 DocConverter.exe 一致;完整参考请参阅命令行文档。下面的配方涵盖了我们最常从 SDK 客户那里听到的场景。
最简单的调用方式 —— 一个源文件、一个输出、一个目标格式。
DocConverterX.exe "C:\contracts\NDA.doc" "C:\out\NDA.pdf" -cPDF
处理文件夹中的每个 DOC,并将 PDF 放入同级输出目录。
DocConverterX.exe "C:\contracts\*.doc" "C:\out\" -cPDF
将掩码替换为 *.rtf 或 *.txt 以转换其他源格式。
同一个二进制程序处理现代 Word 文档。将掩码指向 *.docx,转换器无需任何额外标志即可识别新格式。
DocConverterX.exe "C:\contracts\*.docx" "C:\out\" -cPDF
法律和人力资源档案很少存在于一个平面文件夹中。-Recurse 遍历子目录;-kfs 在输出端重新创建相同的树,而不是将每个文件展平到一个桶中。
DocConverterX.exe "C:\contracts\2026\*.doc" "C:\out\2026\" -cPDF -Recurse -kfs
当上游工作进程写入队列文件而转换器消耗它时,您不希望将每个文件路径编码到命令行本身。-list 从文本文件中读取文件掩码(每行一个)。
DocConverterX.exe -list "C:\queues\contracts.txt" "C:\out\" -cPDF
长期文档档案通常是带 G4 压缩的黑白 TIFF —— 占磁盘空间小,无损,每个图像系统都接受。使用 -tc 7 表示 G4FAX;切换到 -tc 1 表示 LZW,或 -tc 3 表示 JPEG 压缩的 TIFF。
DocConverterX.exe "C:\contracts\*.doc" "C:\archive\" -cTIFF -tc 7
当目标格式为 PDF 或 TIFF 时,纸张大小、方向和边距是标志而不是按文档设置。对于不适合纵向 Letter 的宽表格很有用。
DocConverterX.exe "C:\reports\*.doc" "C:\out\" -cPDF -ps A4 -po Landscape -TM 15 -LM 20 -BM 15 -RM 20
对于 *.txt 源,转换器必须自己选择字体。明确固定排版,使输出在不同机器上看起来一致,并打开 -WordWrap,使长行不会在右边距被裁剪。
DocConverterX.exe "C:\logs\*.txt" "C:\out\" -cPDF -FontName "Consolas" -FontSize 10 -FontStyle B -WordWrap
一旦 DocConverterX.exe 作为服务或计划作业运行,了解发生了什么的唯一方法就是日志。-log 抑制交互式错误对话框,并将失败写入您可以跟踪或抓取的文件。
DocConverterX.exe "C:\contracts\*.doc" "C:\out\" -cPDF -log "C:\logs\docconv.log"
将目标路径中的 <DATE> 宏与 -do 结合使用,以在成功转换后删除原始文件 —— 对于应排到归档中的每日接收文件夹很有用。
DocConverterX.exe "C:\inbox\*.doc" "C:\archive\<DATE>\" -cPDF -do -log "C:\logs\intake.log"
|
|
|
new COM("DocConverter.DocConverterX"),.NET 中使用 new DocConverterX(),Python 中使用 win32com.client.Dispatch("DocConverter.DocConverterX"),Ruby 中使用 WIN32OLE.new('DocConverter.DocConverterX')。也可以从任何进程、调度器或 shell 脚本中调用 DocConverterX.exe 命令行程序。还提供 ConvertToStream 方法,可在 ASP/PHP Web 响应中直接流式输出 PDF。-mp "owner-pwd" 设置所有者密码,使用 -up "user-pwd" 限制文件打开。-perm 标志接受 Print、HighResPrint、Copy、Modify、Annotation、FormFill 的任意组合。加密强度由 -EncryptStrength es256AES 控制。要进行数字签名,请传入 -PFXFile "C:\certs\acme.pfx" -PFXPass "cert-pwd" -SignLoc -SignCon -SignRes,将 X.509 证书附加到每个输出 PDF。DocConverterX.exe "C:\inbox\*.docx" "C:\out\" -cPDF。添加 -Recurse 进入子文件夹,添加 -kfs 在输出端镜像源文件夹结构,而不是把所有文件平铺到一个目录里。结合 -list "queue.txt" 可构建工作进程驱动的处理流水线,使用 -msuccess/-merror 可将已处理和失败的源文件分别路由到不同文件夹。.md 作为输出格式,转换器就会输出 GitHub-Flavored Markdown:Word 样式映射到 Markdown 结构(Heading 1..Heading 6 变成 #/##/###;项目符号与编号列表保留为列表;Quote 样式映射为 > 引用块),表格变成保留了合并单元格和多行表头的 GFM 表格,内嵌图片随旁保存并以  形式引用。YAML frontmatter 块承载 source_file、来自文档元数据的 title 与 author、created/modified 时间戳、检测到的语言以及 binary hash。这是 CoolUtils RAG Adapter 的一部分 — 每款 Total Converter X 产品共享同一套 Markdown 约定。binary_hash,以及 chunks_hint 数组。在命令行中使用 -Docling 启用。JSON 与 Markdown 相互独立 — 您可以两者都送进索引,或只使用 .md。.md 文件是带 YAML frontmatter 块的纯 GFM,因此 LangChain 的 UnstructuredMarkdownLoader、LlamaIndex 的 MarkdownReader、Haystack 的 MarkdownToDocument 与 Claude Code 的 MCP 文件工具均可直接读取。对于 Claude、ChatGPT 或任意聊天 UI,您可以将 Markdown 原样粘贴进上下文 — 标题展现文档结构,表格能渲染出来,frontmatter 给模型提供源文件名、作者与语言提示。DocConverterX.exe "C:\inbox\*.docx" "C:\out\" -cMD -Docling -Recurse -kfs。-cMD 选择 Markdown;-Docling 额外输出 .docling.json 旁路文件;-Recurse 遍历子目录;-kfs 在输出端镜像源文件夹树。COM 调用:obj.Convert("contract.docx", "contract.md", "-cMD -Docling")。生成的 Markdown 可直接分块、嵌入并在任意向量存储中建立索引。