Various fixes

This commit is contained in:
Adam Bouqdib 2016-07-24 10:21:34 +00:00
parent 9ffbaa101c
commit 807fac1074
3 changed files with 10 additions and 6 deletions

View File

@ -1,5 +1,5 @@
Gem::Specification.new do |spec| Gem::Specification.new do |spec|
spec.version = "0.1.3" spec.version = "0.1.6a"
spec.homepage = "http://github.com/abemedia/jekyll-pdf/" spec.homepage = "http://github.com/abemedia/jekyll-pdf/"
spec.authors = ["Adam Bouqdib"] spec.authors = ["Adam Bouqdib"]
spec.email = ["adam@abemedia.co.uk"] spec.email = ["adam@abemedia.co.uk"]

View File

@ -1,4 +1,5 @@
require 'pdfkit' require 'pdfkit'
require File.dirname(__FILE__) + '/helper.rb'
module Jekyll module Jekyll
module PDF module PDF
@ -9,8 +10,8 @@ module Jekyll
@site = site @site = site
@base = base @base = base
@dir = File.dirname(page.url) @dir = File.dirname(page.url)
@name = File.basename(page.url, File.extname(page.url)) + ".pdf" @name = File.basename(page.url, File.extname(page.url)) + '.pdf'
@settings = site.config['pdf'].clone || {} @settings = site.config.key?('pdf') ? site.config['pdf'].clone : {}
@partials = ['cover','header_html','footer_html'] @partials = ['cover','header_html','footer_html']
self.process(@name) self.process(@name)
@ -40,7 +41,6 @@ module Jekyll
end end
# Recursively merge settings from the page, layout, site config & jekyll-pdf defaults # Recursively merge settings from the page, layout, site config & jekyll-pdf defaults
# todo: use jekyll's merge function
def getConfig(data) def getConfig(data)
settings = data['pdf'].is_a?(Hash) ? data['pdf'] : {} settings = data['pdf'].is_a?(Hash) ? data['pdf'] : {}
layout = @site.layouts[data['layout']].data.clone if data['layout'] != nil layout = @site.layouts[data['layout']].data.clone if data['layout'] != nil
@ -55,6 +55,8 @@ module Jekyll
return self.getConfig(layout) return self.getConfig(layout)
end end
# Write the PDF file
# todo: remove pdfkit dependency
def write(dest_prefix, dest_suffix = nil) def write(dest_prefix, dest_suffix = nil)
self.render(@site.layouts, @site.site_payload) if self.output == nil self.render(@site.layouts, @site.site_payload) if self.output == nil
@ -73,12 +75,13 @@ module Jekyll
File.open("#{path}.html", 'w') {|f| f.write(self.output) } if @settings["debug"] File.open("#{path}.html", 'w') {|f| f.write(self.output) } if @settings["debug"]
@settings.delete("debug") @settings.delete("debug")
# Trigger post-write so jekyll-assets builds assets required for the PDF
Jekyll::Hooks.trigger hook_owner, :post_write, self
# Build PDF file # Build PDF file
fix_relative_paths fix_relative_paths
kit = PDFKit.new(self.output, @settings) kit = PDFKit.new(self.output, @settings)
file = kit.to_file(path) file = kit.to_file(path)
#self.output = kit.to_pdf
end end
def layout() def layout()

View File

@ -1,5 +1,6 @@
require 'tmpdir' require 'tmpdir'
require 'digest/md5' require 'digest/md5'
require File.dirname(__FILE__) + '/helper.rb'
module Jekyll module Jekyll
module PDF module PDF