2016-12-23 6 views
0

Мне нужно уметь отображать html-представления (ничего нового там) и предоставлять конечным пользователям те же представления, что и PDF-файл.Sails EJS-view после использования html-pdf не отображает изображение

Первый случай отлично работает на моей стороне: мне удалось отобразить простой документ html5, а также изображение два раза (версия base64 + стандартный путь).

К сожалению, когда я пытаюсь преобразовать его в файл PDF благодаря html5-to-pdf или html-pdf, версия без base64 из <img> тега не работает и сигнализируют как недостающее ресурса внутри файла PDF.

код я использую следующее:

Контроллер:

//res is the response parameter provided to the controller 

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

var variables = { 

}; 

ejs.renderFile('./views/samplepdf.ejs', variables, function(err, result) { 
    // render on success 
    if (result) { 
    html = result; 

    pdf.create(html).toStream(function(err, stream){ 
     res.contentType("application/pdf"); 
     stream.pipe(res); 
    }); 

    } 
    // render or error 
    else { 
    res.end('An error occurred'); 
    console.log(err); 
    } 
}); 

Вид:

<h2>Image</h2> 
<img class="smaller" src="data:image/jpeg;base64,/validbase64ButIHadToSaveBecauseCharactersLimitExceeded" alt="Sample image" /> 
<img class="smaller" src="images/ymca.jpg" alt="Sample image #2" /> 

Я внимательно прочитал спецификацию Sails о задачах хрюкать и управление активами , поэтому данный images/ymca.jpg существует и может быть доступен из браузера. Я до сих пор не знаю, почему PDF не делает это.

ответ

1

все, что вам нужно сделать, это использовать полный путь изображения при визуализации на PDF контроллера

var variables = { 
    path: sails.config.appPath + 'assets/images/ymca.jpg' 
}; 

вид

<img class="smaller" src="<%= path %>" alt="Sample image #2" /> 

во время рендеринга на PDF с помощью HTML-PDF, он не работает с абсолютный путь.

+0

Прошу прощения за опоздание, но ваш ответ решил мою проблему :) Большое спасибо! Придется немного адаптировать его из-за моей среды разработки (Windows), поэтому я префикс пути с протоколом '' file '', и он отлично работает! Еще раз спасибо, желаю вам счастливого нового года – Cr3aHal0

+0

с новым годом, год g8. –