Adobe Campaign Classic - Hybrid Configuration : pdf report export successful but cannot view pdf using wkhtmltopdf mode.

Avatar

Avatar

Ken_Qrious

Avatar

Ken_Qrious

Ken_Qrious

26-11-2020

Adobe Campaign Classic - Hybrid Configuration 

 

Since upgrading to 9032 we have been unable to export pdf files from reports (administration/config/reports). We have upgraded to 9182 but the issues still exists.

 

The original phantomjs mode would not created a pdf so have installed wkhtmltopdf and changed the mode.   


serverConf.xml (htmlToPdf settings set to below)
<htmlToPdf command="" maxProcessusCount="5" mode=" wkhtmltopdf" timeout="120" verbose="true" waitTime="15"/>

 

Now a report can be exported as a pdf but when it is viewed the following error occurs.
TypeError: can't convert AttributeName to string
{anonymous}("Pacific/Auckland")@/nl/core/formbase.js:749 _report_xxxCampaignDailySchedule__preview([object HttpServletRequest],[object HttpServletResponse])@_report_xxxCampaignDailySchedule__preview:516 ctx=%3Cctx%20_console%3D%221%22%20_context%3D%22global%22%20_debug%3D%22true%22%20_folderLink%3D%22folder%22%20_folderLinkId%3D%22%40folder-id%22%0A%20%20%20%20%20_folderModel%3D%22%22%20_format%3D%22pdf%22%20_hasFilter%3D%22false%22%20_or

View Entire Topic

Avatar

Avatar

wodnicki

MVP

Avatar

wodnicki

MVP

wodnicki
MVP

26-11-2020

Hi,

 

Looks like buggy code in formbase.js. Try patching the line with hardcoded value to see what it does?

-  this.timezoneName = String(this.ctx.timezone.@current)

+  this.timezoneName = "Pacific/Auckland"

 

Thanks,

-Jon

Ken_Qrious

Thanks for the suggestion Jon. I tried that change but there was no difference in behavior. I've completed a bit of debugging have traced the issue to the statement marked in red, this statement uses this.timezoneName which is set at the statement marked in green.

 

If I set this.timezoneName to "Pacific/Auckland" at the green statement there is no change in behavior

from => this.timezoneName = strTimezone

to => this.timezoneName = "Pacific/Auckland"

 

If I substitute "Pacific/Auckland" for this.timezoneName in the statement in red, again there is no change in behavior.

from => NL.session.setTimezone(this.timezoneName);

to => NL.session.setTimezone("Pacific/Auckland");

 

 

/** Set the working timezone
*
* @strTimezone
* special case : _server_, _login_, _inherit_
* _wdbc_ (only for report) : use timezone of the db server (WdbcTimeZone option)
* or the system one if not setted
*
**/
NL.WebForm.FormBase.prototype.setTimezone = function(strTimezone)
{
if( String(this.ctx.@_historyId) == "" )
{
if( strTimezone == "_wdbc_" )
{
this.timezoneName = getOption("WdbcTimeZone", true)
if( this.timezoneName == "" )
strTimezone = "_server_"
}
else if( strTimezone == "_inherit_" || strTimezone == "")
{ // default is login
strTimezone = "_login_"
}

if( strTimezone == "_server_" )
this.timezoneName = application.getServerTimezone()
else if( strTimezone == "_login_" )
this.timezoneName = String(this.ctx.userInfo.@timezone)
else if( strTimezone != "_wdbc_" )
this.timezoneName = strTimezone

this.ctx.timezone.@current = this.timezoneName
}
else
this.timezoneName = String(this.ctx.timezone.@current)

this.ctx.timezone.@changed = String(this.ctx.userInfo.@timezone) != this.timezoneName

if( this.timezoneName != "" )
NL.session.setTimezone(this.timezoneName);

return this.timezoneName
}

NL.WebForm.FormBase.prototype.resetTimezone = function()
{
if( String(this.ctx.userInfo.@timezone) != '' )
NL.session.setTimezone(this.ctx.userInfo.@timezone.toString());
}

NL.WebForm.FormBase.prototype.getTimezoneName = function()
{
return this.timezoneName
}