2012-04-12 3 views
6

У меня есть приложение node.js, в котором я использую pdfkit для создания PDF-документов. Я хочу иметь возможность включать изображения из URL-адреса в pdf. Я не могу сохранить изображение в файловой системе, потому что моя среда выполнения является только для чтения, а в pdf-наборе, как представляется, найти изображения для вставки из каталога файловой системы. Есть ли способ, которым я могу использовать url в pdf-наборе для встраивания изображения?Может ли PDF-файл сохранить изображения с URL-адреса?


Here. Этот парень модифицировал pdfkit, чтобы включить эту функциональность.

+1

Нет, это невозможно с текущей реализацией. Но я могу сказать вам, что легко изменить источник и реализовать эту функцию. –

+0

Я предполагаю, что этот вопрос касается [this pdfkit] (http://pdfkit.org/) –

+0

[Это] (https://github.com/devongovett/pdfkit/blob/master/lib/image.coffee#L13) где он читает файл. Вы можете, например, изменить его на '@contents = filename' или все, что вы хотите. –

ответ

1

вы можете использовать http.get:

http.get('YOUR URL TO GET THE IMAGE').on('response', function(res) 
    res.setEncoding('binary'); 
    res.on('data', function(chunk){ 
     buffer += chunk; 
    }); 
    res.on('end', function(){ 

    fs.writeFile('PATH TO SAVE IMAGE', buffer, 'binary', function (err) { 
     if (err){ 
      throw err; 
     } 
     doc = new PDFDocument({ size: 'LETTER or any other size pdfkit offer' }); 
     doc.image('PATH TO SAVE IMAGE', 0, 0, { fit: [WIDTH, HEIGHT] }) 
     .fontSize(10).text('text 1', 100, 170) 
     .fontSize(16).text('text 2', 60, 120) 

    }); //After file is download and was write into the HD will use it 

}).end(); //EO Downloading the file 
2

PDFKit теперь поддерживает прохождение буферов в doc.image метода вместо имени файла. См. this фиксация. Таким образом, вы можете сделать, как предлагает другой ответ, и загрузить изображение из URL-адреса самостоятельно, а затем передать буфер непосредственно в PDFKit, а не сначала сохранить его в файл.

 Смежные вопросы

  • Нет связанных вопросов^_^