Created attachment 25934[details]
Fixed version
When you ParagraphProperties.getLvl() for any style sheet, that is a part of the outline, it returns a value from 0 to 8 for Heading 1 to Heading 9. But for normal styles it returns 0, which makes it indistinguishable from each other.
The MICROSOFT OFFICE WORD 97-2007 BINARY FILE FORMAT SPECIFICATION states the following:
The standard PAP is all zeros except:
fWidowControl 1
fMultLineSpace 1
dyaLine 240 twips
Lvl 9
I solved this problem by changing the initial value for property org.apache.poi.hwpf.model.types.PAPAbstractType#field_58_lvl to 9. After this, I can read the same outline levels as Word shows me: getLvl() returns values from 0 to 9; 9 is Body text and 0..8 are outline levels 1..9.
Attached is a modified version of PAPAbstractType.java, which also alters the initial value for the property field_17_fWidowControl according to specification. Properties for fMultLineSpace and dyaLine are not there, it is probably for some newer version of Word.

I found a mistake in my patch. I added the initial values to PAPAbstractType, but they already were in ParagraphProperties's constructor. But the initial value for lvl was incorrectly assigned to ilvl (which are two different properties) - that is the problem to be fixed.
I will attach new patch. Please apply the patch to version 3.7 so we could use the final version without patching.

Created attachment 26020[details]
Diff file to be applied to repository
This is a patch created by following the rules in the POI Contribution Guidelines, along with a testcase. It is created upon the current repository head version. Please check it and possibly merge it.

This is ASF Bugzilla: the Apache Software Foundation bug system. In case
of problems with the functioning of ASF Bugzilla, please contact
bugzilla-admin@apache.org.
Please Note: this e-mail address is only for reporting problems
with ASF Bugzilla. Mail about any other subject will be silently
ignored.