pdfの結合
今までの成果をまとめてみた
それぞれの使いかたは最初の引数が結合してできたpdf、その後に結合させたいpdfをならべる方式に統一した。
python mergepdf.py newpdf oldpdf1 oldpdf2 oldpdf3...
みたいなかんじ。
PyPdf (python)
# -*- coding: utf-8 -*- import urllib,re,sys,time,glob,os from pyPdf import PdfFileWriter, PdfFileReader sNewPdf = sys.argv[1] aFileList = sys.argv[2:] oPdfTemp = PdfFileWriter() for sFile in aFileList : oEachPdf = PdfFileReader(file(sFile,"rb")) iRange = oEachPdf.getNumPages() for i in xrange(iRange) : oPdfTemp.addPage(oEachPdf.getPage(i)) oPdf = file( sNewPdf,"wb") oPdfTemp.write(oPdf) oPdf.close()
PDF::API2 (perl)
use strict; use warnings; use PDF::API2; my $sNewPdf = shift @ARGV; my @aFileList = @ARGV; my $oNewPdf = PDF::API2->new(); foreach my $sFile (@aFileList){ my $oOldPdf = PDF::API2->open($sFile); my $iPageCount = $oOldPdf->pages(); for( my $iIndex = 1;$iIndex <= $iPageCount;$iIndex++){ my $oPage = $oNewPdf->importpage($oOldPdf,$iIndex); } } $oNewPdf->saveas($sNewPdf);
PDF::Reuse (perl)
use strict; use utf8; use PDF::Reuse; my $sNewPdf = shift @ARGV; my @aFileList = @ARGV; #@aFileList = sort @aFileList; prFile($sNewPdf); foreach my $sFile (@aFileList){ prDoc({file => $sFile}); } prEnd();
Prawn (ruby ファイルサイズが膨らむのでおすすめしない)
require 'prawn' aFileList = ARGV.to_a sNewPdf = aFileList.shift Prawn::Document.new(:template => aFileList[0]) do go_to_page(page_count) iFileList = aFileList.length for iIndex in 1..iFileList-1 iPdfLength = PDF::Reader::ObjectHash.new(aFileList[iIndex]).page_references.length; for iPage in 1 .. iPdfLength start_new_page(:template => aFileList[iIndex],:template_page=>iPage) end end render_file sNewPdf end
その他
pdftk
pdftk oldpdf1.pdf oldpdf2.pdf .. cat output newpdf.pdf
他にもいろいろあるみたい