2016-09-07 7 views
0

私はjsreport-coreベースのアプリを持っていますが、コンテンツテンプレートはうまくレンダリングされますが、ヘッダーはレンダリングされません。ここで私のアプリの基本的なステップ:jsreport-core:phantom-pdf receipeでヘッダーを使用

import jsreportCore from 'jsreport-core'; 
import jsreportFsStore from 'jsreport-fs-store'; 
import jsreportTemplates from 'jsreport-templates'; 
import jsreportJsrender from 'jsreport-jsrender'; 
import jsreportPhantomPdf from 'jsreport-phantom-pdf'; 
import jsreportExpress from 'jsreport-express'; 

// ... 

jsreport.use(new jsreportFsStore({dataDirectory: "data", syncModifications: true})); 
jsreport.use(new jsreportTemplates()); 
jsreport.use(new jsreportJsrender); 
jsreport.use(new jsreportPhantomPdf()); 
jsreport.use(new jsreportExpress({app : app})); 

// ... 
const jsreport = new jsreportCore({ 
    loadConfig: false, 
    autoTempCleanup: true, 
    connectionString: { 'name': 'fs' }, 
    tasks: { allowedModules: '*' } 
}); 

// ... 


jsreport.render({ template : {name: "foo",engine: "jsrender",recipe:"phantom-pdf"},data : dataObj}).then((out) => { 
     out.stream.pipe(res); 
    }).catch((e) => { 
     res.end(e.message); 
    }); 

これは、コンテンツテンプレートがロードされるテンプレートディレクトリ構造です。 (jsreport-studioと同じです)。

---- data 
------ templates 
-------- foo 
---------- content.html 
---------- header.html 

答えて

1
Solution: put the header information in a object "phantom" in the render  paramter object: 

{ 
    template : {name: "foo",engine:"jsrender",recipe:"phantom-pdf",phantom :{ 
     header :"<h1>TEST HEAD <div style='text-align:center'{{#pageNum}}/{{#numPages}}</div> </h1>", headerHeight : "10cm"} 
} 

and put an extra parameter in the jsreport-phantom-pdf contructor: 

jsreport.use(new jsreportPhantomPdf({ strategy: 'phantom-server' })); 


ref: 
https://github.com/jsreport/jsreport-phantom-pdf 
https://www.npmjs.com/package/phantom-pdf 
http://jsreport.net/learn/phantom-pdf 
関連する問題