Setting up Printers in Epicor

I just tried to print using the Client Printer, and this is the error I got? This is another printer we have on our server, but not the main one I am trying to get Epicor linked to. Well I would eventually want to get Epicor linked to all, but right now I am just trying our main printer.

Can you hit detail on that error and copy/paste it here?

Application Error

Exception caught in: System.Drawing

Error Detail

Message: Settings to access printer ‘\BRAD\Sharp Brads Office’ are not valid.
Program: System.Drawing.dll
Method: GetHdevmodeInternal

Client Stack Trace

at System.Drawing.Printing.PrinterSettings.GetHdevmodeInternal(String printer)
at System.Drawing.Printing.PrinterSettings.GetHdevmodeInternal()
at System.Drawing.Printing.PrinterSettings.GetHdevmode()
at System.Drawing.Printing.PageSettings.GetPaperSize(IntPtr modeHandle)
at System.Drawing.Printing.PageSettings.get_PaperSize()
at Ice.Lib.Report.PrinterPageSettings.FromPageSettings(PageSettings pageSettings)
at Ice.Lib.Report.ClientPrinterManager.FillPrinterInformation(String printerName, PrinterSettings printerSettings, PrintersDataTable printersTable)
at Ice.Lib.Report.ClientPrinterManager.<>c__DisplayClass8_0.b__0()
at Ice.Lib.Report.SSRSDialogPropertiesManager.TimeAction(Action action, String label, Boolean indent)
at Ice.Lib.Report.ClientPrinterManager.FillAllPrintersInformation()
at System.Lazy1.CreateValue() --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Lazy1.get_Value()
at Ice.Lib.Report.ClientPrinterManager.FillClientPrinters(PrintersDataTable printersTable, PrinterPaperSourcesDataTable paperSourcesTable, PrinterPaperSizeDataTable paperSizesTable)
at Ice.Lib.Report.SSRSDialogPropertiesManager.b__38_0()
at Ice.Lib.Report.SSRSDialogPropertiesManager.TimeAction(Action action, String label, Boolean indent)
at Ice.Lib.Report.SSRSDialogPropertiesManager.resetMode(String companyId, Int32 styleNum, String reportID)
at Ice.Lib.Framework.EpiReportTransaction.setPrinterOptionsSSRS(String reportID, Int32 styleNum, PrinterDialogMode mode, Boolean initializeSettings)

Maybe try:
https://support.microsoft.com/en-us/kb/307053

Is \BRAD\Sharp Brads Office installed as a printer under the Windows user profile of the appserver’s application pool identity? Additionally, does the application pool identity have access to that printer? (if it isn’t a domain user, you may wish to change it).

Some high-level guidelines with screenshots I put together for users trying to use a BPM to autoprint to a server-side printer can be reviewed here: https://www.evernote.com/shard/s3/nl/475443/eab18edd-51a4-4037-b09a-a17d37064cc8

1 Like

I would remove the spaces from the share name on the server. Warning, changing the share name will be reconnecting to this printer from each PC that uses it.

You could create a new shared printer on the server without spaces for testing first.

Mark Damen
ERP System Manager

[cid:BVDairy-OfficialLogo_bbec4553-4e4a-43e7-baef-7ba65e64810211111111.png]

MarkDamen@bvdairy.co.uk
Mobile: +44 (0) 7790 806926

BV Dairy ? Wincombe Lane ? SHAFTESBURY ? Dorset ? SP7 8QD ? UK
Switchboard: +44 (0) 1747 851855
Fax: +44 (0) 1747 851002

http://www.bvdairy.co.uk/

[cid:AllAccresiationsSmaller_b479dd40-feb0-4971-b164-424e34ca64c4.jpg]

This message is intended for the use of only the person(s) (“Intended Recipient”) to whom it is addressed. It may contain information that is privileged and confidential. Accordingly any dissemination, distribution, copying or other use of this message or any of its content by any person other than the Intended Recipient may constitute a breach of civil or criminal law and is strictly prohibited. If you are not the Intended Recipient, please contact the sender as soon as possible.

Nathan makes a good point. I know that in my case, the printer is actually installed on the Epicor server, even though it is physically attached to a different PC. Maybe try that if you haven’t already.

Install the desired printer as a network printer on the server, then try to share from server and use that address:
\EpiServer\PrinterShare

Admittedly it seems a little convoluted, but if nothing else has worked, it’s worth 15 minutes to try

Just curious if you got this sorted out, and if so, what the issue was.

I’ve had this error. I needed to add the shared printer on the Epicor server, and if it was a custom report, I had to restart the report monitor service. I believe there’s an Answerbook on the topic.

1 Like

I am wondering if you are still get this error or did you were able to fix it? because I have this same error , it happens to me and some other users .

By the way i have an open ticket with epicor because everytime I try to print using the client I get this exception.

Exception caught in: System.Drawing
Message: No printers are installed.
Program: System.Drawing.dll
Method: GetHdevmodeInternal

Hi Guys,

Now i am getting this issue, any idea how can it be fixed, is it because the printer has spaces? also sometimes it gets fixed when we removed printers that we aren’t using.

Application Error

Exception caught in: System.Data

Error Detail

Message: Syntax error: Missing operand after ‘s’ operator.
Program: System.Data.dll
Method: Parse

Client Stack Trace

at System.Data.ExpressionParser.Parse()
at System.Data.DataExpression…ctor(DataTable table, String expression, Type type)
at System.Data.DataView.set_RowFilter(String value)
at Ice.Lib.Report.SSRSDialogPropertiesManager.resetPaperSourcesForPrinter(String printerID)
at Ice.Lib.Report.SSRSDialogPropertiesManager.getPrinterSettings(String printerID)
at Ice.Lib.Report.SSRSDialogPropertiesManager.Printers_ColumnChanged(Object sender, DataColumnChangeEventArgs e)
at System.Data.DataTable.OnColumnChanged(DataColumnChangeEventArgs e)
at System.Data.DataRow.set_Item(DataColumn column, Object value)
at System.Data.DataRowView.SetColumnValue(DataColumn column, Object value)
at System.Data.DataRowView.set_Item(String property, Object value)
at Ice.Lib.Framework.EpiReportTransaction.setPrinterOptionsSSRS(String reportID, Int32 styleNum, PrinterDialogMode mode, Boolean initializeSettings)

@ Jaime_Hernandez,
If you review your Windows printer names, do you have any with an apostrophe or have a printer that is offline? If so, can you rename the printer as to not have an apostrophe (and if any are offline, can you uninstall that printer or turn it on), log out of the client and back in, and try to print again?

COMPLETELY INCORRECT AND CONTRIVED BACKGROUND:
We felt it was our moral imperative to try to help change public opinion towards printers in the earlier versions of ERP 10. At the time, it was our position that it was dangerous for anyone to THINK that they could ever truly own any of these happiness destroying devices that I contend were sent from the scary place :clown_face: as a check to humanity’s technological arrogance. Admittedly, our contribution towards “printers cannot be trusted” awareness is nothing compared to what this cinematic masterpiece accomplished (safe for work clip: Office Space - Printer Scene (Clean Version) - YouTube), but, we were just doing what we could within our sphere of influence to draw attention to this important cause.

MORE ACCURATE BACKGROUND:
In our older ERP10 versions, we weren’t properly escaping apostrophes in the printer name list and don’t recall the specific release, but, sometime in the early ERP 10.x’s we fixed the glitch.

On a completely unrelated note, this time of year is my absolute without question favorite from a work perspective–it’s the longest stretch of time before the next W2/1099 season begins.

2 Likes

Right, printer names should not have special characters, especially single quotes.
The reason for this is it can mislead programming - in SQL the single quote is used for text constant values. So if you have something like :

concatenate (‘server’, ‘’, printer name) this would translate to
server\Chewi and then have “s Printer!” which would have absolutely no meaning to the program.

SO avoid using single quotes , ! and even spaces in printer names in any occasion. Instead you can use big caps and small caps, eventually also _ to make it reasily readable like Chewi_s_Printer.
Same rule goes also for other places where you need to use custom ID (ex: BAQ ID).

Regards,
MIhai

1 Like

Thanks a lot @aidacra @MihaiDorin