AX 2012 打印文本文件到打印机
AX2012 Print txt file to printer
我在从 AX2012 R3 打印文本文件到特定打印机时遇到问题。
这是我的来源:
public void printToPrinter(str _text, str printerName)
{
#File
System.Diagnostics.ProcessStartInfo processInfo;
System.Diagnostics.Process process;
System.Exception interopException;
TextIo textIo;
PrintPathTable printPath = PrintPathTable::find();
str fileName, arguments;
FileIoPermission perm;
try
{
// Get the path and name.
fileName = this.getGuid();
fileName = strFmt(@'%1%2',printPath.PrintPath, fileName);
// Assert permission.
perm = new FileIoPermission(fileName,'RW');
perm.assert();
// Open file for writing.
textIo = new TextIo(fileName, #IO_WRITE);
textIo.write(_text);
// Close the file.
textIo = null;
arguments = '\"' + printerName + '\"';
process = new System.Diagnostics.Process();
processInfo = process.get_StartInfo();
processInfo.set_Verb('printto');
processInfo.set_UseShellExecute(true);
processInfo.set_Arguments(arguments);
processInfo.set_FileName(fileName);
processInfo.set_WindowStyle(System.Diagnostics.ProcessWindowStyle::Hidden);
process.set_StartInfo(processInfo);
process.Start();
// revert asserted permissions
CodeAccessPermission::revertAssert();
}
catch(Exception::CLRError)
{
interopException = CLRInterop::getLastException();
while (!CLRInterop::isNull(interopException.get_InnerException()))
{
interopException = interopException.get_InnerException();
}
error(strFmt('Fehler Druck "%1", "%2"', fileName, CLRInterop::getAnyTypeForObject(interopException.get_Message())));
}
}
我每次都在 process.Start()
中收到错误消息:指定的文件未分配给应用程序。
我还检查了 AOS 上的扩展名 .txt 分配。服务器上的方法是运行。
我是按照下面的例子进行的:
好吧,我骗了自己,
我已经用我在 AOS 上的个人登录检查了文件分配。这里的分配是正确的,但源代码是使用 AOS 服务用户执行的。没有为 AOS 服务用户设置分配。可能通过安装第三方software.According将.txt赋值给记事本,就可以正常运行了。
感谢所有考虑过的人
我在从 AX2012 R3 打印文本文件到特定打印机时遇到问题。 这是我的来源:
public void printToPrinter(str _text, str printerName)
{
#File
System.Diagnostics.ProcessStartInfo processInfo;
System.Diagnostics.Process process;
System.Exception interopException;
TextIo textIo;
PrintPathTable printPath = PrintPathTable::find();
str fileName, arguments;
FileIoPermission perm;
try
{
// Get the path and name.
fileName = this.getGuid();
fileName = strFmt(@'%1%2',printPath.PrintPath, fileName);
// Assert permission.
perm = new FileIoPermission(fileName,'RW');
perm.assert();
// Open file for writing.
textIo = new TextIo(fileName, #IO_WRITE);
textIo.write(_text);
// Close the file.
textIo = null;
arguments = '\"' + printerName + '\"';
process = new System.Diagnostics.Process();
processInfo = process.get_StartInfo();
processInfo.set_Verb('printto');
processInfo.set_UseShellExecute(true);
processInfo.set_Arguments(arguments);
processInfo.set_FileName(fileName);
processInfo.set_WindowStyle(System.Diagnostics.ProcessWindowStyle::Hidden);
process.set_StartInfo(processInfo);
process.Start();
// revert asserted permissions
CodeAccessPermission::revertAssert();
}
catch(Exception::CLRError)
{
interopException = CLRInterop::getLastException();
while (!CLRInterop::isNull(interopException.get_InnerException()))
{
interopException = interopException.get_InnerException();
}
error(strFmt('Fehler Druck "%1", "%2"', fileName, CLRInterop::getAnyTypeForObject(interopException.get_Message())));
}
}
我每次都在 process.Start()
中收到错误消息:指定的文件未分配给应用程序。
我还检查了 AOS 上的扩展名 .txt 分配。服务器上的方法是运行。
我是按照下面的例子进行的:
好吧,我骗了自己,
我已经用我在 AOS 上的个人登录检查了文件分配。这里的分配是正确的,但源代码是使用 AOS 服务用户执行的。没有为 AOS 服务用户设置分配。可能通过安装第三方software.According将.txt赋值给记事本,就可以正常运行了。
感谢所有考虑过的人