2016-02-11 16 views
10

Tôi đang sử dụng this để chuyển đổi html sang PDF. Chuyển đổi thực sự tốt. Nhưng vấn đề là thêm đầu trang và chân trang trong các trang PDF. Trong tùy chọn nếu tôi thêm các văn bản tiêu đề tôi đã nhận được kết quả những gì tôi mong đợi.Thêm hình ảnh vào tiêu đề bằng cách sử dụng mô-đun nút html-pdf

//Options 

    var options = { 
    "header": { 
     "height": "45mm", 
     "contents": "<div style='text-align: center;'>Author: Marc Bachmann</div>" // If i add image in content it wont work 
    // sample i tried 
     }, 
     "footer": { 
     "height": "28mm", 
     "contents": "<span style='color: #444;'>{{page}}</span>/<span>{{pages}}</span>" 
     } 
    } 
// Tried this in contents <img src="image path" /> 
    var result = <div class="container"> HTML CONTENT</div>'; 

     pdf.create(result, options).toFile(fileName + ".pdf", function(err, res) { 
     if (err) { 
     console.error(err); 
     callback(); 
     } 

Sau đó, nếu tôi thêm thẻ hình ảnh vào tùy chọn tiêu đề (nội dung) tôi không nhận được hình ảnh trong tệp PDF được tạo. Bạn có thể vui lòng cho tôi một giải pháp cho lời cảm ơn này không.

Trả lời

9

Có thể thêm hình ảnh vào tiêu đề tùy chọn. 1. Tải hình ảnh trong phần thân html với kiểu "display: none". 2.Sau đó thêm hình ảnh vào tiêu đề tùy chọn Bằng cách thực hiện việc này, hình ảnh được lưu vào bộ nhớ cache và có thể đính kèm hình ảnh vào tiêu đề.

var options = { 
    "format": 'Letter', 
    "orientation": "portrait", 
    "header": { 
    "contents": "<img src='image path' />", 
     "height": "30mm" 
    }, 
    "footer": { 
    "contents": footer 
    } 
} 
pdf.create("<div style='display:none'><img src='image path' /></div>", options).toFile("sample.pdf", function(err, res) { 
     if (err) { 
       console.error(err); 
       callback(); 
     } 
}); 
+0

Cảm ơn:). Công việc của nó như một sự quyến rũ .. Đây là những gì tôi mong đợi .... Cảm ơn rất nhiều – venkats

+0

giải pháp này không phải là cho html-pdf nhưng cho html để pdf .... – Rahul

1

đề cập đến this issue trên github, bạn không thể đưa hình ảnh của bạn trực tiếp trong options.header, bạn cần phải đặt nó trong cơ thể bên trong một <div id="pageHeader"></div>:

var pdf = require('html-pdf'); 
var path = require('path'); 

// this is very important, you have to put file:// before your path 
// and normalize the resulting path 
var imgSrc = 'file://' + __dirname + '/350x120.png'; 
imgSrc = path.normalize(imgSrc); 
// or var imgSrc = path.join('file://', __dirname, '/350x120.png'); 

// Options 
var options = { 
    "header": { 
     "height": "45mm", 
     "contents": "" 
    }, 
    "footer": { 
     "height": "28mm", 
     "contents": "<span style='color: #444;'>{{page}}</span>/<span>{{pages}}</span>" 
    } 
    } 
// put your entire header here and the content of the page outside the <div id="pageHeader"></div> 
var result = "<div id='pageHeader'><img src='" + imgSrc + "' /><div style='text-align: center;'>Author: Marc Bachmann</div></div>"; 
result += "<p>Lorem ipsum dolor sit amet, consectetur adipisicing elit.</p>"; 
var fileName = __dirname + '/test.pdf'; 
pdf.create(result, options).toFile(fileName, function(err, res) { 
    if (err) { 
    console.error(err); 
    } 
}); 

Với mã này, tôi nhận được pdf này:

generated pdf

+0

Cảm ơn trả lời của bạn ... Ở đây bạn được tạo ra html và vượt qua nó để package.But tôi cần phải thiết lập các hình ảnh từ các tùy chọn tiêu đề (Vì vậy mà nó sẽ sao chép tất cả các file PDF được tạo ra) Vì vậy, là nó có thể làm điều đó thiết lập hình ảnh từ tiêu đề tùy chọn chính nó? – venkats

+0

Tự động trích dẫn bản thân: * bạn không thể đặt hình ảnh của mình trực tiếp trong tùy chọn. Tiêu đề *. Bạn có thể lưu trữ '

' trong một biến và nối nó vào phần thân của tất cả pdf của bạn. – Shanoor

+0

Vì vậy, chúng ta nên có hình ảnh trong html cho mỗi trang? Nhưng vẫn còn văn bản có thể được lặp lại trong tiêu đề tùy chọn. – venkats

Các vấn đề liên quan