用户为导出的pdf文件定义了名称?

时间:2015-07-29 06:18:09

标签: amcharts

用户可以在amcharts中为导出的PDF文件定义他/她自己的文件名吗?。目前默认名称是 amCharts.pdf。

参考链接AmCharts Export Config,我看到用户可以通过编程方式更改使用的默认文件名,但是当单击pdf导出时,他无法在运行时定义文件名。是否可以执行此?

1 个答案:

答案 0 :(得分:4)

您可以使用menuReviver附加另一个click event handler来使用提示模式来中断运行时以覆盖文件名。

"export": {
  "enabled": true,
  "menuReviver": function( config, li ) {
    var context = this; // INSTANCE

    // MODIFY ONLY IMAGE ITEMS
    if ( config.capture ) {
      var title = li.getElementsByTagName( "span" )[ 0 ].textContent;
      var link = document.createElement( "a" );
      var span = document.createElement( "span" );

      // REMOVE ORIGINAL
      li.getElementsByTagName( "a" )[ 0 ].remove();

      // TITLE
      span.innerHTML = title;
      link.appendChild( span );

      function callback() {
        var fileName = prompt( "Filename" );

        // CHECK FILENAME
        if ( fileName ) {

          // CAPTURE CHART
          this.capture( {}, function() {

            // GET JPG DATA
            this.toPDF( {}, function( base64 ) {
              var info = this.defaults.formats.PDF;

              // OFFER DOWNLOAD WITH GIVEN FILENAME
              this.download( base64, info.mimeType, fileName + info.extension );
            } );
          } );
        }
      }

      // LINK
      link.addEventListener( "click", function() {
        callback.apply( context, arguments );
      } );
      li.appendChild( link );
    }
  }

http://codepen.io/amcharts/pen/674b14ad4e2594a31ac59a455dda6784

如果您想手动执行此操作,可以执行以下操作:

"export": {
  "enabled": true,
  "menu": [ {
    "format": "PDF",
    "click": function() {
      var fileName = prompt( "Filename:" );

      // CHECK FILENAME
      if ( fileName ) {

        // CAPTURE CHART
        this.capture( {}, function() {

          // GET JPG DATA
          this.toPDF( {}, function( base64 ) {
            var info = this.defaults.formats.PDF;

            // OFFER DOWNLOAD WITH GIVEN FILENAME
            this.download( base64, info.mimeType, fileName + info.extension );
          } );
        } );
      }
    }
  } ]
}