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

Avatar

Avatar
Validate 1
Level 1
Ken_Qrious
Level 1

Likes

2 likes

Total Posts

42 posts

Correct reply

0 solutions
Top badges earned
Validate 1
Boost 1
View profile

Avatar
Validate 1
Level 1
Ken_Qrious
Level 1

Likes

2 likes

Total Posts

42 posts

Correct reply

0 solutions
Top badges earned
Validate 1
Boost 1
View profile
Ken_Qrious
Level 1

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

Accepted Solutions (0)

Answers (1)

Answers (1)

Avatar

Avatar
Establish
MVP
wodnicki
MVP

Likes

982 likes

Total Posts

1,097 posts

Correct reply

517 solutions
Top badges earned
Establish
Affirm 500
Contributor
Shape 1
Give Back 100
View profile

Avatar
Establish
MVP
wodnicki
MVP

Likes

982 likes

Total Posts

1,097 posts

Correct reply

517 solutions
Top badges earned
Establish
Affirm 500
Contributor
Shape 1
Give Back 100
View profile
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
}