Pdfs2Pdf
Combine multiple PDF files into one file with simple bookmarks support.
The gem rely on the power of great opensource projects such as
- Ghostscript - for combining multiple pdf files
- Wkhtmltopdf - for converting file to PDF
and it is built on top of my other gems
- agile_utils gem
- code_lister gem
What it does?
Says you have the follow pdf files (included inside the test fixtures)
./test/fixtures/samples/demo1_xxx.rb.xhtml.pdf
./test/fixtures/samples/demo2_xxx.rb.xhtml.pdf
./test/fixtures/samples/sub_dir/demo3_xxx.rb.xhtml.pdf
./test/fixtures/samples/sub_dir/demo4_xxx.rb.xhtml.pdf
Which have the following content:
- File:
./test/fixtures/samples/demo1_xxx.rb.xhtml.pdf

- File:
./test/fixtures/samples/demo2_xxx.rb.xhtml.pdf

- File:
./test/fixtures/samples/sub_dir/demo3_xxx.rb.xhtml.pdf

- File:
./test/fixtures/samples/sub_dir/demo4_xxx.rb.xhtml.pdf

When you run the following command:
gem install pdfs2pdf
git clone https://github.com/agilecreativity/pdfs2pdf.git
cd pdfs2pdf
rbenv local 2.1.1 # if you use rbenv as your ruby manager
rbenv rehash
pdfs2pdf merge --base-dir ./test/fixtures/samples
Will produce the result like the following
- File:
final_output.pdf(excepted screenshot)

- File:
final_output.pdf(actual pdf)
Requirments
Mandatory Requirement
Usage
gem install pdfs2pdf
For list of usage type
pdfs2pdf help
Which should give the following options
Commands:
pdfs2pdf help [COMMAND] # Describe available commands or one specific command
pdfs2pdf merge # Combine multiple pdfs into one file with bookmarks
pdfs2pdf usage # Display usage information
Help on merge command just type pdfs2pdf help merge.
Which should produce the following guide.
Usage:
pdfs2pdf merge [OPTIONS]
Options:
-b, [--base-dir=BASE_DIR] # Base directory
# Default: . (current directory)
-r, [--recursive], [--no-recursive] # Search for files recursively
# Default: true
-v, [--version], [--no-version] # Display version information
Combine multiple pdfs into one file with bookmarks
To combine multiple pdfs just try something like
pdfs2pdf merge --base-dir ./test/fixtures/samples
This will merge all the pdf files from test/fixtures/samples and generate the
final_output.pdf in the current directory.
Known Issues
The directory that contains the pdf files must only contain the letters, numbers and/or underscore characters. Any other characters like
-(dash) may caused the 'pdfmarks' file to produce incorrect bookmarks.- Solution: try rename your folder to 'something_with_underscore' but not 'something-with-dash' before running the command.
Contributing
- Fork it ( http://github.com/agilecreativity/pdfs2pdf/fork )
- Create your feature branch (
git checkout -b my-new-feature) - Commit your changes (
git commit -am 'Add some feature') - Push to the branch (
git push origin my-new-feature) - Create new Pull Request

