epubedit¶
/usr/local/m2/setting.json
다음 영역에 대해 기술한다.
{
"functions": {
"contents": {
"epubedit": {
...
}
}
}
}
Important
epubedit
함수는 unzip 함수에 의존성을 가지므로 반드시 같이 활성화되어야 한다.
How to use¶
명령어 리스트¶
epub
파일에 대해 용량제한 없는 가공을 지원한다.
# 페이지 편집 - 추출할 id 값을 문자열 그대로 개별 입력.
https://example.com/src.epub/epubedit/trim/cover,001,002,003,004
# 페이지 범위 편집 - id가 숫자라면 범위 표현 지원.
https://example.com/src.epub/epubedit/trim/1-10,100-120
https://example.com/src.epub/epubedit/trim/-30
https://example.com/src.epub/epubedit/trim/-30,100-
# 개별콘텐츠 후가공 연계
https://example.com/src.epub/epubedit/archive/resize200
https://example.com/src.epub/epubedit/trim/1-10/archive/resize_encrypt
meta¶
# functions.contents.epubedit
"meta" : {
"enable": false,
"keyword": "epubedit"
}
enable (기본: false)
epubedit 활성화
keyword (기본: epubedit)
키워드
trim¶
root 문서로 /META-INF/container.xml
를 분석하며 일반적으로 standard.opf
를 중심으로 편집한다.
trim
명령어는 문서 내 id
, idref
속성을 찾아 추출한다.
Note
페이지 범위추출은 반드시 연속된 숫자 형태의 id
또는 idref
값이어야 한다.
<item media-type="application/xhtml+xml" id="p-cover" href="xhtml/p-cover.xhtml">
<item media-type="application/xhtml+xml" id="p-001" href="xhtml/p-001.xhtml">
<item media-type="application/xhtml+xml" id="p-002" href="xhtml/p-002.xhtml">
<item media-type="application/xhtml+xml" id="p-003" href="xhtml/p-003.xhtml">
... (생략) ...
<item media-type="application/xhtml+xml" id="p-200" href="xhtml/p-200.xhtml">
/trim/cover
단일 페이지 표현/trim/80-105
페이지 범위는-
로 연결이 가능하다./trim/10-
시작 페이지만 지정/trim/-20
끝 페이지만 지정
prefix¶
# functions.contents.epubedit.trim
"prefix": [
"i-",
"p-"
]
prefix
페이지 추출시 입력된 값과 일치하는 페이지와 더불어,
prefix
에 정의된 문자열을 추가로 추출한다. 예를 들어 위와 같이 설정한 경우/trim/10
은id
값10
뿐만 아니라i-10
,p-10
를 대상으로 지정한다.
Note
trim
순서는 입력순서가 아닌 원본에 명시된 순서이다.
include¶
# functions.contents.epubedit.trim
"include": [
"<item (.*) properties=\"cover-image\"/>",
"id=\"toc\"",
"id=\"p-cover\""
]
include
페이지 추출시 해당 문자열과 매칭(정규식)하는 라인은 항상 추출한다. 해당 문자열은
standard.opf
문서의<manifest>
에 포함되는 요소이며, 문자열 매칭을 통해 페이지를 남길 수 있도록 설정한다.
예를 들어 위 예제 설정의 경우 다음 라인은 trim
으로 입력하지 않아도 항상 추출된다.
# <item (.*) properties=\"cover-image\"/> 패턴과 일치한다.
<item media-type="image/jpeg" id="cover" href="image/cover.jpg" properties="cover-image"/>
pageSpread¶
추출된 페이지의 page-spread-left
, page-spread-right
속성을 재정렬한다.
# functions.contents.epubedit.trim
"pageSpread": {
"enable": false,
"order": "auto"
}
enable (기본: false)
재정렬 기능을 사용한다.
order (기본: auto)
재정렬 방식
auto
원본 첫 페이지를 기준으로 정렬한다.left
추출된 첫 페이지를 기준으로page-spread-left
->page-spread-right
순으로 설정한다.right
추출된 첫 페이지를 기준으로page-spread-right
->page-spread-left
순으로 설정한다.
다음은 예제이다.
# pageSpread.enable: false
<itemref idref="p01" properties="page-spread-left" />
<itemref idref="p03" properties="page-spread-left" />
<itemref idref="p05" properties="page-spread-left" />
<itemref idref="p07" properties="page-spread-left" />
<itemref idref="p09" properties="page-spread-left" />
# pageSpread.enable: true
# pageSpread.order: right
<itemref idref="p01" properties="page-spread-right" />
<itemref idref="p03" properties="page-spread-left" />
<itemref idref="p05" properties="page-spread-right" />
<itemref idref="p07" properties="page-spread-left" />
<itemref idref="p09" properties="page-spread-right" />
archive¶
epub
아카이빙 전 개별 콘텐츠를 함수체인을 이용하여 가공한다.
# functions.contents.epubedit
"archive": {
"enable": true,
"rules": [
{
"name": "resize200",
"matchingList": [
{
"pattern": "/image/i-([^/]+).jpg",
"replace": "/image/i-#1.jpg/dims/resize/200"
},
{
"pattern": "/image/cover.jpg",
"replace": "/image/cover.jpg/dims/grayscale/true"
}
]
},
{
"name": "encrypt",
"matchingList": [
{
"pattern": "/image/([^/]+).jpg",
"replace": "/image/i-#1.jpg/dims/resize/1024/denc/bluk/true"
}
]
}
]
}
enable (기본: false)
archive 기능을 활성화한다.
rules
archive 규칙 리스트
name
규칙 이름
matchingList
매칭 리스트
pattern
추출된 개별 콘텐츠 URL 패턴
replace
함수체인이 반영된 URL
위 설정 예제는 다음과 같이 호출 가능하다.
# 후가공없는 페이지 추출
https://example.com/src.epub/epubedit/trim/cover,001-013
# cover는 흑백으로 추출, 1~13페이지는 가로 200으로 리사이즈
https://example.com/src.epub/epubedit/trim/cover,001-013/archive/resize200
# 추출된 페이지 가로 1024 리사이즈 후 암호화
https://example.com/src.epub/epubedit/trim/cover,001-013/archive/encrypt