Search code examples
pdfphantomjskibana-4rasterize

How do I export into pdf in phantomjs with this link.


I have read about phantomjs and rasterizejs as well. But my link is this:

http://localhost:5601/#/dashboard/External?_g=(time:(from:'2014-12-31T16:00:00.000Z',mode:absolute,to:'2015-01-01T16:00:00.000Z'))&_a=(filters:!(),panels:!((col:10,id:'Count-of-Source-IPs-(External)',row:1,size_x:3,size_y:3,type:visualization),(col:4,id:'Protocols-(External)',row:4,size_x:3,size_y:2,type:visualization),(col:7,id:'Top-5-Source-IPs-with-Protocols-and-Source-Port-(External)',row:4,size_x:6,size_y:6,type:visualization),(col:1,id:'Top-5-Source-IPs-(External)',row:4,size_x:3,size_y:2,type:visualization),(col:1,id:'Top-5-Countries-with-Protocols-(External)',row:1,size_x:6,size_y:3,type:visualization),(col:1,id:'Geographical-of-External-(Source)',row:6,size_x:6,size_y:4,type:visualization),(col:7,id:'Action-(External)',row:1,size_x:3,size_y:3,type:visualization)),query:(query_string:(analyze_wildcard:!t,query:'*')),title:External)

How do I make it such that it works with this command:

phantom.js rasterize.js "http://localhost:5601/#/dashboard/External?_g=(time:(from:'2014-12-31T16:00:00.000Z',mode:absolute,to:'2015-01-01T16:00:00.000Z'))&_a=(filters:!(),panels:!((col:10,id:'Count-of-Source-IPs-(External)',row:1,size_x:3,size_y:3,type:visualization),(col:4,id:'Protocols-(External)',row:4,size_x:3,size_y:2,type:visualization),(col:7,id:'Top-5-Source-IPs-with-Protocols-and-Source-Port-(External)',row:4,size_x:6,size_y:6,type:visualization),(col:1,id:'Top-5-Source-IPs-(External)',row:4,size_x:3,size_y:2,type:visualization),(col:1,id:'Top-5-Countries-with-Protocols-(External)',row:1,size_x:6,size_y:3,type:visualization),(col:1,id:'Geographical-of-External-(Source)',row:6,size_x:6,size_y:4,type:visualization),(col:7,id:'Action-(External)',row:1,size_x:3,size_y:3,type:visualization)),query:(query_string:(analyze_wildcard:!t,query:'*')),title:External)" external.pdf

I have been getting syntax error because of that.


Solution

  • The problem is probably that the command is too long for your terminal and some of it is cut off.

    You can either directly put it into the script or read it from stdin. For that you need to edit rasterize.js.

    First you need to reduce the x in all system.args[x] where x is above 1 by 1. If you've done that, then you can call the script as

    phantom.js rasterize.js external.pdf
    

    or

    cat file.url | phantom.js rasterize.js external.pdf
    

    in the second case.

    Put URL into script

    Change

    address = system.args[1];
    

    to

    address = "http://localhost....";
    

    Read from pipe

    You can put your long URL into some file and pass that file to stdin of the PhantomJS script.

    Change

    address = system.args[1];
    

    to

    address = system.stdin.read();