1Dim gDoc As Object 2 3Function Gr(c1 As Long, c2 As Long, b As Integer) 4 Dim g As New com.sun.star.awt.Gradient 5 g.Style = com.sun.star.awt.GradientStyle.LINEAR : g.StartColor = c1 : g.EndColor = c2 6 g.Angle = 0 : g.Border = b : g.XOffset = 50 : g.YOffset = 50 7 g.StartIntensity = 100 : g.EndIntensity = 100 : g.StepCount = 0 8 Gr = g 9End Function 10 11Sub Fill(o As Object, pre As String, kind As String, png As String) 12 Dim h As New com.sun.star.drawing.Hatch 13 Select Case kind 14 Case "solid" 15 o.setPropertyValue(pre + "FillStyle", com.sun.star.drawing.FillStyle.SOLID) 16 o.setPropertyValue(pre + "FillColor", &H33AA55) 17 Case "solid_transp" 18 o.setPropertyValue(pre + "FillStyle", com.sun.star.drawing.FillStyle.SOLID) 19 o.setPropertyValue(pre + "FillColor", &H3355AA) 20 o.setPropertyValue(pre + "FillTransparence", 40) 21 Case "gradient", "shared" 22 o.setPropertyValue(pre + "FillStyle", com.sun.star.drawing.FillStyle.GRADIENT) 23 o.setPropertyValue(pre + "FillGradient", Gr(&HFF0000, &H0000FF, 10)) 24 Case "gradient_transp" 25 o.setPropertyValue(pre + "FillStyle", com.sun.star.drawing.FillStyle.GRADIENT) 26 o.setPropertyValue(pre + "FillGradient", Gr(&HFF0000, &H0000FF, 10)) 27 o.setPropertyValue(pre + "FillTransparence", 30) 28 Case "gradient_tgrad" 29 o.setPropertyValue(pre + "FillStyle", com.sun.star.drawing.FillStyle.GRADIENT) 30 o.setPropertyValue(pre + "FillGradient", Gr(65280, &HFF00FF, 0)) 31 Dim tg As Object 32 tg = gDoc.createInstance("com.sun.star.drawing.TransparencyGradientTable") 33 If Not tg.hasByName("TG1") Then tg.insertByName("TG1", Gr(0, &HFFFFFF, 0)) 34 o.setPropertyValue(pre + "FillTransparenceGradientName", "TG1") 35 Case "hatch", "hatch_nobg" 36 h.Style = com.sun.star.drawing.HatchStyle.SINGLE : h.Color = 43520 : h.Distance = 200 : h.Angle = 450 37 o.setPropertyValue(pre + "FillStyle", com.sun.star.drawing.FillStyle.HATCH) 38 o.setPropertyValue(pre + "FillHatch", h) 39 If kind = "hatch" Then 40 o.setPropertyValue(pre + "FillColor", &HFFFFCC) 41 o.setPropertyValue(pre + "FillBackground", True) 42 Else 43 o.setPropertyValue(pre + "FillBackground", False) 44 End If 45 Case "bitmap_tile", "bitmap_stretch", "bitmap_once" 46 o.setPropertyValue(pre + "FillStyle", com.sun.star.drawing.FillStyle.BITMAP) 47 o.setPropertyValue(pre + "FillBitmapURL", png) 48 If kind = "bitmap_stretch" Then 49 o.setPropertyValue(pre + "FillBitmapMode", com.sun.star.drawing.BitmapMode.STRETCH) 50 ElseIf kind = "bitmap_once" Then 51 o.setPropertyValue(pre + "FillBitmapMode", com.sun.star.drawing.BitmapMode.NO_REPEAT) 52 Else 53 o.setPropertyValue(pre + "FillBitmapMode", com.sun.star.drawing.BitmapMode.REPEAT) 54 End If 55 End Select 56End Sub 57 58Sub Gen 59 Dim out As String, png As String 60 out = Environ("PFF_OUT") : png = Environ("PFF_PNG") 61 Dim a(0) As New com.sun.star.beans.PropertyValue 62 a(0).Name = "Hidden" : a(0).Value = True 63 Dim doc As Object 64 doc = StarDesktop.loadComponentFromURL("private:factory/swriter", "_blank", 0, a()) 65 gDoc = doc 66 Dim kinds 67 kinds = Split(Environ("PFF_KINDS"), ",") 68 Dim styles As Object, s As Object, i As Integer, nm As String 69 styles = doc.StyleFamilies.getByName("PageStyles") 70 For i = 0 To UBound(kinds) 71 nm = "P_" + kinds(i) 72 s = doc.createInstance("com.sun.star.style.PageStyle") 73 styles.insertByName(nm, s) 74 s = styles.getByName(nm) 75 If kinds(i) <> "none" Then Fill s, "", kinds(i), png 76 Next 77 styles.getByName("P_shared").setPropertyValue("FollowStyle", "P_shared") 78 s = doc.createInstance("com.sun.star.style.PageStyle") 79 styles.insertByName("P_shared2", s) 80 Fill styles.getByName("P_shared2"), "", "shared", png 81 s = styles.getByName("P_gradient") 82 s.HeaderIsOn = True 83 Fill s, "Header", "hatch", png 84 Fill styles.getByName("Standard"), "", "solid", png 85 Fill styles.getByName("First Page"), "", "hatch_nobg", png 86 Dim cur As Object, en As Object, p As Object 87 cur = doc.Text.createTextCursor() 88 doc.Text.insertString(cur, "first", False) 89 doc.Text.insertControlCharacter(cur, com.sun.star.text.ControlCharacter.PARAGRAPH_BREAK, False) 90 For i = 0 To UBound(kinds) 91 doc.Text.insertString(cur, "page P_" + kinds(i), False) 92 doc.Text.insertControlCharacter(cur, com.sun.star.text.ControlCharacter.PARAGRAPH_BREAK, False) 93 Next 94 doc.Text.insertString(cur, "page P_shared2", False) 95 en = doc.Text.createEnumeration() 96 p = en.nextElement() 97 p.PageDescName = "First Page" 98 For i = 0 To UBound(kinds) 99 p = en.nextElement() 100 p.PageDescName = "P_" + kinds(i) 101 Next 102 p = en.nextElement() 103 p.PageDescName = "P_shared2" 104 Dim b(0) As New com.sun.star.beans.PropertyValue 105 b(0).Name = "FilterName" : b(0).Value = "writer8" 106 doc.storeToURL(ConvertToURL(out), b()) 107 doc.close(True) 108End Sub 109