Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
S
sdkjs
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
Analytics
Analytics
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Commits
Issue Boards
Open sidebar
Boris Kocherov
sdkjs
Commits
deb7375c
Commit
deb7375c
authored
May 31, 2016
by
Ilya Kirillov
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Сделаны функции получения всех автофигур и URL всех картинок в документе.
parent
a85a3c89
Changes
4
Hide whitespace changes
Inline
Side-by-side
Showing
4 changed files
with
121 additions
and
59 deletions
+121
-59
word/Editor/Document.js
word/Editor/Document.js
+30
-1
word/Editor/DocumentContent.js
word/Editor/DocumentContent.js
+0
-15
word/Editor/DocumentContentBase.js
word/Editor/DocumentContentBase.js
+86
-43
word/Editor/HeaderFooter.js
word/Editor/HeaderFooter.js
+5
-0
No files found.
word/Editor/Document.js
View file @
deb7375c
...
...
@@ -323,8 +323,11 @@ CSelectedContent.prototype =
this
.
DrawingObjects
=
[];
this
.
Comments
=
[];
this
.
Maths
=
[];
this
.
HaveShape
=
false
;
this
.
HaveShape
=
false
;
this
.
MoveDrawing
=
false
;
// Только для переноса автофигур
this
.
HaveMath
=
false
;
},
Add
:
function
(
Element
)
...
...
@@ -16929,6 +16932,32 @@ CDocumentSectionsInfo.prototype =
}
},
Get_AllDrawingObjects
:
function
(
arrDrawings
)
{
for
(
var
nIndex
=
0
,
nCount
=
this
.
Elements
.
length
;
nIndex
<
nCount
;
++
nIndex
)
{
var
SectPr
=
this
.
Elements
[
nIndex
].
SectPr
;
if
(
null
!=
SectPr
.
HeaderFirst
)
SectPr
.
HeaderFirst
.
Get_AllDrawingObjects
(
arrDrawings
);
if
(
null
!=
SectPr
.
HeaderDefault
)
SectPr
.
HeaderDefault
.
Get_AllDrawingObjects
(
arrDrawings
);
if
(
null
!=
SectPr
.
HeaderEven
)
SectPr
.
HeaderEven
.
Get_AllDrawingObjects
(
arrDrawings
);
if
(
null
!=
SectPr
.
FooterFirst
)
SectPr
.
FooterFirst
.
Get_AllDrawingObjects
(
arrDrawings
);
if
(
null
!=
SectPr
.
FooterDefault
)
SectPr
.
FooterDefault
.
Get_AllDrawingObjects
(
arrDrawings
);
if
(
null
!=
SectPr
.
FooterEven
)
SectPr
.
FooterEven
.
Get_AllDrawingObjects
(
arrDrawings
);
}
},
Document_CreateFontMap
:
function
(
FontMap
)
{
var
Count
=
this
.
Elements
.
length
;
...
...
word/Editor/DocumentContent.js
View file @
deb7375c
...
...
@@ -1204,21 +1204,6 @@ CDocumentContent.prototype.Draw = function(nPageIndex,
pGraphics
.
End_Command
();
}
};
// Составляем полный массив всех ParaDrawing используемых в данном классе (с учетом всех вложенных DocumentContent)
CDocumentContent
.
prototype
.
Get_AllDrawingObjects
=
function
(
DrawingObjs
)
{
if
(
undefined
===
DrawingObjs
)
DrawingObjs
=
[];
var
Count
=
this
.
Content
.
length
;
for
(
var
Pos
=
0
;
Pos
<
Count
;
Pos
++
)
{
var
Item
=
this
.
Content
[
Pos
];
Item
.
Get_AllDrawingObjects
(
DrawingObjs
);
}
return
DrawingObjs
;
};
CDocumentContent
.
prototype
.
Get_AllComments
=
function
(
AllComments
)
{
if
(
undefined
===
AllComments
)
...
...
word/Editor/DocumentContentBase.js
View file @
deb7375c
...
...
@@ -11,12 +11,12 @@
*/
function
CDocumentContentBase
()
{
this
.
StartPage
=
0
;
// Номер стартовой страницы в родительском классе
this
.
CurPage
=
0
;
// Номер текущей страницы
this
.
StartPage
=
0
;
// Номер стартовой страницы в родительском классе
this
.
CurPage
=
0
;
// Номер текущей страницы
this
.
Content
=
[];
this
.
Content
=
[];
this
.
ReindexStartPos
=
0
;
this
.
ReindexStartPos
=
0
;
}
/**
...
...
@@ -24,16 +24,59 @@ function CDocumentContentBase()
*/
CDocumentContentBase
.
prototype
.
Update_ContentIndexing
=
function
()
{
if
(
-
1
!==
this
.
ReindexStartPos
)
{
for
(
var
Index
=
this
.
ReindexStartPos
,
Count
=
this
.
Content
.
length
;
Index
<
Count
;
Index
++
)
{
this
.
Content
[
Index
].
Index
=
Index
;
}
this
.
ReindexStartPos
=
-
1
;
}
if
(
-
1
!==
this
.
ReindexStartPos
)
{
for
(
var
Index
=
this
.
ReindexStartPos
,
Count
=
this
.
Content
.
length
;
Index
<
Count
;
Index
++
)
{
this
.
Content
[
Index
].
Index
=
Index
;
}
this
.
ReindexStartPos
=
-
1
;
}
};
/**
* Получаем массив всех автофигур.
* @param {Array} arrDrawings - Если задан массив, тогда мы дополняем данный массив и возвращаем его.
* @returns {Array}
*/
CDocumentContentBase
.
prototype
.
Get_AllDrawingObjects
=
function
(
arrDrawings
)
{
if
(
undefined
===
arrDrawings
||
null
===
arrDrawings
)
arrDrawings
=
[];
if
(
this
instanceof
CDocument
)
{
this
.
SectionsInfo
.
Get_AllDrawingObjects
(
arrDrawings
);
}
for
(
var
nPos
=
0
,
nCount
=
this
.
Content
.
length
;
nPos
<
nCount
;
++
nPos
)
{
this
.
Content
[
nPos
].
Get_AllDrawingObjects
(
arrDrawings
);
}
return
arrDrawings
;
};
/**
* Получаем массив URL всех картинок в документе.
* @param {Array} arrUrls - Если задан массив, тогда мы дополняем данный массив и возвращаем его.
* @returns {Array}
*/
CDocumentContentBase
.
prototype
.
Get_AllImageUrls
=
function
(
arrUrls
)
{
if
(
undefined
===
arrDrawings
||
null
===
arrDrawings
)
arrUrls
=
[];
var
arrDrawings
=
this
.
Get_AllDrawingObjects
();
for
(
var
nIndex
=
0
,
nCount
=
arrDrawings
.
length
;
nIndex
<
nCount
;
++
nIndex
)
{
var
oParaDrawing
=
arrDrawings
[
nIndex
];
oParaDrawing
.
GraphicObj
.
getAllRasterImages
(
arrUrls
);
}
return
arrUrls
;
};
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
// Private area
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
...
...
@@ -43,8 +86,8 @@ CDocumentContentBase.prototype.Update_ContentIndexing = function()
*/
CDocumentContentBase
.
prototype
.
private_ReindexContent
=
function
(
StartPos
)
{
if
(
-
1
===
this
.
ReindexStartPos
||
this
.
ReindexStartPos
>
StartPos
)
this
.
ReindexStartPos
=
StartPos
;
if
(
-
1
===
this
.
ReindexStartPos
||
this
.
ReindexStartPos
>
StartPos
)
this
.
ReindexStartPos
=
StartPos
;
};
/**
* Специальная функия для рассчета пустого параграфа с разрывом секции.
...
...
@@ -56,32 +99,32 @@ CDocumentContentBase.prototype.private_ReindexContent = function(StartPos)
*/
CDocumentContentBase
.
prototype
.
private_RecalculateEmptySectionParagraph
=
function
(
Element
,
PrevElement
,
PageIndex
,
ColumnIndex
,
ColumnsCount
)
{
var
LastVisibleBounds
=
PrevElement
.
Get_LastRangeVisibleBounds
();
var
___X
=
LastVisibleBounds
.
X
+
LastVisibleBounds
.
W
;
var
___Y
=
LastVisibleBounds
.
Y
;
// Чтобы у нас знак разрыва секции рисовался красиво и где надо делаем небольшую хитрость:
// перед пересчетом данного параграфа меняем в нем в скомпилированных настройках прилегание и
// отступы, а после пересчета помечаем, что настройки нужно скомпилировать заново.
var
CompiledPr
=
Element
.
Get_CompiledPr2
(
false
).
ParaPr
;
CompiledPr
.
Jc
=
align_Left
;
CompiledPr
.
Ind
.
FirstLine
=
0
;
CompiledPr
.
Ind
.
Left
=
0
;
CompiledPr
.
Ind
.
Right
=
0
;
// Делаем предел по X минимум 10 мм, чтобы всегда было видно элемент разрыва секции
Element
.
Reset
(
___X
,
___Y
,
Math
.
max
(
___X
+
10
,
LastVisibleBounds
.
XLimit
),
10000
,
PageIndex
,
ColumnIndex
,
ColumnsCount
);
Element
.
Recalculate_Page
(
0
);
Element
.
Recalc_CompiledPr
();
// Меняем насильно размер строки и страницы данного параграфа, чтобы у него границы попадания и
// селект были ровно такие же как и у последней строки предыдущего элемента.
Element
.
Pages
[
0
].
Y
=
___Y
;
Element
.
Lines
[
0
].
Top
=
0
;
Element
.
Lines
[
0
].
Y
=
LastVisibleBounds
.
BaseLine
;
Element
.
Lines
[
0
].
Bottom
=
LastVisibleBounds
.
H
;
Element
.
Pages
[
0
].
Bounds
.
Top
=
___Y
;
Element
.
Pages
[
0
].
Bounds
.
Bottom
=
___Y
+
LastVisibleBounds
.
H
;
var
LastVisibleBounds
=
PrevElement
.
Get_LastRangeVisibleBounds
();
var
___X
=
LastVisibleBounds
.
X
+
LastVisibleBounds
.
W
;
var
___Y
=
LastVisibleBounds
.
Y
;
// Чтобы у нас знак разрыва секции рисовался красиво и где надо делаем небольшую хитрость:
// перед пересчетом данного параграфа меняем в нем в скомпилированных настройках прилегание и
// отступы, а после пересчета помечаем, что настройки нужно скомпилировать заново.
var
CompiledPr
=
Element
.
Get_CompiledPr2
(
false
).
ParaPr
;
CompiledPr
.
Jc
=
align_Left
;
CompiledPr
.
Ind
.
FirstLine
=
0
;
CompiledPr
.
Ind
.
Left
=
0
;
CompiledPr
.
Ind
.
Right
=
0
;
// Делаем предел по X минимум 10 мм, чтобы всегда было видно элемент разрыва секции
Element
.
Reset
(
___X
,
___Y
,
Math
.
max
(
___X
+
10
,
LastVisibleBounds
.
XLimit
),
10000
,
PageIndex
,
ColumnIndex
,
ColumnsCount
);
Element
.
Recalculate_Page
(
0
);
Element
.
Recalc_CompiledPr
();
// Меняем насильно размер строки и страницы данного параграфа, чтобы у него границы попадания и
// селект были ровно такие же как и у последней строки предыдущего элемента.
Element
.
Pages
[
0
].
Y
=
___Y
;
Element
.
Lines
[
0
].
Top
=
0
;
Element
.
Lines
[
0
].
Y
=
LastVisibleBounds
.
BaseLine
;
Element
.
Lines
[
0
].
Bottom
=
LastVisibleBounds
.
H
;
Element
.
Pages
[
0
].
Bounds
.
Top
=
___Y
;
Element
.
Pages
[
0
].
Bounds
.
Bottom
=
___Y
+
LastVisibleBounds
.
H
;
};
\ No newline at end of file
word/Editor/HeaderFooter.js
View file @
deb7375c
...
...
@@ -876,6 +876,11 @@ CHeaderFooter.prototype =
return
this
.
Content
.
Get_AllParagraphs
(
Props
,
ParaArray
);
},
Get_AllDrawingObjects
:
function
(
arrDrawings
)
{
return
this
.
Content
.
Get_AllDrawingObjects
(
arrDrawings
);
},
Get_PrevElementEndInfo
:
function
(
CurElement
)
{
return
null
;
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment