기본 콘텐츠로 건너뛰기

라벨이 node.js인 게시물 표시

파일 리더기 만들기 - pdf를 html로 변환, docx를 pdf로 변환

파일 리더기를 만들고 있다. 우선 rtf와 docx 직접적으로 처리를 하려고 했으나 매우 거지 같아서 pdf로 변환을 거친 후 처리를 하기로 했다. 이번에는 pdf 파일을 html 파일로 바꿔주는 방법, docx파일을 pdf파일로 바꿔주는 방법에 대해서 다뤄보고자 합니다. 우선 pdftohtmljs라는 모듈을 사용할 것인데. 해당 모듈을 사용하기 전에 pdf2htmlex라는 모듈이 설치가 되어야 한다. $ sudo apt - get install pdf2htmlex ubuntu의 경우 위와같이 설치를 해줍니다. $ brew install pdf2htmlex mac의 경우는 brew를 이용하여 설치를 해줍니다. 간혹 맥에서 위처럼 설치중에 아래와 같은 문구가 나타나면서 설치가 진행이 되지 않을 수있습니다. Error: You must `brew link python` before pdf2htmlex can be installed 이럴경우는 아래와 같이 해결이 가능합니다. $ brew link -- overwrite python 위 명령어를 통해 python을 링크를 걸어줍니다. 이게 해당 모듈을 설치를 할 때 python을 사용해서 무엇인가를 하기 위해 link를 걸어주는 것 같습니다. 이제 다시 pdf2htmlex를 설치 해줍니다. $ brew install pdf2htmlex 이제 pdf를 html로 변환해주는 pdftohtmljs를 설치를 해보겠습니다. $ npm install pdftohtmljs var pdftohtml = require ( 'pdftohtmljs' ) ; var converter = new pdftoh

[node.js] Jade Template Engine을 활용한 효율적 관리

node.js에서는 jade와 ejs라는 템플릿 엔진을 이용하여 html파일로 렌더링을 할 수 있습니다. 블로그 주인은  ejs 보다  jade 를 애용합니다. 이유는  { /%   /% } ,  <> 와 같은 특수 문자를 조금 덜 사용하는 jade를 선호합니다. 하지만 jade는  tab 과  space 로 구문을 해석하는 단점이 있습니다. 이번 시간에는 어떻게 하면 효율적인 html파일 관리를 할 수 있을지 설명을 해보도록 하겠습니다. (아래 내용은 100% 정답이 아니라 다양한 방식으로 사용해오면서 발전된 방법입니다. 앞으로도 계속 변할 것이고, 추후에 추가되거나 바뀌는 부분에 대해서는 추가적으로 포스팅을 하겠습니다.) jade의 문법적인 내용을 다루지 않습니다. express를 활용하여 프로젝트를 생성을 해보도록 하겠습니다. project create $ express helloWorld # CREATED helloWorld Directory $ cd helloWorld # MOVED helloWorld project structure +-- app.js +-- bin | +-- www +-- package.json +-- public | +-- javascript | +-- css | +-- images +-- routes | +-- user.js | +-- indexs.js +-- views | +-- error.jade | +-- index.jade | +-- layout.jade views를 집중적으로 탐구를 해 볼 것이다. error.jade extends layout block content h1= message h2= error.status pre #{error.stack} index.jade extends layout block content h1= title p Welcome to #{title} err

[node.js] closure를 활용하여 비동기 루프의 근본적인 문제 해결

클로저를 사용하여 루프 문제를 해결해보려고 한다.  아마 노드를 사용하는 개발자라면 루프를 처리하기 위해 수많은 삽질을 했을 것이다.  이번 글에서 그것을 확실히 해결을 해보려고 한다. promise와 async둘중 하나를 쓰면 되는데 async를 통해서 구현을 해보겠다. (요 몇달간 파이썬만 다루다가 노드 다루려니 적응안되 미칠 뻔 했네;;; ㅋㅋㅋㅋ) 우선 테스트용 test.txt파일을 생성을한다. $ cat test.txt test 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 var  express  =  require( 'express' ); var  router  =  express.Router(); var  async  =  require( 'async' ); var  fs  =  require( 'fs' ); /* GET home page. */ router.get( '/' ,  function (req, res, next) {      var  testList  =  [ 1 , 2 ];     fs.readFile( './routes/test.txt' ,  function (err, data){          console .log(data.toString());         res.end( 'success' );     }) }); module.exports  =  router; Colored by Color Scripter cs 비동기를 쓰는 fs모듈과 async모듈을 호출을 해준다. 위 api를 호출을 하면 정상적으로 test.txt내용이 콘솔에 찎힌다. 이제 testList의 길이만큼 fs.readFile을 호출을 한다면..... 여기서부터