Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
O
onlyoffice_core
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
onlyoffice_core
Commits
2470bfd3
Commit
2470bfd3
authored
Jun 09, 2017
by
Ilya Kirillov
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Fixed bug with caching fonts for different pages. Fixed bug with drawing a text.
parent
3ae52bd2
Changes
6
Hide whitespace changes
Inline
Side-by-side
Showing
6 changed files
with
46 additions
and
25 deletions
+46
-25
PdfReader/PdfReader.cpp
PdfReader/PdfReader.cpp
+2
-2
PdfReader/Src/GFont.cpp
PdfReader/Src/GFont.cpp
+4
-5
PdfReader/Src/Object.h
PdfReader/Src/Object.h
+14
-4
PdfReader/Src/RendererOutputDev.cpp
PdfReader/Src/RendererOutputDev.cpp
+15
-13
PdfReader/Src/XRef.cpp
PdfReader/Src/XRef.cpp
+5
-1
PdfReader/Src/XRef.h
PdfReader/Src/XRef.h
+6
-0
No files found.
PdfReader/PdfReader.cpp
View file @
2470bfd3
...
...
@@ -262,9 +262,9 @@ namespace PdfReader
}
void
CPdfReader
::
ConvertToRaster
(
int
nPageIndex
,
const
std
::
wstring
&
wsDstPath
,
int
nImageType
,
const
int
nRasterW
,
const
int
nRasterH
)
{
CFontManager
*
pFontManager
=
m_pInternal
->
m_pAppFonts
->
GenerateFontManager
();
CFontManager
*
pFontManager
=
m_pInternal
->
m_pAppFonts
->
GenerateFontManager
();
CFontsCache
*
pFontCache
=
new
CFontsCache
();
pFontCache
->
SetStreams
(
m_pInternal
->
m_pAppFonts
->
GetStreams
());
pFontCache
->
SetStreams
(
m_pInternal
->
m_pAppFonts
->
GetStreams
());
pFontManager
->
SetOwnerCache
(
pFontCache
);
CGraphicsRenderer
oRenderer
;
...
...
PdfReader/Src/GFont.cpp
View file @
2470bfd3
...
...
@@ -47,6 +47,7 @@
#include "GFont.h"
#include "File.h"
#include "Stream.h"
#include "XRef.h"
namespace
PdfReader
{
...
...
@@ -1945,12 +1946,10 @@ namespace PdfReader
}
else
{
// Нет ссылки на данный шрифт, но ссылка нам нужна как идентефикатор, поэтому выбираем некотый уникальный номер
// (поскольку корректное версионное число состоит из 5 цифр, поэтому любое 6-циферное число будет безопасным решением)
oRef
.
nNum
=
nIndex
;
if
(
p
FontDictR
ef
)
if
(
p
Xr
ef
)
{
oRef
.
nGen
=
100000
+
pFontDictRef
->
nNum
;
oRef
.
nGen
=
pXref
->
GenerateUniqueRefGen
()
;
}
else
{
...
...
@@ -1998,4 +1997,4 @@ namespace PdfReader
}
return
NULL
;
}
}
\ No newline at end of file
}
PdfReader/Src/Object.h
View file @
2470bfd3
...
...
@@ -69,25 +69,35 @@ namespace PdfReader
}
bool
operator
<
(
const
Ref
&
oRight
)
const
{
return
nNum
<
oRight
.
nNum
;
if
(
nNum
<
oRight
.
nNum
)
return
true
;
else
if
(
nNum
==
oRight
.
nNum
)
return
nGen
<
oRight
.
nGen
;
else
return
false
;
}
bool
operator
>
(
const
Ref
&
oRight
)
const
{
return
nNum
>
oRight
.
nNum
;
if
(
nNum
>
oRight
.
nNum
)
return
true
;
else
if
(
nNum
==
oRight
.
nNum
)
return
nGen
>
oRight
.
nGen
;
else
return
false
;
}
bool
operator
<=
(
const
Ref
&
oRight
)
const
{
if
(
*
this
==
oRight
)
return
true
;
return
nNum
<
oRight
.
nNum
;
return
(
*
this
<
oRight
)
;
}
bool
operator
>=
(
const
Ref
&
oRight
)
const
{
if
(
*
this
==
oRight
)
return
true
;
return
nNum
>
oRight
.
nNum
;
return
(
*
this
>
oRight
)
;
}
};
...
...
PdfReader/Src/RendererOutputDev.cpp
View file @
2470bfd3
...
...
@@ -345,7 +345,7 @@ namespace PdfReader
m_bTransparentGroupSoftMask
=
false
;
m_pTransparentGroupSoftMask
=
NULL
;
m_bDrawOnlyText
=
false
;
m_bDrawOnlyText
=
false
;
//m_oFontList.LoadFromFile( m_pGlobalParams->GetTempFolder() );
//// Тестовый пример
...
...
@@ -461,7 +461,7 @@ namespace PdfReader
if
(
c_nHtmlRendrerer2
==
m_lRendererType
)
m_bDrawOnlyText
=
((
NSHtmlRenderer
::
CASCHTMLRenderer3
*
)
m_pRenderer
)
->
GetOnlyTextMode
();
else
m_bDrawOnlyText
=
false
;
m_bDrawOnlyText
=
false
;
}
void
RendererOutputDev
::
EndPage
()
{
...
...
@@ -3003,7 +3003,7 @@ namespace PdfReader
//m_oFont.Size *= dTextScale;
double
dOldSize
=
10.0
;
m_pRenderer
->
get_FontSize
(
&
dOldSize
);
m_pRenderer
->
put_FontSize
(
dOldSize
*
dTextScale
);
m_pRenderer
->
put_FontSize
(
std
::
fabs
(
dOldSize
*
dTextScale
)
);
pNewTm
[
0
]
=
pTm
[
0
]
*
dITextScale
;
pNewTm
[
1
]
=
pTm
[
1
]
*
dITextScale
;
...
...
@@ -3032,22 +3032,24 @@ namespace PdfReader
if
(
true
)
{
double
dDet
=
sqrt
(
arrMatrix
[
0
]
*
arrMatrix
[
3
]
-
arrMatrix
[
1
]
*
arrMatrix
[
2
]);
arrMatrix
[
0
]
/=
dDet
;
arrMatrix
[
1
]
/=
dDet
;
arrMatrix
[
2
]
/=
dDet
;
arrMatrix
[
3
]
/=
dDet
;
double
dSize
=
1
;
m_pRenderer
->
get_FontSize
(
&
dSize
);
m_pRenderer
->
put_FontSize
(
dSize
*
dDet
);
double
dNorma
=
min
(
sqrt
(
arrMatrix
[
0
]
*
arrMatrix
[
0
]
+
arrMatrix
[
1
]
*
arrMatrix
[
1
]),
sqrt
(
arrMatrix
[
2
]
*
arrMatrix
[
2
]
+
arrMatrix
[
3
]
*
arrMatrix
[
3
]));
if
(
dNorma
>
0.001
)
{
arrMatrix
[
0
]
/=
dNorma
;
arrMatrix
[
1
]
/=
dNorma
;
arrMatrix
[
2
]
/=
dNorma
;
arrMatrix
[
3
]
/=
dNorma
;
double
dSize
=
1
;
m_pRenderer
->
get_FontSize
(
&
dSize
);
m_pRenderer
->
put_FontSize
(
dSize
*
dNorma
);
}
}
double
dShiftX
=
0
,
dShiftY
=
0
;
DoTransform
(
arrMatrix
,
&
dShiftX
,
&
dShiftY
,
true
);
// Здесь мы посылаем координаты текста в пунктах
double
dPageHeight
=
pGState
->
GetPageHeight
();
std
::
wstring
wsUnicodeText
;
...
...
PdfReader/Src/XRef.cpp
View file @
2470bfd3
...
...
@@ -241,6 +241,10 @@ namespace PdfReader
m_nPermissionFlags
=
DefaultPermissionFlags
;
m_bOwnerPassword
=
false
;
// Если нет ссылки на данный объект, а ссылка нам нужна как идентефикатор, то выбираем некотый уникальный номер
// (поскольку корректное версионное число состоит из 5 цифр, поэтому любое 6-циферное число будет безопасным решением)
m_unRefGenCounter
=
100000
;
// Читаем Trailer
m_pStream
=
pStream
;
m_nStart
=
m_pStream
->
GetStartPos
();
...
...
@@ -1066,4 +1070,4 @@ namespace PdfReader
}
return
unRes
;
}
}
\ No newline at end of file
}
PdfReader/Src/XRef.h
View file @
2470bfd3
...
...
@@ -142,6 +142,10 @@ namespace PdfReader
{
return
&
m_oTrailerDict
;
}
unsigned
int
GenerateUniqueRefGen
()
{
return
m_unRefGenCounter
++
;
}
private:
...
...
@@ -181,6 +185,8 @@ namespace PdfReader
int
m_nEncryptVersion
;
// Версия шифровки
CryptAlgorithm
m_eEncryptAlgorithm
;
// Алгоритм шифрования
unsigned
int
m_unRefGenCounter
;
// Специальный счетчик для генерации уникальных ссылок для встроенных объектов
NSCriticalSection
::
CRITICAL_SECTION
m_oCS
;
};
}
...
...
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