mirror of
https://github.com/kekingcn/kkFileView.git
synced 2026-04-20 06:28:39 +00:00
集成OpenOffice替换为LibreOffice
This commit is contained in:
@@ -1,32 +1,29 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!DOCTYPE script:module PUBLIC "-//OpenOffice.org//DTD OfficeDocument 1.0//EN" "module.dtd">
|
||||
<!--***********************************************************
|
||||
*
|
||||
* Licensed to the Apache Software Foundation (ASF) under one
|
||||
* or more contributor license agreements. See the NOTICE file
|
||||
* distributed with this work for additional information
|
||||
* regarding copyright ownership. The ASF licenses this file
|
||||
* to you under the Apache License, Version 2.0 (the
|
||||
* "License"); you may not use this file except in compliance
|
||||
* with the License. You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing,
|
||||
* software distributed under the License is distributed on an
|
||||
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
|
||||
* KIND, either express or implied. See the License for the
|
||||
* specific language governing permissions and limitations
|
||||
* under the License.
|
||||
*
|
||||
***********************************************************-->
|
||||
<!--
|
||||
* This file is part of the LibreOffice project.
|
||||
*
|
||||
* This Source Code Form is subject to the terms of the Mozilla Public
|
||||
* License, v. 2.0. If a copy of the MPL was not distributed with this
|
||||
* file, You can obtain one at http://mozilla.org/MPL/2.0/.
|
||||
*
|
||||
* This file incorporates work covered by the following license notice:
|
||||
*
|
||||
* Licensed to the Apache Software Foundation (ASF) under one or more
|
||||
* contributor license agreements. See the NOTICE file distributed
|
||||
* with this work for additional information regarding copyright
|
||||
* ownership. The ASF licenses this file to you under the Apache
|
||||
* License, Version 2.0 (the "License"); you may not use this file
|
||||
* except in compliance with the License. You may obtain a copy of
|
||||
* the License at http://www.apache.org/licenses/LICENSE-2.0 .
|
||||
-->
|
||||
<script:module xmlns:script="http://openoffice.org/2000/script" script:name="GetTexts" script:language="StarBasic">Option Explicit
|
||||
' Macro-Description:
|
||||
' This Macro extracts the Strings out of the currently activated document und inserts them into a logdocument
|
||||
' The aim of the macro is to provide the programmer an insight into the StarOffice API
|
||||
' It focusses on how document-Objects are accessed.
|
||||
' Therefor not only texts of the document-body are retrieved but also Texts of general
|
||||
' document Objects like, Annotations, charts and general Document Information
|
||||
' Description:
|
||||
' This macro extracts the strings out of the currently active document and inserts them into a log document.
|
||||
' The aim of the macro is to provide the programmer an insight into the OpenOffice API.
|
||||
' It focuses on how document objects are accessed.
|
||||
' Therefore not only texts of the document body are retrieved but also texts of general
|
||||
' document objects like, annotations, charts and general document information.
|
||||
|
||||
Public oLogDocument, oLogText, oLogCursor, oLogHeaderStyle, oLogBodyTextStyle as Object
|
||||
Public oDocument as Object
|
||||
@@ -38,13 +35,13 @@ Sub Main
|
||||
Dim sDocType as String
|
||||
Dim oHyperCursor as Object
|
||||
Dim oCharStyles as Object
|
||||
BasicLibraries.LoadLibrary("Tools")
|
||||
BasicLibraries.LoadLibrary("Tools")
|
||||
On Local Error GoTo NODOCUMENT
|
||||
oDocument = StarDesktop.ActiveFrame.Controller.Model
|
||||
sDocType = GetDocumentType(oDocument)
|
||||
NODOCUMENT:
|
||||
If Err <> 0 Then
|
||||
Msgbox("This macro extracts all data from the active Writer, Calc or Draw document." & chr(13) &_
|
||||
Msgbox("This macro extracts all data from the active Writer, Calc or Draw/Impress document." & chr(13) &_
|
||||
"To start this macro you have to activate a document first." , 16, GetProductName)
|
||||
Exit Sub
|
||||
End If
|
||||
@@ -55,7 +52,7 @@ Dim oCharStyles as Object
|
||||
If Not IsNull(oLogDocument) Then
|
||||
oLogText = oLogDocument.Text
|
||||
|
||||
' create and define the character styles of the Log-document
|
||||
' create and define the character styles of the log document
|
||||
oCharStyles = oLogDocument.StyleFamilies.GetByName("CharacterStyles")
|
||||
oLogHeaderStyle = oLogDocument.createInstance("com.sun.star.style.CharacterStyle")
|
||||
oCharStyles.InsertbyName("Log Header", oLogHeaderStyle)
|
||||
@@ -101,7 +98,7 @@ Dim oCharStyles as Object
|
||||
End Sub
|
||||
|
||||
|
||||
' ***********************************************Calc-Documents**************************************************
|
||||
' ***********************************************Calc documents**************************************************
|
||||
|
||||
Sub GetCalcStrings()
|
||||
Dim i, n as integer
|
||||
@@ -114,7 +111,7 @@ Dim oSheets as Object
|
||||
For i = 0 to osheets.Count - 1
|
||||
oSheet = osheets.GetbyIndex(i)
|
||||
SheetName = oSheet.Name
|
||||
MakeLogHeadLine("Sheet No. " & i & "(" & SheetName & ")" )
|
||||
MakeLogHeadLine("Sheet No. " & i & " (" & SheetName & ")" )
|
||||
|
||||
' Check the "body" of the sheet
|
||||
GetCellTexts(oSheet)
|
||||
@@ -185,7 +182,7 @@ Dim n,m as integer
|
||||
End Sub
|
||||
|
||||
|
||||
' ***********************************************Writer-Documents**************************************************
|
||||
' ***********************************************Writer documents**************************************************
|
||||
|
||||
Sub GetParagraphTexts(oParaObject as Object, HeadLine as String)
|
||||
Dim ParaEnum as Object
|
||||
@@ -202,8 +199,8 @@ Dim oCell as Object
|
||||
While ParaEnum.HasMoreElements
|
||||
oPara = ParaEnum.NextElement
|
||||
|
||||
' Note: The Enumeration ParaEnum lists all tables and Paragraphs.
|
||||
' Therefor we have to find out what kind of object "oPara" actually is
|
||||
' Note: The enumeration ParaEnum lists all tables and paragraphs.
|
||||
' Therefore we have to find out what kind of object "oPara" actually is
|
||||
If oPara.supportsService("com.sun.star.text.Paragraph") Then
|
||||
' "oPara" is a Paragraph
|
||||
oTextPortEnum = oPara.createEnumeration
|
||||
@@ -225,7 +222,6 @@ Dim oCell as Object
|
||||
End Sub
|
||||
|
||||
|
||||
|
||||
Sub GetChartStrings(oSheet as Object, HeaderLine as String)
|
||||
Dim i as Integer
|
||||
Dim aChartObject as Object
|
||||
@@ -260,7 +256,6 @@ Dim aChartDiagram as Object
|
||||
End Sub
|
||||
|
||||
|
||||
|
||||
Sub GetFrameTexts()
|
||||
Dim i as integer
|
||||
Dim oTextFrame as object
|
||||
@@ -274,8 +269,8 @@ Dim oFrameTextPort as Object
|
||||
oTextFrame = oDocument.TextFrames.GetbyIndex(i)
|
||||
WriteStringToLogFile(oTextFrame.Name)
|
||||
|
||||
' Is the frame bound to the Page
|
||||
If oTextFrame.AnchorType = com.sun.star.text.TextContentAnchorType.AT_PAGE Then
|
||||
' Is the frame bound to the page?
|
||||
If oTextFrame.AnchorType = com.sun.star.text.TextContentAnchorType.AT_PAGE Then
|
||||
GetParagraphTexts(oTextFrame, "Text Frame Contents")
|
||||
End If
|
||||
|
||||
@@ -318,7 +313,6 @@ Dim CurElement as Object
|
||||
End Sub
|
||||
|
||||
|
||||
|
||||
Sub GetLinkedFileNames()
|
||||
Dim oDocSections as Object
|
||||
Dim LinkedFileName as String
|
||||
@@ -360,7 +354,7 @@ Sub GetWriterStrings()
|
||||
End Sub
|
||||
|
||||
|
||||
' ***********************************************Draw-Documents**************************************************
|
||||
' ***********************************************Draw/Impress documents**************************************************
|
||||
|
||||
Sub GetDrawPageTitles(LocObject as Object)
|
||||
Dim n as integer
|
||||
@@ -369,9 +363,9 @@ Dim oPage as Object
|
||||
For n = 0 to LocObject.Count - 1
|
||||
oPage = LocObject.GetbyIndex(n)
|
||||
WriteStringtoLogFile(oPage.Name)
|
||||
' Is the Page a DrawPage and not a MasterPage?
|
||||
' Is the page a DrawPage and not a MasterPage?
|
||||
If oPage.supportsService("com.sun.star.drawing.DrawPage")then
|
||||
' Get the Name of the NotesPage (only relevant for Impress-Documents)
|
||||
' Get the name of the NotesPage (only relevant for Impress documents)
|
||||
If oDocument.supportsService("com.sun.star.presentation.PresentationDocument") then
|
||||
WriteStringtoLogFile(oPage.NotesPage.Name)
|
||||
End If
|
||||
@@ -428,10 +422,10 @@ Dim oDocuProps as Object
|
||||
WriteStringToLogFile(oDocuProps.Description)
|
||||
WriteStringToLogFile(oDocuProps.Subject)
|
||||
WriteStringToLogFile(oDocuProps.Author)
|
||||
' WriteStringToLogFile(oDocuProps.UserDefinedProperties.ReplyTo)
|
||||
' WriteStringToLogFile(oDocuProps.UserDefinedProperties.Recipient)
|
||||
' WriteStringToLogFile(oDocuProps.UserDefinedProperties.References)
|
||||
' WriteStringToLogFile(oDocuProps.Keywords)
|
||||
' WriteStringToLogFile(oDocuProps.UserDefinedProperties.ReplyTo)
|
||||
' WriteStringToLogFile(oDocuProps.UserDefinedProperties.Recipient)
|
||||
' WriteStringToLogFile(oDocuProps.UserDefinedProperties.References)
|
||||
' WriteStringToLogFile(oDocuProps.Keywords)
|
||||
End Sub
|
||||
|
||||
|
||||
@@ -457,7 +451,7 @@ Dim oSearchDesc as Object
|
||||
For i = 0 to oAllHyperLinks.Count - 1
|
||||
oFound = oAllHyperLinks(i)
|
||||
oCrsr = oFound.Text.createTextCursorByRange(oFound)
|
||||
WriteStringToLogFile(oCrs.HyperLinkURL) 'Url
|
||||
WriteStringToLogFile(oCrs.HyperLinkURL) 'Url
|
||||
WriteStringToLogFile(oCrs.HyperLinkTarget) 'Name
|
||||
WriteStringToLogFile(oCrs.HyperLinkName) 'Frame
|
||||
Next i
|
||||
@@ -520,14 +514,14 @@ Dim i as integer
|
||||
End If
|
||||
End Sub
|
||||
|
||||
' ***********************************************LogDocument**************************************************
|
||||
' ***********************************************Log document**************************************************
|
||||
|
||||
Sub WriteStringtoLogFile( sString as String)
|
||||
If (Not FieldInArray(LogArray(),LogIndex,sString))AND (NOT ISNULL(sString)) Then
|
||||
LogArray(LogIndex) = sString
|
||||
LogIndex = LogIndex + 1
|
||||
oLogText.insertString(oLogCursor,sString,False)
|
||||
oLogText.insertControlCharacter(oLogCursor,com.sun.star.text.ControlCharacter.PARAGRAPH_BREAK,False)
|
||||
oLogText.insertControlCharacter(oLogCursor,com.sun.star.text.ControlCharacter.PARAGRAPH_BREAK,False)
|
||||
End If
|
||||
End Sub
|
||||
|
||||
|
||||
Reference in New Issue
Block a user