ASciidoctor-fopub에서 생성한 PDF의 머리글 및 바닥글 사용자 정의

개시하다
한층 더 발전asciidoctor-fopub에서 생성된 PDF의 "Table of Contents" 등을 일본어화합니다.하고 매 페이지의 눈썹과 꼬리를 맞춤형으로 만들었다.
이 예에서는 회사의 로고 이미지와 바닥글의 복제품 표시를 머리글에 추가합니다.
샘플 PDF 및 캡처
샘플 PDF: http://1pac.github.io/asciidoctor_template/embed_image_sample.pdf
샘플 창고: https://github.com/1pac/asciidoctor_template
머리글 화면 캡처

바닥글 캡처

변경 내용 설명
복사asciidoctor/asciidoctor-fopub에 포함된 src/dist/docbook-xsl/ 폴더를 수정합니다.
asciidoctor-fopub에서 생성된 PDF의 "Table of Contents" 등을 일본어화합니다.에 적힌 수정은 이미 적용되었으니 다음에 후속 내용을 설명한다.
fo/docbook.로컬 설치 및 xsl 교체
src/dist/dookbook-xsl/fo-pdf.xsl 외부의 XSLT 스타일시트를 다음과 같이 가져옵니다.
//github.com/asciidoctor/asciidoctor-fopub/blob/e1b15e85faa4f17852a2700d751d7428e590bf4c/src/dist/docbook-xsl/fo-pdf.xsl#L20
  <xsl:import href="http://docbook.sourceforge.net/release/xsl/current/fo/docbook.xsl"/>
이 파일을 보면 xsl 파일을 더 많이 가져옵니다.
찾아봤는데 DocBook - Browse /docbook-xsl at SourceForge.net에서 다운로드할 수 있을 것 같아요.최신판 docbook-xsl-178.1.tar.bz2를 다운로드하고 확장합니다.
그리고 로컬 docbookxsl 사용으로 전환.
pagesetup.xsl로 헤더에 로고를 추가하고, 헤더에 다시 쓰기
변경 내용꼬리에 로고, 꼬리에 복사등,ec5c74a·1pac/asciidoctortemplate을 볼 수 있습니다.
바닥글에 복제품 추가
XSLT 스타일시트 파일을 살펴보니 기본적으로 페이지 아래쪽의 중앙에서 페이지 번호를 출력하는 부분이 아래쪽<fo:page-number/>인 것 같습니다. 그런 다음 텍스트를 추가하여 PDF를 생성하고 텍스트 추가를 확인했습니다.
//github.com/1pac/asciidoctor_template/blob/ec5c74aae4f00f4f5d731aa07f9d948151e4e291/docbook-xsl-1pac/docbook-xsl-1.78.1/fo/pagesetup.xsl#L3128-L3130
      <xsl:when test="$double.sided = 0 and $position='center'">
        <fo:page-number/>
      </xsl:when>
따라서 아래와 같이 <fo:block>를 추가하면 바닥글 왼쪽에 텍스트를 추가합니다.
//github.com/1pac/asciidoctor_template/commit/ec5c74aae4f00f4f5d731aa07f9d948151e4e291#diff-986cf999932bb520b251bbf7fb9aba5eR3101
  <fo:block>
    <xsl:choose>
      <xsl:when test="$double.sided = 0 and $position='left'">
        Copyright 2014 1PAC. INC. All Right Reserved.
      </xsl:when>
    </xsl:choose>
  </fo:block>
다만, 글씨체가 너무 커서 줄이 부러졌다.
찾아보니 Long title in header overflows to body · Issue #26 · asciidoctor/asciidoctor-fopub 이런 정보가 발견됐어요.머리에 파라미터header.column.widths가 있어 왼쪽, 중간, 오른쪽 열의 폭을 조절할 수 있다.
따라서 바닥글에 footer.column.widths 매개 변수를 지정했습니다.
또한 XSLT 스타일시트를 볼 때 참조footer.content.properties의 속성위치:이 있습니다.값을 지정하는 방법을 어디서 찾았는지 잊어버렸지만, 글꼴족과 글꼴 크기를 변경할 수 있습니다. 아래와 같습니다.
//github.com/1pac/asciidoctor_template/blob/ec5c74aae4f00f4f5d731aa07f9d948151e4e291/docbook-xsl-1pac/fo-pdf.xsl#L263-L267
  <xsl:param name="footer.column.widths">5 1 5</xsl:param>
  <xsl:attribute-set name="footer.content.properties">
    <xsl:attribute name="font-family">Helvetica</xsl:attribute>
    <xsl:attribute name="font-size">8pt</xsl:attribute>
  </xsl:attribute-set>
머리글에 회사 로고 이미지 추가
XSLT 스타일시트로 이미지 추가
XQuery/XSL-FO Images - Wikibooks, open books for an open world면 됩니다.
따라서 아래와 같이 추가를 시도하면 편지 머리 오른쪽에 로고가 표시됩니다.
//github.com/1pac/asciidoctor_template/blob/ec5c74aae4f00f4f5d731aa07f9d948151e4e291/docbook-xsl-1pac/docbook-xsl-1.78.1/fo/pagesetup.xsl#L2748-L2754
  <fo:block>
    <xsl:choose>
      <xsl:when test="$double.sided = 0 and $position='right'">
        <fo:external-graphic src="docbook-xsl-1pac/1pac-logo.png"/>
      </xsl:when>
    </xsl:choose>
  </fo:block>
총결산
asciidoctor-fopub에 묶인 XSLT 스타일시트를 복사하고 편집하면 눈썹과 꼬리를 사용자 정의할 수 있습니다.XSLT 문외한이었던 저라도 정보를 발견하고 계속 모색하면 하고 싶은 일을 할 수 있기 때문에 간단하게 사용자 정의를 할 수 있다고 생각합니다.

좋은 웹페이지 즐겨찾기