2016-05-11 4 views
1

jqueryデータ型のPDFボタンを使用しています。これは、本質的にpdfmakeライブラリです。問題は、ユーザーがテーブルをエクスポートするためにボタンをクリックしたときに、テーブルのすぐ上に段落を追加したいということです。私は "メッセージ"パラメータを使用しようとしましたが、私の人生では、pdfがダウンロードされる直前に追加情報を取得することはできません。私はこれをやってみました。JqueryデータテーブルとPDFエクスポートのカスタムメッセージまたは段落

buttons: [ 
         { 
          extend: 'pdfHtml5', 
          orientation: 'landscape', 
          pageSize: 'LEGAL', 
          title: 'Entry', 
          header:true, 
          message:function() { $("#HeaderDesc").text()} 

         } 
] 

しかし、私は試みに失敗しました。誰にもこれを達成するためのアイデアはありますか?

答えて

1

できません。 configボタンのリテラルはに一度はmessageは機能タイプに対応していません。

ただし、あまり詳しく記載されていないcustomize()コールバックでmessageを変更することはできます。これは、dataTablesが生成された文書をpdfmakeに渡す直前に呼び出されます。あなたがmessageを定義した場合、その後、contentノードにmessageセクション(複数可)が存在し、それらのノードは、実際のメッセージ保持text属性います述べたように

customize: function (doc) { 
    doc.content.forEach(function(content) { 
    if (content.style == 'message') { 
     content.text = 'this is a late created message' 
    } 
    }) 
} 

を、あなたmessage前を定義する必要がありますこれはうまくいくでしょう。 messageを定義していない場合、操作できるタイプのメッセージのスタイルはありません。あなたのpdfhtml5設定は次のようになります。

buttons: [ 
    { 
    message: '__MESSAGE__', 
    extend: 'pdfHtml5', 
    orientation: 'landscape', 
    pageSize: 'LEGAL', 
    title: 'Entry', 
    header:true, 
    customize: function (doc) { 
     doc.content.forEach(function(content) { 
     if (content.style == 'message') { 
      content.text = $("#HeaderDesc").text() 
     } 
     }) 
    } 
} 
] 

デモ - >https://jsfiddle.net/xx5f5z6x/

+0

あなたは最高です!お返事ありがとうございました。私はそのカスタマイズコールバックについて頭を悩ましていました。 – Miguel

2

これに別の簡単な解決策があります。 spliceプロパティを使ってこれを実現しました。内部カスタマイズ機能のようにすることができます。

doc.content.splice(0, 1, { 
          text: [ 
             { text: 'I am loving dataTable and PdfMake \n',bold:true,fontSize:15 }, 
             { text: 'You can control everything.',italics:true,fontSize:12 } 

          ], 
          margin: [0, 0, 0, 12], 
          alignment: 'center' 
         }); 

これは、第1の位置[0インデックス]でスプライス並びに上記コンテンツと1つの値を置き換えます。

ハッピーコーディング!!!!

関連する問題