在我的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 pdftron.PDF.Convert.Printer.Install inputFilePath,Boolean& uninstallVirtualPrinter)在c:***\PDFTronService.cs:line 126中
在手动安装了64位版本的“PDFTron创造者”和“PDFTron PDFNet”打印机之后,我已经尝试过了,但是转换仍然失败,错误是:
无法转换文件,尝试次数过多。条件表达式: false,Filename : Convert.cpp,函数:trn::PDF::trn::ToPdf,Linenumber : 1742 at pdftron.PDF.Convert.ToXod(inputFilePath,outFileName);
请帮我解决这个问题。
发布于 2016-11-10 18:21:39
首先,如果安装了MS Office,则实际上不需要虚拟打印机进行Office转换。如果安装了MS,PDFNet将使用Interop进行通信。RequiresPrinter对office文档返回true,尽管对于office文档它实际上是可选的。
虚拟打印机通常用于其他文件类型,例如AutoCad DWG。
如果您没有安装MS office,并且希望使用像LibreOffice这样的工具来转换office文档,那么是的,您需要虚拟打印机。
此外,您只需要安装打印机一次。不是每次你想要皈依。
要安装虚拟打印机,您需要以更高的权限运行,而PDFNet 32位\64位需要与您的操作系统32位、32位、x、64位匹配。
如果SEH错误仍然存在,那么我建议尝试最新版本的PDFNet。
https://stackoverflow.com/questions/40531319
复制相似问题