KTUG 한국 텍 사용자 그룹

Menu

KTUG :: 마당정보글 › 크기가 다른 PDF 합치기

yihoze | 2019.08.06 17:20:30 | 메뉴 건너뛰기 쓰기

PDF 파일을 합치는 여러 방법이 있습니다. 아크로뱃, PDFtk, 그리고 pdfpages 레이텍 패키지.

그런데 여러 파일 중 한 두 파일의 크기가 약간 다르면 \includepdf 옵션을 이리저리 달리 줘봐도 기대한 대로 나오지 않는 경우가 이따금 있습니다. 그래서 \includegraphics 명령으로 한 페이지씩 가져다가 페이지 폭에 맞게 앉히는 명령을 만들어 봤습니다. 

pdflatex과 xelatex으로 컴파일할 수 있습니다.

\documentclass{minimal}
\usepackage[a4paper]{geometry}
\usepackage{graphicx}
\usepackage{xparse}
\geometry{paperwidth=216mm, paperheight=303mm, margin={0pt, 0pt}}
\ExplSyntaxOn
\sys_if_engine_pdftex:T
{
    \pdfminorversion=6
}
\NewDocumentCommand \mergepdf { m }
{
    \bool_gset_false:N \g_tmpa_bool % Not to break the last page
    \clist_set:Nn \l_tmpa_clist { #1 }    
    \int_set:Nn \l_tmpa_int { \clist_count:N \l_tmpa_clist }
    \int_step_inline:nn { \l_tmpa_int }
    {
        \clist_pop:NN \l_tmpa_clist \l_tmpa_tl
        \int_compare:nT { ##1 == \l_tmpa_int }
        {
            \bool_gset_true:N \g_tmpa_bool
        }
        \fetchpage{ \l_tmpa_tl }
    }

}
\NewDocumentCommand \fetchpage { m }
{
    \sys_if_engine_xetex:TF
    {
        \exp_args:NNx \int_set:Nn \l_tmpb_int { \XeTeXpdfpagecount"#1.pdf" }
    }{
        \pdfximage{#1.pdf}
        \exp_args:NNx \int_set:Nn \l_tmpb_int { \the\pdflastximagepages }
    }  
    \int_step_inline:nn { \l_tmpb_int }
    {        
        \includegraphics[width=\paperwidth, page=##1]{#1}
        \bool_if:NTF \g_tmpa_bool 
        {
            \int_compare:nT { ##1 < \l_tmpb_int }
            {
                \break
            }            
        }{
            \break
        }        
    }
}
\ExplSyntaxOff

\begin{document}
\mergepdf{A, B, C} % ← 파일 이름
\end{document}

댓글 [3]

댓글 쓰기

목록

KTUG 한국 텍 사용자 그룹