cancel
Showing results for 
Search instead for 
Did you mean: 

What role does the printer play in rendering Crystal Reports in different scenarios?

0 Kudos

Hi,

I work with a website that uses Crystal Reports SDK that is included in the Business Objects Platform .NET SDK to display reports in a CrystalReportViewer control. We currently use Business Objects to store our reports, but I was tasked with determining whether or not we could achieve the same efficiency by moving the reports to our web server.

In testing the loading of the reports from the web servers, I noticed that some reports took a long time to load and display on the web page. When I investigated these reports, they all opened with the message "This report uses an invalid printer. The default printer will be used instead." This obviously told me that there was an issue with the printer associated with the report. I found THIS article that also describes my situation. When I added a check mark to the No Printer (optimize for screen display) check box in Page Setup, and saved the report, the reports run just as fast as they did from Business Objects.

The interesting thing to me is that I don't experience the slowness when I load the report from Business Objects, so it made me wonder how printers are handled in Business Objects, which led to the following questions:

  1. Does Business Objects just immediately ignore the printer and use the default printer on the Business Objects server?
  2. Is there a property that can be set in Crystal Reports SDK that will force it to handle printers in the same manner as Business Objects?
  3. Just to confirm, if a default printer is set in the report to something like Microsoft XPS Document Writer or Adobe PDF and the end user doesn't have either on her/his machine, the report will use the user's default printer, correct?

Additional info:

  • Business Objects BI Platform .NET SDK
  • Crystal Reports version 14.1.1.1036
  • Visual Studio 2015
  • Client: Windows 10
  • Server: Windows Server 2012 r2

Thanks.

Accepted Solutions (1)

Accepted Solutions (1)

0 Kudos

No Printer tells the formatting engine to use some of the default printer properties and then it uses usp10.dll to format the report.

Not using No Printer is the best option.

No, unless you request the Job server to process the report in your app it will not use it. Only BOE viewing on demand or scheduled reports uses the Job Server and Cache servers.

Don

Answers (2)

Answers (2)

DellSC
Active Contributor
0 Kudos

Also, if you move the reports to your web server instead of storing them in BO, you'll need to change the SDK that you're using to the Crystal for .NET SDK. This SDK has limitations on how many users can be viewing reports concurrently (5 sessions total) as well has how many "print jobs" can be open (100).

A print job is an instance of a main report or subreport. So, if your report has 1 main report and a subreport in the report header or footer, that counts as 2 print jobs. If the subreport is in a group or details section and there are 100 groups or detail records, then you have 101 print jobs and the report will fail.

You are probably better off keeping the reports in BO.

-Dell

0 Kudos

Rather than no printer select Dissociate, that removes the specific dependency on the printer the report was designed against.

Dissociate removes the specific printer from the report and will use the "Family" of printer properties.

For custom Paper sizes you do need to design the report with those printers.

Don

0 Kudos

Hi Don,

So, does Business Objects automatically dissociate the printer from a report? I'd like to understand why our reports that have been uploaded to Business Objects and have a printer defined run faster (through the Enterprise connection) than the same report located on and run from the web server (where the report is loaded as a file without an Enterprise connection).

Thanks.

0 Kudos

BOE uses the Job Server to process Reports, it runs in 64 bit mode and uses the Printers defined on the BOE server. You are using RAS to process reports, it runs in 32 bit mode and uses Locally installed Printers.

0 Kudos

My web application currently connects to BOE using the CrystalDecisions.Enterprise with the CrystalDecisions.CrystalReports.Engine.ReportDocument (and CrystalDecisions.Shared to process parameter fields/values). When I connect this way, the printer associated with the report appears to have no effect and the report is returned to the CrystalReportViewer in my application very fast. Are you saying that, in this instance, the BOE Job Server is processing the report and returning it to the CrystalReportViewer? In other words, the default printer on my web server is not processing the report at all?

When I attempted to change how the report was retrieved and get it as a file on the web server instead of from BOE, I'm still using the CrystalDecisions.CrystalReports.Engine.ReportDocument. I don't see any calls to anything from CrystalDecisions.ReportAppServer, but it would make sense that in this instance, the default printer on the web server is processing the report. It would also make sense that it would take a while for the report to process if the printer defined in the report cannot be found on the web server.

Thanks.