posted by 내.맘.대.로 2014. 11. 28. 12:33

내맘대로의 EPUBGUIDE.NET에서 편집자의 의도를 그대로 살려 전자책을 제작해 드립니다.

종이책의 편집 스타일을 최대한 유지하며, 팝업 주석 처리, 이미지 확대 축소 등 전자책의 장점을 반영하여 전자책을 제작합니다. 탬플릿을 사용하지 않고, 책 한권 한권 고유 스타일을 살리기 때문에 전자책에서도 종이책 디자인을 느낄 수 있습니다.

한국출판문화진흥원의 [텍스트형 전자책 제작 지원 사업] 선정 도서는 ‘제작 난이도별 제작비 산정 기준에 근거하여’ 제작 단가를 산정하고, 일정에 맞춰 제작을 해 드리니 많은 문의 바랍니다.

자세한 내용은 여기로: https://www.epubguide.net/notice/309

오래 전 작성된 글은 현재의 Sigil 버전과 차이가 날 수 있습니다. 등록 일자를 확인 하고 1년 이상 지난 글은 변경된 내용이 있는지 확인하시기 바랍니다.

EPUBGUIDE.NET의 핵심만 모았다. 전자책 편집자를 위한 필독서!

책표지

클릭 편집 탬플릿 제공,

왕초보를 위한
클릭으로 EPUB 만들기

정가 : 9,900원 할인: 8,910원

책표지

기초부터 전자책 제작 실습까지

Sigil 완벽 가이드

정가: 18,000원 할인: 16,200 원

300x250
내맘대로의 EPUBGUIDE.NET에서 편집자의 의도를 그대로 살려 전자책을 제작해 드립니다.


종이책의 편집 스타일을 최대한 유지하며, 팝업 주석 처리, 이미지 확대 축소 등 전자책의 장점을 반영하여 전자책을 제작합니다. 탬플릿을 사용하지 않고, 책 한권 한권 고유 스타일을 살리기 때문에 전자책에서도 종이책 디자인을 느낄 수 있습니다. 
한국출판문화진흥원의 [텍스트형 전자책 제작 지원 사업] 선정 도서는 ‘제작 난이도별 제작비 산정 기준에 근거하여’ 제작 단가를 산정하고, 일정에 맞춰 제작을 해 드리니 많은 문의 바랍니다.
https://www.epubguide.net/notice/309

 

 

PDF를 EPUB으로 변환하는 방법을 궁금해하는 분들이 많이 있어 정리해 드립니다. 

 

PDF를 EPUB으로 전환하면 바로 상품화 할 수 있을거라 생각하는 분들이 있는데 절대 불가능합니다. PDF의 구조가 EPUB과 달라 전환을 하더라도 텍스트와 이미지를 추출하는 정도입니다. PDF는 레이어 형식(PPT에서 글상자나 도형에 글을 넣는 것 처럼)으로 텍스트가 들어가기 때문에 레이어 순서가 꼬이면 문단의 순서가 뒤바뀔 수도 있습니다. 그래서 PDF를 EPUB으로 전환한 후에 텍스트와 이미지를 재편집하는 작업이 필요합니다. 

 

PDF를 EPUB으로 가장 간단히 전환하는 프로그램으로는 calibre(http://calibre-ebook.com/)가 있습니다. 여기서도 calibre를 이용한 변환 방법을 설명드립니다.

 

1. calibre를 다운받아 설치하세요.  http://calibre-ebook.com/

 

2. calibre를 실행시킵니다.

 

 

3. calibre 라이브러리에 변환할 PDF를 추가합니다. 추가는 드래그앤드롭으로 할 수 있습니다.

 

 

4. 파일이 추가되면 PDF 형식만 보입니다.

 

 

5. 변환할 파일을 선택하고 상단 메뉴에 있는 [책 변환]을 클릭합니다. 

 

 

6. 책 변환 화면이 나옵니다. 기본적인 정보를 입력합니다.

참고로 여러가지 설정을 할 수 있지만, 설정을 아무리 잘 해도 좋은 품질의 EPUB을 얻기 어렵습니다. 

EPUB으로 변환 후에 다시 편집을 하는게 좋기 때문에 변환 옵션에 대한 설명은 하지 않습니다. 

 

 

7. EPUB 출력에 대한 옵션입니다. 필요한 옵션을 체크하고 [확인]을 누릅니다.

 

 

8. EPUB 변환이 시작되면 처음 calibre를 실행시켰을 때 화면이 보입니다.

이 화면에서 오른쪽 아래를 보면 [작업 : 1]이란 표시가 나오는데 이 부분을 누르면 EPUB 전환 작업이 어떻게 진행되는지 알 수 있습니다. 

 

 

9. EPUB 변환 작업이 완료되면 PDF만 보이던 파일 형식 정보에 EPUB이 표시됩니다.

 

 

10. EPUB 위에 커서를 놓고 마우스 오른쪽 버튼을 누르면 EPUB 파일을 원하는 폴더로 옮길 수 있습니다.

 

 

 

PDF에서 추출한 EPUB의 품질은 아래 샘플처럼 아주 낮습니다. 이는 사람 수준으로 텍스트를 이해할 수 있는 인공지능 컴퓨터가 나오지 않는 한 어쩔 수 없는 문제입니다. 참고용으로 보려고 해도 보정이 필요합니다. 

 

 

 

 

 

 

 

 

 

300x250
posted by 내.맘.대.로 2014. 8. 12. 15:34

내맘대로의 EPUBGUIDE.NET에서 편집자의 의도를 그대로 살려 전자책을 제작해 드립니다.

종이책의 편집 스타일을 최대한 유지하며, 팝업 주석 처리, 이미지 확대 축소 등 전자책의 장점을 반영하여 전자책을 제작합니다. 탬플릿을 사용하지 않고, 책 한권 한권 고유 스타일을 살리기 때문에 전자책에서도 종이책 디자인을 느낄 수 있습니다.

한국출판문화진흥원의 [텍스트형 전자책 제작 지원 사업] 선정 도서는 ‘제작 난이도별 제작비 산정 기준에 근거하여’ 제작 단가를 산정하고, 일정에 맞춰 제작을 해 드리니 많은 문의 바랍니다.

자세한 내용은 여기로: https://www.epubguide.net/notice/309

오래 전 작성된 글은 현재의 Sigil 버전과 차이가 날 수 있습니다. 등록 일자를 확인 하고 1년 이상 지난 글은 변경된 내용이 있는지 확인하시기 바랍니다.

EPUBGUIDE.NET의 핵심만 모았다. 전자책 편집자를 위한 필독서!

책표지

클릭 편집 탬플릿 제공,

왕초보를 위한
클릭으로 EPUB 만들기

정가 : 9,900원 할인: 8,910원

책표지

기초부터 전자책 제작 실습까지

Sigil 완벽 가이드

정가: 18,000원 할인: 16,200 원

300x250


제목과 문단, 문단과 문단 사이에 간격을 주고 싶을 때 margin 속성을 많이 사용합니다. 뷰어에서 상하좌우 여백을 줄때도 margin 속성을 적용합니다. 


body {

margin : 5%;

}


이렇게 여백을 주면 뷰어 화면에서 상하좌우에 일정한 간격이 생겨 텍스트가 가득한 글을 읽을 때 가독성에 여유가 생깁니다. 


그런데 여백을 줄 때 margin을 많이 사용하지만 padding이라는 속성도 있습니다. 이 둘은 적용된 결과를 보면 아무런 차이도 없기 때문에 구분 없이 사용하기도 합니다. 하지만 이 둘에는 아주 큰 차이가 있어 정확한 쓰임을 모르고 사용할 경우 의도하지 않은 결과가 생길 수 있습니다. 


이 둘의 차이를 한마디로 정의하면 이렇습니다.


margin : 글상자(border) 바깥쪽 여백

padding : 글상자 안쪽 여백



이해에 도움이 되도록 그림으로 설명을 하겠습니다. 


margin과 padding은 테두리가 보이지 않으면 똑같은 스타일이 적용된 것 처럼 보입니다. margin :5%;와 padding 5%;는 모두 상하좌우 여백이 5%씩 적용됩니다. 하지만 테두리를 그려보면 그 차이는 명확해집니다. margin:5%는 글자에 맞게 테두리가 그려지고 테두리 밖에 여백이 5%가 적용되지만 padding:5%는 글자와 테두리 사이에 5%의 여백이 적용됩니다. 


예를 들어 아래처럼 글상자를 2개 만들고 글상자와 글상자 사이에 여백을 넣고 싶을때는 margin을 적용합니다. 아래 글상자는 padding을 0으로 적용했기 때문에 글상자와 글자 사이에 여백이 없습니다. 대신 글상자 바깥쪽 여백, 즉 margin이 20px가 되기 때문에 글상자가 서로 떨어집니다. 

margin :20px; padding : 0px;

margin :20px; padding : 0px;


아래 글상자는 반대로 margin을 0으로, padding을 20px로 적용했습니다. 다른 스타일은 동일하고 margin과 padding만 바꿨는데 글상자의 크기부터 달라집니다. padding을 적용하면 글자와 글상자 사이에 여백이 생기기 때문에 글상자가 커집니다. 그리고 margin, 글상자 바깥쪽 여백은 0이기 때문에 두 글상자가 붙게됩니다. 


margin :0px; padding : 20px;

margin :0px; padding : 20px;


위 글상자를 테두리와 배경색을 없애면 아래처럼 보입니다. padding이 margin보다 조금 넓게 여백이 적용되는 것을 볼 수 있습니다.  


margin :20px; padding : 0px;

margin :20px; padding : 0px;

margin :0px; padding : 20px;

margin :0px; padding : 20px;


전자책을 만들 때 문단이나 전체 여백을 주고 싶다면 margin을 권합니다. padding은 글상자 안쪽의 여백이기 때문에 인용구처럼 한단을 들어가도록 표현하거나 내어쓰기를 할 때 사용하면 좋습니다. margin을 이용해서 내어쓰기를 표현할 때가 있는데 아래 예제를 보고 어느쪽이 더 좋은지 스스로 판단해 보기시 바랍니다. 


▶ padding으로 내어쓰기 표현 : padding-left: 50px; text-indent: -2em; 적용

전자책을 만들 때 문단에 여백을 주고 싶다면 margin을 권합니다. padding은 글상자 안쪽의 여백이기 때문에 인용구처럼 한단을 들어가도록 표현하거나 내어쓰기를 할 때 사용하면 좋습니다. margin을 이용해서 내어쓰기를 표현할 때가 있는데 아래 예제를 보고 어느쪽이 더 좋은지 스스로 판단해 보기시 바랍니다. 




▶ margin으로 내어쓰기 표현 : margin-left: 50px; text-indent: -2em; 적용

전자책을 만들 때 문단에 여백을 주고 싶다면 margin을 권합니다. padding은 글상자 안쪽의 여백이기 때문에 인용구처럼 한단을 들어가도록 표현하거나 내어쓰기를 할 때 사용하면 좋습니다. margin을 이용해서 내어쓰기를 표현할 때가 있는데 아래 예제를 보고 어느쪽이 더 좋은지 스스로 판단해 보기시 바랍니다. 




300x250
posted by 내.맘.대.로 2014. 5. 26. 14:14

내맘대로의 EPUBGUIDE.NET에서 편집자의 의도를 그대로 살려 전자책을 제작해 드립니다.

종이책의 편집 스타일을 최대한 유지하며, 팝업 주석 처리, 이미지 확대 축소 등 전자책의 장점을 반영하여 전자책을 제작합니다. 탬플릿을 사용하지 않고, 책 한권 한권 고유 스타일을 살리기 때문에 전자책에서도 종이책 디자인을 느낄 수 있습니다.

한국출판문화진흥원의 [텍스트형 전자책 제작 지원 사업] 선정 도서는 ‘제작 난이도별 제작비 산정 기준에 근거하여’ 제작 단가를 산정하고, 일정에 맞춰 제작을 해 드리니 많은 문의 바랍니다.

자세한 내용은 여기로: https://www.epubguide.net/notice/309

오래 전 작성된 글은 현재의 Sigil 버전과 차이가 날 수 있습니다. 등록 일자를 확인 하고 1년 이상 지난 글은 변경된 내용이 있는지 확인하시기 바랍니다.

EPUBGUIDE.NET의 핵심만 모았다. 전자책 편집자를 위한 필독서!

책표지

클릭 편집 탬플릿 제공,

왕초보를 위한
클릭으로 EPUB 만들기

정가 : 9,900원 할인: 8,910원

책표지

기초부터 전자책 제작 실습까지

Sigil 완벽 가이드

정가: 18,000원 할인: 16,200 원

300x250

* 요청이 있어 mp3파일의 구간 재생 및 컨트롤러 디자인 변경하는 스크립트를 올립니다*

스크립트를 모르는 분이라면 아래 코드를 그대로 사용하셔도 됩니다. 아래 코드를 어떻게 사용해야 하는지 이해가 안가신다면 쪽지를 남겨주세요.


EPUB3로 책을 제작할 때 오디오나 동영상을 가장 많이 삽입하는 것 같습니다. 오디오 삽입은 아주 간단합니다. 아래 코드처럼 오디오 파일을 삽입하면 간단한 컨트롤러까지 자동으로 나타나게 됩니다. 


<audio controls="controls">

 <source src="../Audio/sample.mp3" type="audio/ogg"/>

Your viewer does not support the audio element.

</audio>


---------------------------------------------------------------------------


<audio src="../Audio/sample.mp3" type="audio/ogg"/ controls="controls">

Your viewer does not support the audio element.

</audio>



위의 예는 HTML5에서 기본으로 제공하는 코드로 어떤 것을 사용해도 동일합니다. 위 코드를 사용하면 자동으로 아래와 같은 컨트롤러가 나타납니다. 컨트롤러는 실행과 일시정지, 소리조절을 할 수 있으며 진행율이 표시됩니다. 화면이 작을 경우에는 자동으로 화면에 맞춰 소리 조절이나 진행율이 사라지기도 합니다. 


* 기본 오디오 컨트롤러*

** 샘플은 단순 이미지로 실제 플레이는 되지 않음**


하지만 책을 만들다 보면 보다 다양한 디자인이 필요할 수 있습니다. 그리고 기본 오디오 컨트롤러를 이용하면 처음부터 끝까지 실행이 되기 때문에 어학교재처럼 특정 구간을 들어야 할 때는 구간별로 오디오 파일을 만들어 수십개, 수백개의 오디오 파일을 각각 지정을 해야합니다. 

이럴 때 스크립트를 사용해 컨트롤러를 수정할 수 있습니다. 스크립트를 사용하면 아래처럼 플레이 버튼의 모양을 변경한다던가, 볼륨 조절 버튼을 추가할 수도 있고, mp3파일 하나만 넣고, 1/100초 단위로 조정을 해가며 원하는 위치만 플레이를 시킬 수 있습니다. 


* 스크립트로 컨트롤러 변경 & 원하는 위치 플레이 *

** 샘플은 단순 이미지로 실제 플레이는 되지 않음**


위 이미지를 보고 '기본 컨트롤러가 더 깔끔하잖아' 하고 얘기하실 분은 없으시리라 생각하겠습니다. 이정도 이해력은 있어야 아래 내용을 이해할 수 있을 테니까요. 위 코드를 만든 스크립트를 하나씩 설명해 드리겠습니다. 설명을 보시고 코드를 이해하신다면 어학교재 처럼 오디오 파일을 많이 삽입해야 할 때 큰 도움이 될거에요.


<audio id="sample1" src="../Audio/sample.mp3"> Your viewer does not support the audio element.</audio>


먼저 오디오를 삽입합니다. 기본 코드를 사용하지만 컨트롤러(controls="controls")를 추가하지 않았습니다. 이렇게 하면 화면에 컨트롤러가 나타나지 않기 때문에 오디오 파일이 들어간 위치에 아무것도 표시되지 않습니다. 대신 컨트롤러를 조작하기 위해 id="sample1"이라고 오디오의 ID를 지정했습니다. 한 페이지에서 여러개의 오디오가 들어갈 경우 각각의 컨트롤러는 이 ID를 참고해서 어떤 오디오 파일을 실행시켜야 하는지가 결정됩니다.


<p>

모두 듣기

<button onclick="playAll()">▶</button>

<button onclick="playStop()">■</button>

<button onclick="volUp()">+</button>

<button onclick="volDown()">-</button>

</p>


이 부분은 컨트롤러를 어떻게 변경하는지 보여주는 샘플입니다. 우선 스크립트에 해당하는 onclick="palyAll()" 부분은 나중에 설명을 하고, <button>태그부터 설명하겠습니다. <button>태그는 글자 그대로 버튼을 만들어 주는 태그입니다. 오디오나 비디오로만 쓸 수 있는게 아니라 다양한 스크립트의 실행 버튼으로 사용될 수 있습니다. 이 태그를 사용하면 자동으로 버튼이 그려지고 태그 사이에 들어있는 내용이 버튼 위에 표시됩니다. 


<button ...>버튼 이름</button>


'버튼 이름'이 들어갈 부분에 원하는 플레이 버튼을 넣거나 이미지를 삽입할 수 있습니다. 이미지는 버튼 태그 사이에 <img src="url"/>로 삽입을 하면 됩니다. 이미지를 이용하면 기본 플레이 버튼보다 다양한 표현이 가능하기 때문에 편집을 할 때 편집자의 의도에 따라 다양한 디자인을 적용할 수 있게 됩니다. 


이제 스크립트를 설명하겠습니다. 스크립트는 각각이 어떻게 작동하는지까지 설명을 하려면 많이 복잡하기 때문에 아래 스크립트를 어떻게 사용하는지를 중심으로 설명을 하겠습니다. 


<button onclick="playAll()">▶</button>

...

function playAll()

myAudio.currentTime=0;

myAudio.play();

}


<button onclick="function">버튼이름</button>에서 onclick은 클릭 버튼을 의미합니다. function은 버튼을 눌렀을 때 실행할 기능이 들어갑니다. 위 코드에서는 오디오의 시작 시간을 0으로(myAudio.currentTime=0;) 해서 실행(myAudio.play();)하라는 기능이 playAll()이라는 function에 담겨있다는 의미(function playAll())입니다. 

따라서 버튼을 클릭하면 playAll()에 담겨져 있는 기능, 처음부터 오디오 파일을 실행하게 되겠지요.


다른 기능도 동일합니다. playStop()은 실행 시간을 0으로 다시 돌려 놓고, 파일을 정지하게 됩니다. 만약 실행 시간을 0으로 돌리지 않으면 일시정지가 됩니다. 일시정지가 필요한 분들은 아래처럼 pause 버튼을 만들 수 있습니다. 

function playStop()

myAudio.pause();

}


볼륨 버튼은 0.2단계씩 볼륨을 올리거나 내릴 수 있습니다. 여기서 볼륨은 기기의 하드웨어 볼륨이 아닙니다. 기기의 하드웨어 볼륨 범위 내에서 조절되기 때문에 최대 크기는 기기의 볼륨 버튼으로 설정한 크기를 넘어설 수는 없습니다. 볼륨은 0부터 1 사이에서 조정이 가능한데, 아래 스크립트에서는 0.2씩 5단계로 볼륨을 조절할 수 있습니다. 더 세밀한 볼륨 조절이 필요하다면 0.1 등으로 변경을 하면 됩니다. 

function volUp()

   {

    myAudio.volume+=0.2

   }


끝으로 가장 복잡한 부분인 재생 구간 설정입니다. 위에서 설명한 것 처럼 아래 버튼을 누르면 playSegment(3,8)이라는 기능이 실행됩니다. 이 기능은 3초 ~ 8초 사이를 실행시키라는 기능이 들어가 있습니다. 스크립트에 대한 설명은 넘어가겠습니다. 스크립트를 아는 분이라면 설명 안해도 이해할테고, 스크립트를 모르는 분이라면 설명을 해도 이해가 어려우실테니...

<p>

3초 ~ 8초 사이

<button onclick="playSegment(3,8)">▶</button>

</p>

------------------------------------------------------------------

myAudio.addEventListener("timeupdate", function (){

if (myAudio.currentTime >= segEnd) {

myAudio.pause();

}   

console.log(myAudio.currentTime);

}, false);


function playSegment(startTime, endTime){

segEnd = endTime;

myAudio.currentTime = startTime;

myAudio.play();

}


구간 플레이가 필요한 mp3등 오디오 파일을 아무 플레이어에서든 실행시키면 원하는 구간이 몇초에 있는지 확인할 수 있습니다. 어학용 플레이어라면 1/100초 단위로도 확인이 가능하겠지요. 이런 플레이어로 원하는 구간의 시작 시간과 끝나는 시간을 확인합니다. 만약 시작 시간이 3.5초~ 8.5초라면 playSegment(3.5,8.5)처럼 소수점으로 표시할 수 있습니다. 


만약 문장 암기 방식의 어학교재를 만들고 있고, mp3 하나에 암기 문장이 모두 들어가 있다면 mp3를 하나씩 자를 필요 없이 문장의 시작과 끝 위치만 확인해서 문장별 음성을 들을 수 있게 책을 만들 수 있게 됩니다. 

<p>play가 되야 하는 문장<button onclick="playSegment(3,8)">▶</button></p>


스크립트를 모르는 분이라면 아래 코드를 그대로 사용하셔도 됩니다. 아래 코드를 어떻게 사용해야 하는지 이해가 안가신다면 쪽지를 남겨주세요.


# 스크립트 샘플

<?xml version="1.0" encoding="utf-8" standalone="no"?>


<!DOCTYPE html>


<html xmlns="http://www.w3.org/1999/xhtml" xmlns:epub="http://www.idpf.org/2007/ops" xml:lang="ko">


<head>

  <title>오디오 컨트롤러 변경 + 특정 구간 재생</title>

</head>


<body id="sec1">

    <section id="sectionstart" epub:type="chapter">

<h2>오디오 특정 위치 플레이</h2>


<p><br /></p>


<div>

<audio id="sample1" src="../sample.mp3"> Your viewer does not support the audio element.</audio>

<p>모두 듣기<button onclick="playAll()">▶</button><button onclick="playStop()">■</button><button onclick="volUp()">+</button><button onclick="volDown()">-</button></p>

<p>3초 ~ 8초 사이<button onclick="playSegment(3,8)">▶</button></p>

<p>10초 ~ 15초 사이<button onclick="playSegment(10,15)">▶</button></p>

<p>17초 ~ 22초 사이<button onclick="playSegment(17,22)">▶</button></p>


<p>25초 ~ 30초 사이<button onclick="playSegment(25,30)">▶</button></p>


<p><button onclick="playStop()">stop</button></p>

</div>

</section>


<script>

<!-- 본 스크립트는 www.epubguide.net에서 제작하였으며, 누구나 자유롭게 사용 및 수정이 가능합니다. 단, 배포를 할 경우 내용을 일부 수정했다 하더라도 원본의 출처를 반드시 밝혀주시기 바랍니다.-->

var myAudio=document.getElementById("sample1");


var segEnd;


myAudio.addEventListener("timeupdate", function (){

if (myAudio.currentTime >= segEnd) {

myAudio.pause();

}   

console.log(myAudio.currentTime);

}, false);


function playSegment(startTime, endTime){

segEnd = endTime;

myAudio.currentTime = startTime;

myAudio.play();

}


function playAll()

myAudio.currentTime=0;

myAudio.play();

}

function playStop()

myAudio.currentTime=0;

myAudio.pause();

    } 

function volUp()

   {

    myAudio.volume+=0.2

   }

function volDown()

   {

    myAudio.volume-=0.2

   }

</script> 

</body>

</html>



300x250