使用 PDFTron(Convert.ToPdf) 转换 Word 文档时出现错误 "Failed to obtain dispatch handle to opened document"
Converting Word Document with PDFTron(Convert.ToPdf) gives error "Failed to obtain dispatch handle to opened document"
我在 windows 服务器 2016(64 位)和 PdfTron(32 位)上安装了 office standard 2016 和有效许可证 我正在尝试通过 PdfTron 将 word 文档转换为 pdf,它是带有 Convert.ToPdf() 方法,代码如下
try
{
string conversionPath = string.Empty;
using (pdftron.PDF.PDFDoc pdfdoc = new pdftron.PDF.PDFDoc())
{
if (pdftron.PDF.Convert.RequiresPrinter(sourceFilePath))
{
if (pdftron.PDF.Convert.Printer.IsInstalled("PDFTron PDFNet"))
{
pdftron.PDF.Convert.Printer.SetPrinterName("PDFTron PDFNet");
}
else
{
pdftron.PDF.Convert.Printer.Install();
pdftron.PDF.Convert.Printer.SetPrinterName("PDFTron PDFNet");
}
}
conversionPath = System.IO.Path.ChangeExtension(sourceFilePath, ".pdf");
pdftron.PDF.Convert.ToPdf(pdfdoc, sourceFilePath);
pdfdoc.Save(conversionPath, pdftron.SDF.SDFDoc.SaveOptions.e_linearized);
System.IO.File.Delete(sourceFilePath);
}
return conversionPath;
}
catch (pdftron.Common.PDFNetException ex)
{
return string.Empty;
}
}
当我尝试这样做时,出现以下错误。
Exception:
Message: An error occurred while converting the file.
Detailed error:
Exception:
Message: Failed to obtain dispatch handle to opened document.
File: "Word.cpp":646
Log:
Start check system account.
Session ID is: 0.
Done checking system account.
Start checking registry.
Registry check done.
Creating a Word application instance.
Word application instance created.
Application.AutomationSecurity ID obtained.
Application.AutomationSecurity value set to 3.
Application.DisplayAlerts ID obtained.
Application.Version ID obtained.
Application version: 16.
Application.Build ID obtained.
Application build: 16.0.4266.
Application.Documents ID obtained.
Opening document "XXXXXX".
Documents.Open ID obtained.
Conditional expression: FALSE
Version : 6.8.7.67376
Filename : Convert.cpp
Function : trn::PDF::Convert::ToPDFViaOffice
Linenumber : 1788
Failed to obtain dispatch handle to opened document.
File: "Word.cpp":646
Log:
Start check system account.
Session ID is: 0.
Done checking system account.
Start checking registry.
Registry check done.
Creating a Word application instance.
Word application instance created.
Application.AutomationSecurity ID obtained.
Application.AutomationSecurity value set to 3.
Application.DisplayAlerts ID obtained.
Application.Version ID obtained.
Application version: 16.
Application.Build ID obtained.
Application build: 16.0.4266.
Application.Documents ID obtained.
Opening document "XXXXXXX".
Documents.Open ID obtained.
Conditional expression: false
Version : 6.8.7.67376
Filename : Convert.cpp
Function : trn::PDF::Convert::ToPdf
Linenumber : 1734
我不太清楚这意味着什么,因为 PDFTron 和 office 都有有效的许可证密钥,我们将不胜感激任何帮助
首先,我建议尽可能放宽帐户凭据,使其尽可能接近标准用户。一旦您的转换工作正常,您就可以开始限制了。
以下是您应该确保工作的主要清单。
MS Word 是licensed/activated,特别是对于正在使用的帐户。
我们建议您创建 Windows 服务并在单独的进程中 运行 转换。然后以管理员身份 运行 服务并有权 运行 服务。此外,运行使用该服务的用户必须已接受 MS Office 许可,以确保 Office 是完全许可的产品。
确保后台打印服务 运行正在运行。对于许多 Windows 版本,您可以通过 运行 在命令行中执行以下命令来启用后台打印程序:net start spooler
确保进行转换的帐户运行有权访问桌面文件夹。可以在以下位置找到本地系统或本地服务的桌面文件夹:
C:\Windows\System32\config\systemprofile\Desktop
C:\Windows\SysWOW64\config\systemprofile\Desktop
(仅限 64 位 Windows)
这些文件夹需要存在,并且您正在使用的帐户需要对它们具有 read/write 访问权限。
我在 windows 服务器 2016(64 位)和 PdfTron(32 位)上安装了 office standard 2016 和有效许可证 我正在尝试通过 PdfTron 将 word 文档转换为 pdf,它是带有 Convert.ToPdf() 方法,代码如下
try
{
string conversionPath = string.Empty;
using (pdftron.PDF.PDFDoc pdfdoc = new pdftron.PDF.PDFDoc())
{
if (pdftron.PDF.Convert.RequiresPrinter(sourceFilePath))
{
if (pdftron.PDF.Convert.Printer.IsInstalled("PDFTron PDFNet"))
{
pdftron.PDF.Convert.Printer.SetPrinterName("PDFTron PDFNet");
}
else
{
pdftron.PDF.Convert.Printer.Install();
pdftron.PDF.Convert.Printer.SetPrinterName("PDFTron PDFNet");
}
}
conversionPath = System.IO.Path.ChangeExtension(sourceFilePath, ".pdf");
pdftron.PDF.Convert.ToPdf(pdfdoc, sourceFilePath);
pdfdoc.Save(conversionPath, pdftron.SDF.SDFDoc.SaveOptions.e_linearized);
System.IO.File.Delete(sourceFilePath);
}
return conversionPath;
}
catch (pdftron.Common.PDFNetException ex)
{
return string.Empty;
}
}
当我尝试这样做时,出现以下错误。
Exception:
Message: An error occurred while converting the file.
Detailed error:
Exception:
Message: Failed to obtain dispatch handle to opened document.
File: "Word.cpp":646
Log:
Start check system account.
Session ID is: 0.
Done checking system account.
Start checking registry.
Registry check done.
Creating a Word application instance.
Word application instance created.
Application.AutomationSecurity ID obtained.
Application.AutomationSecurity value set to 3.
Application.DisplayAlerts ID obtained.
Application.Version ID obtained.
Application version: 16.
Application.Build ID obtained.
Application build: 16.0.4266.
Application.Documents ID obtained.
Opening document "XXXXXX".
Documents.Open ID obtained.
Conditional expression: FALSE
Version : 6.8.7.67376
Filename : Convert.cpp
Function : trn::PDF::Convert::ToPDFViaOffice
Linenumber : 1788
Failed to obtain dispatch handle to opened document.
File: "Word.cpp":646
Log:
Start check system account.
Session ID is: 0.
Done checking system account.
Start checking registry.
Registry check done.
Creating a Word application instance.
Word application instance created.
Application.AutomationSecurity ID obtained.
Application.AutomationSecurity value set to 3.
Application.DisplayAlerts ID obtained.
Application.Version ID obtained.
Application version: 16.
Application.Build ID obtained.
Application build: 16.0.4266.
Application.Documents ID obtained.
Opening document "XXXXXXX".
Documents.Open ID obtained.
Conditional expression: false
Version : 6.8.7.67376
Filename : Convert.cpp
Function : trn::PDF::Convert::ToPdf
Linenumber : 1734
我不太清楚这意味着什么,因为 PDFTron 和 office 都有有效的许可证密钥,我们将不胜感激任何帮助
首先,我建议尽可能放宽帐户凭据,使其尽可能接近标准用户。一旦您的转换工作正常,您就可以开始限制了。
以下是您应该确保工作的主要清单。
MS Word 是licensed/activated,特别是对于正在使用的帐户。 我们建议您创建 Windows 服务并在单独的进程中 运行 转换。然后以管理员身份 运行 服务并有权 运行 服务。此外,运行使用该服务的用户必须已接受 MS Office 许可,以确保 Office 是完全许可的产品。
确保后台打印服务 运行正在运行。对于许多 Windows 版本,您可以通过 运行 在命令行中执行以下命令来启用后台打印程序:
net start spooler
确保进行转换的帐户运行有权访问桌面文件夹。可以在以下位置找到本地系统或本地服务的桌面文件夹:
C:\Windows\System32\config\systemprofile\Desktop
C:\Windows\SysWOW64\config\systemprofile\Desktop
(仅限 64 位 Windows) 这些文件夹需要存在,并且您正在使用的帐户需要对它们具有 read/write 访问权限。