문서·데이터 라이브러리Document & data libraries

pdf-page-range-parser

'1-3, 5, 8-' 같은 페이지 선택을 순서와 중복을 유지한 채 정확한 범위로 바꾸고, 모호한 입력은 거부하는 파서입니다.

GitHub에서 보기View on GitHub

어떤 문제를 푸나The problem

인쇄 대화상자는 선택을 정렬하고 중복을 없앱니다. 문서를 나누거나 순서를 바꿀 때 '2,2,1'은 말 그대로 그 순서입니다. 이 파서는 순서와 반복을 유지하고 '8-'처럼 끝이 열린 범위도 지원하며, 빈 구간과 문서 밖의 페이지, 거꾸로 된 구간은 오류를 던져서 모호한 입력이 조용히 통과하지 않게 합니다.

이런 분께 맞습니다Who it is for

PDF 분할·재배열 기능을 만드는 프런트엔드·Node 개발자.

무엇을 하나What it does

  • parseRanges(text, total)는 1부터 시작하는 포함 구간 배열을 돌려줍니다.
  • 페이지는 쉼표로만 구분하고 '1 2'처럼 쉼표 없는 구분은 거부합니다. '-'나 '~' 앞뒤 공백은 허용합니다.
  • 빈 구간은 SyntaxError, 문서 밖이나 거꾸로 된 구간은 RangeError입니다.
  • rangeToIndexes와 everyN으로 0부터의 인덱스와 N쪽씩 나누기를 지원합니다.

직접 돌려 본 출력Real output

저장소의 examples 폴더를 실행한 결과입니다.

$ node examples/quickstart.mjs
ranges   [[1,3],[5,5],[8,10]]
indexes  [0,1,2,4,7,8,9]
every 4  [[1,4],[5,8],[9,10]]
repeat   [[2,2],[2,2],[1,1]]
reject   "1,,2" -> SyntaxError: empty range segment
reject   "0-3" -> RangeError: range outside document
reject   "4-2" -> RangeError: reversed range: 4-2
reject   "1-99" -> RangeError: range outside document
reject   "abc" -> SyntaxError: invalid range: abc

알아둘 한계Limits

  • PDF 자체를 파싱하지 않습니다. 의존성이 없는 ES 모듈입니다(Node.js 22).

받아서 쓰기Get it

# 저장소를 받습니다
git clone https://github.com/Kein-chronicle/pdf-page-range-parser.git

# Claude Code 스킬로 쓰려면 이 폴더 이름으로 받습니다
git clone https://github.com/Kein-chronicle/pdf-page-range-parser.git ~/.claude/skills/page-range-parser

정보Info

분류Category
문서·데이터 라이브러리Document & data libraries
형태Type
라이브러리Library
라이선스License
MIT
필요한 것Requires
Node.js 22 이상
저장소Repository
pdf-page-range-parser
토픽Topics
pdf javascript esm parser page-range split-pdf zero-dependencies claude-skills

2026-10-18 기준: 저장소의 테스트를 로컬에서 실행해 통과했고, 예제 출력은 저장소의 examples 폴더를 실제로 실행한 결과입니다.

공유하기Share

문자Message 네이버 블로그Naver Blog X Facebook