1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798 |
- # encoding: utf-8
- #
- # Redmine - project management software
- # Copyright (C) 2006-2017 Jean-Philippe Lang
- #
- # This program is free software; you can redistribute it and/or
- # modify it under the terms of the GNU General Public License
- # as published by the Free Software Foundation; either version 2
- # of the License, or (at your option) any later version.
- #
- # This program is distributed in the hope that it will be useful,
- # but WITHOUT ANY WARRANTY; without even the implied warranty of
- # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- # GNU General Public License for more details.
- #
- # You should have received a copy of the GNU General Public License
- # along with this program; if not, write to the Free Software
- # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
-
- module Redmine
- module Export
- module PDF
- module WikiPdfHelper
- # Returns a PDF string of a set of wiki pages
- def wiki_pages_to_pdf(pages, project)
- pdf = Redmine::Export::PDF::ITCPDF.new(current_language)
- pdf.set_title(project.name)
- pdf.alias_nb_pages
- pdf.footer_date = format_date(User.current.today)
- pdf.add_page
- pdf.SetFontStyle('B',11)
- pdf.RDMMultiCell(190,5, project.name)
- pdf.ln
- # Set resize image scale
- pdf.set_image_scale(1.6)
- pdf.SetFontStyle('',9)
- write_page_hierarchy(pdf, pages.group_by(&:parent_id))
- pdf.output
- end
-
- # Returns a PDF string of a single wiki page
- def wiki_page_to_pdf(page, project)
- pdf = ITCPDF.new(current_language)
- pdf.set_title("#{project} - #{page.title}")
- pdf.alias_nb_pages
- pdf.footer_date = format_date(User.current.today)
- pdf.add_page
- pdf.SetFontStyle('B',11)
- pdf.RDMMultiCell(190,5,
- "#{project} - #{page.title} - # #{page.content.version}")
- pdf.ln
- # Set resize image scale
- pdf.set_image_scale(1.6)
- pdf.SetFontStyle('',9)
- write_wiki_page(pdf, page)
- pdf.output
- end
-
- def write_page_hierarchy(pdf, pages, node=nil, level=0)
- if pages[node]
- pages[node].each do |page|
- unless level == 0 && page == pages[node].first
- pdf.add_page
- end
- pdf.bookmark page.title, level
- write_wiki_page(pdf, page)
- write_page_hierarchy(pdf, pages, page.id, level + 1) if pages[page.id]
- end
- end
- end
-
- def write_wiki_page(pdf, page)
- text = textilizable(page.content, :text,
- :only_path => false,
- :edit_section_links => false,
- :headings => false,
- :inline_attachments => false
- )
- pdf.RDMwriteFormattedCell(190,5,'','', text, page.attachments, 0)
- if page.attachments.any?
- pdf.ln(5)
- pdf.SetFontStyle('B',9)
- pdf.RDMCell(190,5, l(:label_attachment_plural), "B")
- pdf.ln
- for attachment in page.attachments
- pdf.SetFontStyle('',8)
- pdf.RDMCell(80,5, attachment.filename)
- pdf.RDMCell(20,5, number_to_human_size(attachment.filesize),0,0,"R")
- pdf.RDMCell(25,5, format_date(attachment.created_on),0,0,"R")
- pdf.RDMCell(65,5, attachment.author.name,0,0,"R")
- pdf.ln
- end
- end
- end
- end
- end
- end
- end
|