2015-10-02 2 views
1

Я создаю приложение Node.js для преобразования PDF в PNG и отображения на странице пользователя.Преобразование PDF в PNG Node.JS

Приложение будет работать следующим образом:

  1. Пользователь загружает PDF на сервер
  2. сервер преобразует PDF-файлы страниц в отдельных PNG файлов
  3. Показать PNGs на странице пользователя

Я нашел отличный пакет под названием Node ImageMagick https://github.com/rsms/node-imagemagick, но его не было Подгонка.

Некоторые вещи, как -monitor флаг из ImageMagick не работает, но не работает на ваниль Node.js, а также:

var exec = require('child_process').exec; 

exec('convert -monitor myFile.pdf myFile.png', function(error, stdout, stderr) { 
    console.log('converting is done'); 
}); 

вещь, которую я хочу достичь, что функция преобразования возвращает имя преобразованных файлов: myFile-0.png, myFile-1.png.

Решение, которое я хотел бы реализовать было сделать каталог с именем PDF и преобразовать PNGs там, как:

exec('convert myFile.pdf myFile/myFile.png', function(error, stdout, stderr) { 
     console.log('converting is done'); 
    }); 

Затем прочитать содержимое этого каталога и отправить пользователю имена файлы и пути.

Это хорошее решение?

Может кто-нибудь объяснить мне, как достичь этой цели?

ответ

1

Обновлено Ответ

Я думаю, что все это происходит в конце, потому что Ghostscript фактически делает работу от имени IM. Вам может потребоваться проверить, сколько страниц в вашем PDF-файле, а затем сделать цикл, если вы хотите мелкозернистый элемент управления.

# Get number of pages in "a.pdf" 
pages=$(identify a.pdf | wc -l) 

# Alternative, faster way of getting number of pages - pdfinfo is part of Poppler package 
pages=$(pdfinfo a.pdf | grep "^Pages") 

for all pages 0 .. (pages-1) 
    convert a.pdf[$page] page-${page}.png 
done 

Оригинал ответа

Не уверен, что я 100% понимаю, что вы хотите, но я думаю, что это что-то вроде этого ...

Скажем, у вас есть 20-страничный PDF, которая называется input.pdf. При печати scene number, чей побег последовательность %s, как этот

convert input.pdf -format "%s\n" -write info: z%d.png 

вы получите это:

Выход

0 
1 
2 
3 
4 
5 
6 
7 
8 
9 
10 
11 
12 
13 
14 
15 
16 
17 
18 
19 

и эти файлы:

ls z* 
z0.png z10.png z12.png z14.png z16.png z18.png z2.png z4.png z6.png z8.png 
z1.png z11.png z13.png z15.png z17.png z19.png z3.png z5.png z7.png z9.png 
+0

Да, ваши вопросы отвечают на некоторые из моих проблем, но, ca n Я получаю эти цифры в реальном времени, как я генерирую, как я вижу, теперь цифры печатаются после всего его завершения? – Hiero

+0

Я обновил ответ, пожалуйста, посмотрите еще раз. –

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