Skip to content

Commit 5a00142

Browse files
authored
Merge pull request #125 from thinreports/make-editable-meta-data
allow any string to be set to the title of the PDF document metadata
2 parents 69c2198 + 9855b5b commit 5a00142

4 files changed

Lines changed: 16 additions & 5 deletions

File tree

CHANGELOG.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@ Breaking Changes:
1010
Enhancements:
1111

1212
* Add Ruby 3.1, 3.2 support
13+
* Allow any string to be set to the title attribute of the PDF document metadata
1314

1415
Notes:
1516

lib/thinreports/basic_report/generator/pdf.rb

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -11,11 +11,12 @@ class PDF
1111

1212
# @param [Thinreports::BasicReport::Report::Base] report
1313
# @param [Hash] security (nil)
14-
def initialize(report, security: nil)
14+
# @param [String] title (nil)
15+
def initialize(report, security: nil, title: nil)
1516
report.finalize
1617

1718
@report = report.internal
18-
title = default_layout ? default_layout.format.report_title : nil
19+
title ||= default_layout ? default_layout.format.report_title : nil
1920

2021
@document = Document.new(title: title, security: security)
2122
@drawers = {}

lib/thinreports/basic_report/report/base.rb

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -149,13 +149,15 @@ def layout(id = nil)
149149

150150
# @param [String] filename
151151
# @param [Hash] security (see http://prawnpdf.org/api-docs/2.0/Prawn/Document/Security.html#encrypt_document-instance_method)
152+
# @param [String] title Value of the title attribute of the PDF document metadata.
153+
# if nil, the title of the default layout file is set.
152154
# @return [String]
153155
# @example Generate PDF data
154156
# report.generate # => "%PDF-1.4...."
155157
# @example Create a PDF file
156158
# report.generate(filename: 'foo.pdf')
157-
def generate(filename: nil, security: nil)
158-
Thinreports::BasicReport::Generator::PDF.new(self, security: security).generate(filename)
159+
def generate(filename: nil, security: nil, title: nil)
160+
Thinreports::BasicReport::Generator::PDF.new(self, security: security, title: title).generate(filename)
159161
end
160162

161163
# @see Thinreports::BasicReport::Core::Shape::Manager::Target#list

test/basic_report/units/report/test_base.rb

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -125,7 +125,7 @@ def test_generate
125125
generator.expects(:generate).with('result.pdf')
126126

127127
Thinreports::BasicReport::Generator::PDF.expects(:new)
128-
.with(report, security: { owner_password: 'pass' })
128+
.with(report, security: { owner_password: 'pass' }, title: nil)
129129
.returns(generator)
130130

131131
report.generate(
@@ -134,6 +134,13 @@ def test_generate
134134
)
135135
end
136136

137+
def test_generate_when_title_argument_is_specified
138+
report = Report::Base.new layout: @layout_file.path
139+
pdf = report.generate(title: 'Custom title')
140+
141+
assert_equal 'Custom title', PDF::Reader.new(StringIO.new(pdf)).info[:Title]
142+
end
143+
137144
def test_page_should_return_the_current_page
138145
@report.use_layout(@layout_file.path)
139146
@report.start_new_page

0 commit comments

Comments
 (0)