1

在我的 ASP .Net 应用程序中,我使用的是“PDFTron 6.0.1.0”。在将我的 docx 文件转换为 xod 之前(使用 pdftron.PDF.Convert.ToXod 方法),我们正在检查虚拟打印机的存在,如果不存在则安装它。为此,我们使用以下代码:

private void CheckIfVirtualPrinterRequired(string inputFilePath, out bool uninstallVirtualPrinter)
{
    uninstallVirtualPrinter = false;
    if (pdftron.PDF.Convert.RequiresPrinter(inputFilePath))
    {
        if (pdftron.PDF.Convert.Printer.IsInstalled("PDFTron Creator"))
        {
            pdftron.PDF.Convert.Printer.SetPrinterName("PDFTron Creator");
        }
        else if (!pdftron.PDF.Convert.Printer.IsInstalled())
        {
            pdftron.PDF.Convert.Printer.Install();
            uninstallVirtualPrinter = true;
        }
    }
}

但是,在 'pdftron.PDF.Convert.Printer.Install();' 代码,我收到 SEHException:

外部组件引发的异常。堆栈跟踪:在 c:* **\PDFTronService.cs:第 126 行

我在手动安装 64 位版本的“ PDFTron Creator ”和“ PDFTron PDFNet ”打印机后尝试过,但转换仍然失败并出现错误:

无法转换文件,尝试次数过多。条件表达式:false,文件名:Convert.cpp,函数:trn::PDF::Convert::ToPdf,行号:1742 at pdftron.PDF.Convert.ToXod(inputFilePath, outFileName);

请帮助解决这个问题。

4

1 回答 1

0

首先,如果您安装了 MS Office,则 Office 转换实际上不需要虚拟打印机。如果安装了 MS Office,PDFNet 将使用 Interop 进行通信。RequiresPrinter 为办公文档返回 true,尽管它对于办公文档实际上是可选的。

虚拟打印机通常用于其他文件类型,例如 AutoCad DWG。

如果您没有安装 MS Office,并且想使用 LibreOffice 之类的工具转换办公文档,那么是的,您需要虚拟打印机。

此外,您只需安装一次打印机。不是每次你想转换。

要安装虚拟打印机,您需要以提升的权限运行,并且 PDFNet 32​​bit|64bit 需要匹配您的操作系统 32bit|64bit。

如果 SEH 错误仍然存​​在,那么我建议尝试最新版本的 PDFNet。

于 2016-11-10T18:21:39.990 回答