在我的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:
外部组件抛出异常。堆栈跟踪:at trn.PDF.Convert.Printer.Install(UString *)at pdftron.PDF.Convert.Printer.Install()at *****。PDFTronService.CheckIfVirtualPrinterRequired(String inputFilePath,Boolean& uninstallVirtualPrinter)in c:*** \ PDFTronService.cs:第126行
我在手动安装64位版本的“PDFTron Creator”和“PDFTron PDFNet”打印机后尝试过,但转换仍然失败并显示错误:
无法转换文件,尝试次数过多。条件表达式: false,文件名:Convert.cpp,功能: trn :: PDF :: Convert :: ToPdf,Linenumber:1742 at pdftron.PDF.Convert.ToXod(inputFilePath,outFileName);
请帮助解决这个问题。
答案 0 :(得分:0)
首先,如果安装了MS Office,则Office转换实际上不需要虚拟打印机。如果安装了MS Office,PDFNet将使用Interop进行通信。 RequiresPrinter对office文档返回true,尽管它对office文档来说确实是可选的。
虚拟打印机通常用于其他文件类型,例如AutoCad DWG。
如果您没有安装MS Office,并希望使用LibreOffice之类的东西转换办公文档,那么您需要虚拟打印机。
此外,您只需要安装一次打印机。不是每次都想转换。
要安装虚拟打印机,您需要以提升的权限运行,并且PDFNet 32bit | 64bit需要与您的OS 32bit | 64bit匹配。
如果SEH错误仍然存在,那么我建议您尝试使用最新版本的PDFNet。