Pagestyle não sendo definida

Já abri um tópico no fórum em inglês, mas mesmo lá ninguém aparentemente soube responder:

Estou gerando um documento ODT através de um gerador de relatórios (BIRT).
*Esse documento é criado montando os arquivos XML do ODT.

Durante a montagem do content.xml, o BIRT faz a definição da masterpage (pagestyle) no primeiro style definido de cada página. Até aí tudo certo.

O problema, é que quando o primeiro elemento definido é uma table, e o primeiro conteúdo dessa table (primeira célula) é outra table, a propriedade de masterpage da tabela inicial é ignorada e o LibreOffice busca os dados da segunda tabela para definir o pagestyle.

Ou seja, o BIRT define a masterpage na Tabela1 pois é o primeiro elemento da página, porém o conteúdo da primeira célula da Tabela1 é outra tabela. O Libreoffice então considera como o primeiro elemento a primeira célula da Tabela2, tenta buscar a masterpage da Tabela2, porém como não foi definido, devolve um masterpage default.
O mesmo caso se repete se a primeira célula da tabela2 for uma tabela. Então o LibreOffice vai buscar a masterpage da Tabela3.

Existe alguma forma de forçar ele a buscar a masterpage da Tabela1? Esse comportamento é o esperado do Writer?

É possível visualizar o comportamento abrindo o arquivo em anexo, o estilo da página vai estar em retrato, porém era para estar em paisagem. Descompactando ele e abrindo o content.xml, é possível ver nos styles que a masterpage foi setada, porém o LibreOffice não chegou a ler.
document.odt (19.4 KB)

Ola @LeonardodaSilva, desconhecia a existência deste gerador (BIRT), mas da maneira que pergunta, da entender que o problema é com o LibreOffice, não seria mais apropriado perguntar ao criador do BIRT, porque esta gerando o ODT errado.

Olá,

Então, inicialmente eu verifiquei essa questão com o BIRT e depois investiguei o porquê de estar ocorrendo o problema. Pela estrutura do arquivo, aparentemente está montado certo, mas o comportamento do ODT fica meio estranho:
Se eu possuo essa estrutura (primeiro elemento é uma tabela e a primeira célula outra tabela), quando eu tento editar pelo navegador, o Libreoffice “ignora” a primeira tabela e vai direto para a segunda.

7d5352a2b85809e6d97644bf291353158261df4b_2_690x331

Se descompactar os arquivos e acessar o content.xml, terá a seguinte situação:

Nos Styles, a masterpage está sendo definida na Table1.Table1.

<style:style style:name="Table1.Table1" style:family="table" style:master-page-name="Mp-1-1">
	<style:table-properties table:border-model="collapsing" table:align="left"
			style:width="11.192in" fo:text-align="start" style:vertical-align="baseline" fo:break-before="page" />
</style:style>
<style:style style:name="Table2.Table2" style:family="table">
	<style:table-properties table:border-model="collapsing" table:align="left"
			style:width="3.73in" fo:text-align="start" style:vertical-align="baseline" />
</style:style>

A Table1.Table1 é o primeiro elemento do arquivo e deveria estar definindo a masterpage de página. Porém o Libreoffice não a considera como um elemento pois sua primeira célula é a Table2.Table2. Como o Style da Table2.Table2 não foi definido, a masterpage default é aplicada.

<office:body>
		<office:text>
			<table:table table:style-name="Table1.Table1">
				<table:table-column table:style-name="Table1.Column1" />
				<table:table-header-rows>
					<table:table-row>
						<table:table-cell table:style-name="Table1.Cell1">
							<table:table table:style-name="Table2.Table2">
								<table:table-column />
								<table:table-row>
									<table:table-cell table:style-name="Table2.Cell2">
										<text:p text:style-name="P1">

A questão, é que como o conteúdo (body) é definido separado dos styles, fica improvável que o BIRT consiga contornar a situação, pois enquanto os styles são montados não é verificado o body.
Situação um tanto complicada, queria saber se esse comportamento das tables é uma regra de negócio definida ou então um bug do formato.

Adicionei o link do tópico em inglês.

Pode presentar o problema no site de bugs: bugs.documentfoundation.org
Alí os developers podem ver.

Não sei se podería se adicionar un espaço de zero largura (?) ("​" U+200B zero width space) antes da Tabela1 e definir a masterpage para esse espaço.

Vou abrir um tópico no bugzilla então.

Quanto ao espaço com zero de largura, é praticamente a abordagem que estamos utilizando para contornar o problema por enquanto, mas como usamos um editor de relatórios, mesmo um campo sem largura gera uma pequena alteração entre os formatos gerados.

Obrigado pela direção!

1 Like