Relatorio New Page

In an ODT file, how do I ensure that a certain section gets printed on a new page no matter how many records get printed before that section?

You must insert a page break before the starting of rendering the content for the record.
Most of the Tryton template are designed this way (pseudo-code):

<for each="record in records">
  <page break/>
  <record.rec_name/>
</for>

I get the following traceback

Traceback (most recent call last):
  File "/Genshi-0.7.1-py3.6.egg/genshi/template/directives.py", line 109, in _parse_expr
    lookup=template.lookup) or None
  File "/Genshi-0.7.1-py3.6.egg/genshi/template/eval.py", line 80, in __init__
    node = _parse(source, mode=self.mode)
  File "/Genshi-0.7.1-py3.6.egg/genshi/template/eval.py", line 429, in _parse
    return parse(source, mode)
  File "/Genshi-0.7.1-py3.6.egg/genshi/template/astutil.py", line 22, in parse
    return compile(source, '', mode, _ast.PyCF_ONLY_AST)
  File "<string>", line 1
    __relatorio_escape_invalid_chars(page break/)
                                          ^
SyntaxError: invalid syntax in expression "__relatorio_escape_invalid_chars(page break/)" of "replace" directive

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/trytond-5.0.6-py3.6.egg/trytond/wsgi.py", line 73, in dispatch_request
    return endpoint(request, **request.view_args)
  File "/trytond-5.0.6-py3.6.egg/trytond/protocols/dispatcher.py", line 46, in rpc
    request, database_name, *request.rpc_params)
  File "/trytond-5.0.6-py3.6.egg/trytond/wsgi.py", line 44, in auth_required
    return wrapped(*args, **kwargs)
  File "/trytond-5.0.6-py3.6.egg/trytond/protocols/wrappers.py", line 122, in wrapper
    return func(request, pool, *args, **kwargs)
  File "/trytond-5.0.6-py3.6.egg/trytond/protocols/dispatcher.py", line 176, in _dispatch
    result = rpc.result(meth(*c_args, **c_kwargs))
  File "/trytond-5.0.6-py3.6.egg/trytond/report/report.py", line 182, in execute
    oext, content = cls._execute(records, data, action_report)
  File "/trytond-5.0.6-py3.6.egg/trytond/report/report.py", line 190, in _execute
    return cls.convert(action, cls.render(action, report_context))
  File "/trytond-5.0.6-py3.6.egg/trytond/report/report.py", line 290, in render
    data = rel_report(**report_context).render()
  File "/relatorio-0.8.1-py3.6.egg/relatorio/reporting.py", line 123, in __call__
    return template.generate(**data).filter(*self.filters)
  File "/relatorio-0.8.1-py3.6.egg/relatorio/templates/opendocument.py", line 841, in generate
    stream = super(Template, self).generate(*args, **kwargs)
  File "/Genshi-0.7.1-py3.6.egg/genshi/template/base.py", line 565, in generate
    stream = self.stream
  File "/Genshi-0.7.1-py3.6.egg/genshi/template/base.py", line 454, in stream
    self._prepare_self()
  File "/Genshi-0.7.1-py3.6.egg/genshi/template/base.py", line 473, in _prepare_self
    self._stream = list(self._prepare(self._stream, inlined))
  File "/Genshi-0.7.1-py3.6.egg/genshi/template/base.py", line 496, in _prepare
    yield kind, (directives, list(substream)), pos
  File "/Genshi-0.7.1-py3.6.egg/genshi/template/base.py", line 491, in _prepare
    namespaces, pos)
  File "/Genshi-0.7.1-py3.6.egg/genshi/template/directives.py", line 499, in attach
    expr = cls._parse_expr(value, template, *pos[1:])
  File "/Genshi-0.7.1-py3.6.egg/genshi/template/directives.py", line 114, in _parse_expr
    offset + (err.offset or 0))
genshi.template.base.TemplateSyntaxError: invalid syntax in expression "__relatorio_escape_invalid_chars(page break/)" of "replace" directive (, line 1) (<string>, line 2378)

When I told about “page break”, it is in pseudo-code. You must use the actual “page break” from LibreOffice menu Insert > Page Break.

1 Like

Thank You for helping.
The solution worked.

@ced,

I have a user who wants to select the records in the list view and then print them in a single go. However, each record needs to be printed from a new page. While trying the option, there is a blank page in the start (since we have given a Printed by, Printed on footer, it is appearing on the blank page). What is solution regarding the same?

If you have a starting blank page, it is because there are remaining content on it.
The best is too look at the fodt.

This topic was automatically closed 30 days after the last reply. New replies are no longer allowed.