简体   繁体   中英

AX2012 Print txt file to printer

i have a problem when printing a text file from AX2012 R3 to a specific printer. Here is my source:

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())));
    }    
}

I get the error message every time in the process.Start() : The specified file is not assigned to an application.

I also checked the assignment on the AOS for the extension .txt. The method is run on Server.

I have proceeded according to the following examples:

How to print any file in Dynamics AX

Performing File IO with the TextIo Class [AX 2012]

Ok, I've tricked myself,

I have checked the file assignments with my personal login on the AOS. Here the assignments were correct, but the source is executed with the AOS service user. The assignment was not set for the AOS service user. Probably by installing a third-party software.According to the assignment of the .txt to the notepad, it runs as desired.

Thanks to all who have considered

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM