Oldukça kesmek, ancak unzip
.odt dosyasına ping yapmanızı ve ham XML ile çalışmanızı öneririm . Content.xml, düzenlenecek doğru dosya gibi görünüyor.
İçeriği olan bir test dosyası hazırladım:
QQQQQ
-page break-
AAAAA
Ve işte ham XML'in ilgili kısmı:
<!---*lots* of declarations--->
<office:automatic-styles>
<style:style style:name="P1" style:family="paragraph" style:parent-style-name="Standard">
<style:paragraph-properties fo:break-before="page"/>
</style:style>
</office:automatic-styles>
<office:body>
<office:text text:use-soft-page-breaks="true">
<text:sequence-decls>
<text:sequence-decl text:display-outline-level="0" text:name="Illustration"/>
<text:sequence-decl text:display-outline-level="0" text:name="Table"/>
<text:sequence-decl text:display-outline-level="0" text:name="Text"/>
<text:sequence-decl text:display-outline-level="0" text:name="Drawing"/>
</text:sequence-decls>
<text:p text:style-name="Standard">QQQQQ</text:p>
<text:p text:style-name="P1">AAAAA</text:p>
</office:text>
</office:body>
<!---some happy-end--->
(Gerçek dosya muhtemelen daha karmaşık olacaktır.) Bana öyle geliyor ki, "P1" paragraftan önceki sayfa kırma özelliğini "taşımak" için yaratılmış bir tarz . Yani aklıma iki şey geliyor:
- "P1"
<text:p />
etiketini kaldır
- sayfa sonu özelliğini "P1" stilinden kaldırın
Bu arada, burada bazı gerçek XML ayrıştırıcıların lehine regexlerden kaçınmayı da tavsiye ederim.