Kaydet (Commit) 4ed05949 authored tarafından Miklos Vajna's avatar Miklos Vajna

pdfium: replace FPDFTextObj_GetMatrix() patch with backport

Also remove unused FPDFTextObj_GetUnicode() and FPDFTextObj_GetText().

Change-Id: I4b1f88f878f2754ff790b67d286a9d5366acc641
Reviewed-on: https://gerrit.libreoffice.org/57292
Tested-by: Jenkins
Reviewed-by: 's avatarMiklos Vajna <vmiklos@collabora.co.uk>
üst bf9d2c6f
From 21ef03b50ef64d25a05d7ac047c0e382237c9b15 Mon Sep 17 00:00:00 2001
From: Miklos Vajna <vmiklos@collabora.co.uk>
Date: Tue, 19 Jun 2018 15:45:42 +0000
Subject: [PATCH] Add FPDFText_GetMatrix() API
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
This is similar to FPDFPath_GetMatrix(), but works on text, not path
objects.
Change-Id: If268362b7fa4398124b953e0e2225074523f5f65
Reviewed-on: https://pdfium-review.googlesource.com/35434
Reviewed-by: dsinclair <dsinclair@chromium.org>
Reviewed-by: Nicolás Peña Moreno <npm@chromium.org>
Commit-Queue: Nicolás Peña Moreno <npm@chromium.org>
---
fpdfsdk/fpdf_edit_embeddertest.cpp | 17 +++++++++++++++++
fpdfsdk/fpdf_edittext.cpp | 30 ++++++++++++++++++++++++++++++
public/fpdf_edit.h | 25 +++++++++++++++++++++++++
3 files changed, 72 insertions(+)
diff --git a/fpdfsdk/fpdf_edittext.cpp b/fpdfsdk/fpdf_edittext.cpp
index 2996a505e..c38873faa 100644
--- a/fpdfsdk/fpdf_edittext.cpp
+++ b/fpdfsdk/fpdf_edittext.cpp
@@ -398,6 +398,11 @@ CPDF_Font* LoadCompositeFont(CPDF_Document* pDoc,
return pDoc->LoadFont(fontDict);
}
+CPDF_TextObject* CPDFTextObjectFromFPDFPageObject(FPDF_PAGEOBJECT page_object) {
+ auto* obj = CPDFPageObjectFromFPDFPageObject(page_object);
+ return obj ? obj->AsText() : nullptr;
+}
+
} // namespace
FPDF_EXPORT FPDF_PAGEOBJECT FPDF_CALLCONV
@@ -475,6 +480,31 @@ FPDFText_SetFillColor(FPDF_PAGEOBJECT text_object,
return FPDFPageObj_SetFillColor(text_object, R, G, B, A);
}
+FPDF_EXPORT FPDF_BOOL FPDF_CALLCONV FPDFText_GetMatrix(FPDF_PAGEOBJECT text,
+ double* a,
+ double* b,
+ double* c,
+ double* d,
+ double* e,
+ double* f) {
+ if (!text || !a || !b || !c || !d || !e || !f)
+ return false;
+
+ CPDF_TextObject* pTextObj = CPDFTextObjectFromFPDFPageObject(text);
+ if (!pTextObj)
+ return false;
+
+ CFX_Matrix text_matrix = pTextObj->GetTextMatrix();
+ *a = text_matrix.a;
+ *b = text_matrix.b;
+ *c = text_matrix.c;
+ *d = text_matrix.d;
+ *e = text_matrix.e;
+ *f = text_matrix.f;
+
+ return true;
+}
+
FPDF_EXPORT void FPDF_CALLCONV FPDFFont_Close(FPDF_FONT font) {
CPDF_Font* pFont = CPDFFontFromFPDFFont(font);
if (!pFont)
diff --git a/public/fpdf_edit.h b/public/fpdf_edit.h
index c0766a33b..5a2eeb449 100644
--- a/public/fpdf_edit.h
+++ b/public/fpdf_edit.h
@@ -954,6 +954,31 @@ FPDFText_SetFillColor(FPDF_PAGEOBJECT text_object,
unsigned int B,
unsigned int A);
+// Experimental API.
+// Get the transform matrix of a text object.
+//
+// text - handle to a text.
+// a - matrix value.
+// b - matrix value.
+// c - matrix value.
+// d - matrix value.
+// e - matrix value.
+// f - matrix value.
+//
+// The matrix is composed as:
+// |a c e|
+// |b d f|
+// and used to scale, rotate, shear and translate the text.
+//
+// Returns TRUE on success.
+FPDF_EXPORT FPDF_BOOL FPDF_CALLCONV FPDFText_GetMatrix(FPDF_PAGEOBJECT text,
+ double* a,
+ double* b,
+ double* c,
+ double* d,
+ double* e,
+ double* f);
+
// Close a loaded PDF font.
//
// font - Handle to the loaded font.
--
2.16.4
From 99fa46eba9be11aa2bd9ef0e21a126656c932c44 Mon Sep 17 00:00:00 2001
From: Ashod Nakashian <ashod.nakashian@collabora.co.uk>
Date: Tue, 5 Jun 2018 11:27:43 +0200
Subject: [PATCH 01/14] svx: import PDF text using PDFium
---
pdfium/core/fpdfapi/page/cpdf_imageobject.cpp | 1 +
pdfium/core/fpdfapi/page/cpdf_pageobject.cpp | 2 ++
pdfium/core/fpdfapi/render/cpdf_renderstatus.cpp | 1 +
pdfium/fpdfsdk/fpdf_editpage.cpp | 18 ++++++++++++++++++
pdfium/fpdfsdk/fpdf_text.cpp | 22 ++++++++++++++++++++++
pdfium/public/fpdf_edit.h | 15 +++++++++++++++
pdfium/public/fpdf_text.h | 20 ++++++++++++++++++++
7 files changed, 79 insertions(+)
diff --git a/pdfium/core/fpdfapi/page/cpdf_imageobject.cpp b/pdfium/core/fpdfapi/page/cpdf_imageobject.cpp
index 3b5a740..58ef90a 100644
--- a/pdfium/core/fpdfapi/page/cpdf_imageobject.cpp
+++ b/pdfium/core/fpdfapi/page/cpdf_imageobject.cpp
@@ -43,6 +43,7 @@ const CPDF_ImageObject* CPDF_ImageObject::AsImage() const {
void CPDF_ImageObject::CalcBoundingBox() {
std::tie(m_Left, m_Right, m_Top, m_Bottom) =
m_Matrix.TransformRect(0.f, 1.f, 1.f, 0.f);
+ fprintf(stderr, "Image BB: %f, %f, %f, %f\n", m_Left, m_Right, m_Top, m_Bottom);
}
void CPDF_ImageObject::SetImage(const RetainPtr<CPDF_Image>& pImage) {
diff --git a/pdfium/core/fpdfapi/page/cpdf_pageobject.cpp b/pdfium/core/fpdfapi/page/cpdf_pageobject.cpp
index 8bb5bf5..9b5e2ce 100644
--- a/pdfium/core/fpdfapi/page/cpdf_pageobject.cpp
+++ b/pdfium/core/fpdfapi/page/cpdf_pageobject.cpp
@@ -98,5 +98,7 @@ FX_RECT CPDF_PageObject::GetBBox(const CFX_Matrix* pMatrix) const {
if (pMatrix)
rect = pMatrix->TransformRect(rect);
+ FX_RECT rc = rect.GetOuterRect();
+ fprintf(stderr, "PageObject BB: %f, %f, %f, %f\n", rc.left, rc.right, rc.top, rc.bottom);
return rect.GetOuterRect();
}
diff --git a/pdfium/core/fpdfapi/render/cpdf_renderstatus.cpp b/pdfium/core/fpdfapi/render/cpdf_renderstatus.cpp
index 565be85..87301d3 100644
--- a/pdfium/core/fpdfapi/render/cpdf_renderstatus.cpp
+++ b/pdfium/core/fpdfapi/render/cpdf_renderstatus.cpp
@@ -1767,6 +1767,7 @@ bool CPDF_RenderStatus::ProcessText(CPDF_TextObject* textobj,
return true;
float font_size = textobj->m_TextState.GetFontSize();
+ fprintf(stderr, "Font size: %f, matrix a: %f, b: %f, c: %f, d: %f, e: %f, f: %f\n", font_size, text_matrix.a, text_matrix.b, text_matrix.c, text_matrix.d, text_matrix.e, text_matrix.f);
if (bPattern) {
DrawTextPathWithPattern(textobj, pObj2Device, pFont, font_size,
&text_matrix, bFill, bStroke);
diff --git a/pdfium/fpdfsdk/fpdf_editpage.cpp b/pdfium/fpdfsdk/fpdf_editpage.cpp
index ec29891..912df63 100644
--- a/pdfium/fpdfsdk/fpdf_editpage.cpp
+++ b/pdfium/fpdfsdk/fpdf_editpage.cpp
@@ -18,6 +18,7 @@
#include "core/fpdfapi/page/cpdf_page.h"
#include "core/fpdfapi/page/cpdf_pageobject.h"
#include "core/fpdfapi/page/cpdf_pathobject.h"
+#include "core/fpdfapi/page/cpdf_textobject.h"
#include "core/fpdfapi/page/cpdf_shadingobject.h"
#include "core/fpdfapi/parser/cpdf_array.h"
#include "core/fpdfapi/parser/cpdf_document.h"
@@ -624,3 +625,20 @@ FPDFPageObj_SetLineCap(FPDF_PAGEOBJECT page_object, int line_cap) {
pPageObj->SetDirty(true);
return true;
}
+
+FPDF_EXPORT void FPDF_CALLCONV
+FPDFTextObj_GetMatrix(FPDF_PAGEOBJECT text_object,
+ double* a,
+ double* b,
+ double* c,
+ double* d) {
+ if (!text_object)
+ return;
+
+ CPDF_TextObject* pTxtObj = static_cast<CPDF_TextObject*>(text_object);
+ const CFX_Matrix& matrix = pTxtObj->GetTextMatrix();
+ *a = matrix.a;
+ *b = matrix.b;
+ *c = matrix.c;
+ *d = matrix.d;
+}
diff --git a/pdfium/fpdfsdk/fpdf_text.cpp b/pdfium/fpdfsdk/fpdf_text.cpp
index a1bbbb4..01b74c9 100644
--- a/pdfium/fpdfsdk/fpdf_text.cpp
+++ b/pdfium/fpdfsdk/fpdf_text.cpp
@@ -95,6 +95,28 @@ FPDF_EXPORT double FPDF_CALLCONV FPDFText_GetFontSize(FPDF_TEXTPAGE text_page,
return charinfo.m_FontSize;
}
+FPDF_EXPORT FPDF_BOOL FPDF_CALLCONV FPDFText_GetMatrix(FPDF_TEXTPAGE text_page,
+ int index,
+ double* a,
+ double* b,
+ double* c,
+ double* d) {
+ if (!text_page || index < 0)
+ return false;
+
+ CPDF_TextPage* textpage = CPDFTextPageFromFPDFTextPage(text_page);
+ if (index >= textpage->CountChars())
+ return false;
+
+ FPDF_CHAR_INFO charinfo;
+ textpage->GetCharInfo(index, &charinfo);
+ *a = charinfo.m_Matrix.a;
+ *b = charinfo.m_Matrix.b;
+ *c = charinfo.m_Matrix.c;
+ *d = charinfo.m_Matrix.d;
+ return true;
+}
+
FPDF_EXPORT FPDF_BOOL FPDF_CALLCONV FPDFText_GetCharBox(FPDF_TEXTPAGE text_page,
int index,
double* left,
diff --git a/pdfium/public/fpdf_edit.h b/pdfium/public/fpdf_edit.h
index c0766a3..3f45495 100644
--- a/pdfium/public/fpdf_edit.h
+++ b/pdfium/public/fpdf_edit.h
@@ -971,6 +971,21 @@ FPDFPageObj_CreateTextObj(FPDF_DOCUMENT document,
FPDF_FONT font,
float font_size);
+// Get the matrix of a particular text object.
+//
+// text_object - Handle of text object returned by FPDFPageObj_NewTextObj
+// or FPDFPageObj_NewTextObjEx.
+// a - Pointer to a double value receiving coefficient "a" of the matrix.
+// b - Pointer to a double value receiving coefficient "b" of the matrix.
+// c - Pointer to a double value receiving coefficient "c" of the matrix.
+// d - Pointer to a double value receiving coefficient "d" of the matrix.
+FPDF_EXPORT void FPDF_CALLCONV
+FPDFTextObj_GetMatrix(FPDF_PAGEOBJECT text_object,
+ double* a,
+ double* b,
+ double* c,
+ double* d);
+
#ifdef __cplusplus
} // extern "C"
#endif // __cplusplus
diff --git a/pdfium/public/fpdf_text.h b/pdfium/public/fpdf_text.h
index 3502337..6524cd3 100644
--- a/pdfium/public/fpdf_text.h
+++ b/pdfium/public/fpdf_text.h
@@ -342,6 +342,26 @@ FPDF_EXPORT int FPDF_CALLCONV FPDFText_GetSchCount(FPDF_SCHHANDLE handle);
//
FPDF_EXPORT void FPDF_CALLCONV FPDFText_FindClose(FPDF_SCHHANDLE handle);
+// Get the matrix of a particular character.
+//
+// text_page - Handle to a text page information structure.
+// Returned by FPDFText_LoadPage function.
+// index - Zero-based index of the character
+// a - Pointer to a double value receiving coefficient "a" of the matrix.
+// b - Pointer to a double value receiving coefficient "b" of the matrix.
+// c - Pointer to a double value receiving coefficient "c" of the matrix.
+// d - Pointer to a double value receiving coefficient "d" of the matrix.
+//
+// Return Value:
+// On success, return TRUE and fill in |a|, |b|, |c|, and |d|
+FPDF_EXPORT FPDF_BOOL FPDF_CALLCONV
+FPDFText_GetMatrix(FPDF_TEXTPAGE text_page,
+ int index,
+ double* a,
+ double* b,
+ double* c,
+ double* d);
+
// Function: FPDFLink_LoadWebLinks
// Prepare information about weblinks in a page.
// Parameters:
--
2.16.3
......@@ -20,8 +20,8 @@ index 912df63..3244943 100644
#include "core/fpdfapi/page/cpdf_form.h"
#include "core/fpdfapi/page/cpdf_formobject.h"
#include "core/fpdfapi/page/cpdf_imageobject.h"
@@ -626,6 +627,26 @@ FPDFPageObj_SetLineCap(FPDF_PAGEOBJECT page_object, int line_cap) {
return true;
@@ -436,6 +437,26 @@ FPDFPageObj_Transform(FPDF_PAGEOBJECT page_object,
pPageObj->Transform(matrix);
}
+FPDF_EXPORT int FPDF_CALLCONV
......@@ -45,80 +45,12 @@ index 912df63..3244943 100644
+}
+
FPDF_EXPORT void FPDF_CALLCONV
FPDFTextObj_GetMatrix(FPDF_PAGEOBJECT text_object,
double* a,
@@ -642,3 +663,66 @@ FPDFTextObj_GetMatrix(FPDF_PAGEOBJECT text_object,
*c = matrix.c;
*d = matrix.d;
}
+
+FPDF_EXPORT int FPDF_CALLCONV
+FPDFTextObj_GetUnicode(FPDF_PAGEOBJECT text_object, int index)
+{
+ if (!text_object || index < 0)
+ return 0;
+
+ CPDF_TextObject* pTxtObj = static_cast<CPDF_TextObject*>(text_object);
+ if (index > pTxtObj->CountChars())
+ return 0;
+
+ CPDF_TextObjectItem info;
+ pTxtObj->GetCharInfo(index, &info);
+ return info.m_CharCode;
+}
+
+FPDF_EXPORT int FPDF_CALLCONV FPDFTextObj_GetText(FPDF_PAGEOBJECT text_object,
+ int char_start,
+ int char_count,
+ unsigned short* result) {
+ if (!text_object || char_start < 0 || char_count < 0 || !result)
+ return 0;
+
+ CPDF_TextObject* pTxtObj = static_cast<CPDF_TextObject*>(text_object);
+ int char_available = pTxtObj->CountChars() - char_start;
+ if (char_available <= 0)
+ return 0;
+
+ char_count = std::min(char_count, char_available);
+ if (char_count == 0) {
+ // Writing out "", which has a character count of 1 due to the NUL.
+ *result = '\0';
+ return 1;
+ }
+
+ CPDF_Font* pFont = pTxtObj->GetFont();
+ WideString str;
+ for (uint32_t charcode : pTxtObj->GetCharCodes()) {
+ if (charcode != CPDF_Font::kInvalidCharCode)
+ str += pFont->UnicodeFromCharCode(charcode);
+ }
+
+// CFX_WideTextBuf m_TextBuf;
+// WideString str = textpage->GetPageText(char_start, char_count);
+// return WideString(m_TextBuf.AsStringView().Mid(
+// static_cast<size_t>(text_start), static_cast<size_t>(text_count)));
+
+// if (str.GetLength() > static_cast<size_t>(char_count))
+// str = str.Left(static_cast<size_t>(char_count));
+
+ // Reincode in UTF-16.
+// WideString str = text.UTF8Decode();
+
+ // UFT16LE_Encode doesn't handle surrogate pairs properly, so it is expected
+ // the number of items to stay the same.
+ ByteString byte_str = str.UTF16LE_Encode();
+ size_t byte_str_len = byte_str.GetLength();
+ int ret_count = byte_str_len / sizeof(unsigned short);
+
+ ASSERT(ret_count <= char_count + 1); // +1 to account for the NUL terminator.
+ memcpy(result, byte_str.GetBuffer(byte_str_len), byte_str_len);
+ return ret_count;
+}
FPDFPageObj_SetBlendMode(FPDF_PAGEOBJECT page_object,
FPDF_BYTESTRING blend_mode) {
diff --git a/pdfium/public/fpdf_edit.h b/pdfium/public/fpdf_edit.h
index 3f45495..602849f 100644
--- a/pdfium/public/fpdf_edit.h
+++ b/pdfium/public/fpdf_edit.h
@@ -971,6 +971,26 @@ FPDFPageObj_CreateTextObj(FPDF_DOCUMENT document,
@@ -996,6 +996,26 @@ FPDFPageObj_CreateTextObj(FPDF_DOCUMENT document,
FPDF_FONT font,
float font_size);
......@@ -141,29 +73,6 @@ index 3f45495..602849f 100644
+// The value of the font size
+FPDF_EXPORT int FPDF_CALLCONV
+FPDFTextObj_GetFontSize(FPDF_PAGEOBJECT text_object);
+
// Get the matrix of a particular text object.
//
// text_object - Handle of text object returned by FPDFPageObj_NewTextObj
@@ -986,6 +1006,22 @@ FPDFTextObj_GetMatrix(FPDF_PAGEOBJECT text_object,
double* c,
double* d);
+// Get the unicode of a special character in a text object.
+//
+// text_object - Handle of text object returned by FPDFPageObj_NewTextObj
+// or FPDFPageObj_NewTextObjEx.
+// index - The index of the character to get the unicode.
+// Return Value:
+// The unicode value.
+FPDF_EXPORT int FPDF_CALLCONV
+FPDFTextObj_GetUnicode(FPDF_PAGEOBJECT text_object, int index);
+
+FPDF_EXPORT int FPDF_CALLCONV
+FPDFTextObj_GetText(FPDF_PAGEOBJECT text_object,
+ int char_start,
+ int char_count,
+ unsigned short* result);
+
#ifdef __cplusplus
} // extern "C"
......
......@@ -29,7 +29,7 @@ diff --git a/pdfium/fpdfsdk/fpdf_editpage.cpp b/pdfium/fpdfsdk/fpdf_editpage.cpp
index 3244943..f8e2418 100644
--- a/pdfium/fpdfsdk/fpdf_editpage.cpp
+++ b/pdfium/fpdfsdk/fpdf_editpage.cpp
@@ -633,7 +633,7 @@ FPDFTextObj_CountChars(FPDF_PAGEOBJECT text_object)
@@ -443,7 +443,7 @@ FPDFTextObj_CountChars(FPDF_PAGEOBJECT text_object)
if (!text_object)
return 0;
......@@ -38,7 +38,7 @@ index 3244943..f8e2418 100644
return pTxtObj->CountChars();
}
@@ -643,7 +643,7 @@ FPDFTextObj_GetFontSize(FPDF_PAGEOBJECT text_object)
@@ -453,7 +453,7 @@ FPDFTextObj_GetFontSize(FPDF_PAGEOBJECT text_object)
if (!text_object)
return 0;
......@@ -47,36 +47,9 @@ index 3244943..f8e2418 100644
return pTxtObj->GetFontSize();
}
@@ -656,7 +656,7 @@ FPDFTextObj_GetMatrix(FPDF_PAGEOBJECT text_object,
if (!text_object)
return;
- CPDF_TextObject* pTxtObj = static_cast<CPDF_TextObject*>(text_object);
+ CPDF_TextObject* pTxtObj = CPDFTextObjectFromFPDFPageObject(text_object);
const CFX_Matrix& matrix = pTxtObj->GetTextMatrix();
*a = matrix.a;
*b = matrix.b;
@@ -670,7 +670,7 @@ FPDFTextObj_GetUnicode(FPDF_PAGEOBJECT text_object, int index)
if (!text_object || index < 0)
return 0;
- CPDF_TextObject* pTxtObj = static_cast<CPDF_TextObject*>(text_object);
+ CPDF_TextObject* pTxtObj = CPDFTextObjectFromFPDFPageObject(text_object);
if (index > pTxtObj->CountChars())
return 0;
@@ -686,7 +686,7 @@ FPDF_EXPORT int FPDF_CALLCONV FPDFTextObj_GetText(FPDF_PAGEOBJECT text_object,
if (!text_object || char_start < 0 || char_count < 0 || !result)
return 0;
- CPDF_TextObject* pTxtObj = static_cast<CPDF_TextObject*>(text_object);
+ CPDF_TextObject* pTxtObj = CPDFTextObjectFromFPDFPageObject(text_object);
int char_available = pTxtObj->CountChars() - char_start;
if (char_available <= 0)
return 0;
@@ -726,3 +726,23 @@ FPDF_EXPORT int FPDF_CALLCONV FPDFTextObj_GetText(FPDF_PAGEOBJECT text_object,
memcpy(result, byte_str.GetBuffer(byte_str_len), byte_str_len);
return ret_count;
@@ -645,3 +645,23 @@ FPDFPageObj_SetLineCap(FPDF_PAGEOBJECT page_object, int line_cap) {
pPageObj->SetDirty(true);
return true;
}
+
+FPDF_EXPORT FPDF_BOOL FPDF_CALLCONV
......@@ -102,9 +75,9 @@ diff --git a/pdfium/public/fpdf_edit.h b/pdfium/public/fpdf_edit.h
index 602849f..fa9902e 100644
--- a/pdfium/public/fpdf_edit.h
+++ b/pdfium/public/fpdf_edit.h
@@ -1022,6 +1022,22 @@ FPDFTextObj_GetText(FPDF_PAGEOBJECT text_object,
int char_count,
unsigned short* result);
@@ -1016,6 +1016,22 @@ FPDFTextObj_CountChars(FPDF_PAGEOBJECT text_object);
FPDF_EXPORT int FPDF_CALLCONV
FPDFTextObj_GetFontSize(FPDF_PAGEOBJECT text_object);
+// Get the stroke RGBA of a text. Range of values: 0 - 255.
+//
......@@ -125,6 +98,22 @@ index 602849f..fa9902e 100644
#ifdef __cplusplus
} // extern "C"
#endif // __cplusplus
diff --git a/pdfium/fpdfsdk/fpdf_edittext.cpp b/pdfium/fpdfsdk/fpdf_edittext.cpp
index c38873faa..aa3287ef4 100644
--- a/pdfium/fpdfsdk/fpdf_edittext.cpp
+++ b/pdfium/fpdfsdk/fpdf_edittext.cpp
@@ -398,11 +398,6 @@ CPDF_Font* LoadCompositeFont(CPDF_Document* pDoc,
return pDoc->LoadFont(fontDict);
}
-CPDF_TextObject* CPDFTextObjectFromFPDFPageObject(FPDF_PAGEOBJECT page_object) {
- auto* obj = CPDFPageObjectFromFPDFPageObject(page_object);
- return obj ? obj->AsText() : nullptr;
-}
-
} // namespace
FPDF_EXPORT FPDF_PAGEOBJECT FPDF_CALLCONV
--
2.16.3
From 87f3da183a87f3ff5df854971a0c3bc2134ecd61 Mon Sep 17 00:00:00 2001
From: Ashod Nakashian <ashod.nakashian@collabora.co.uk>
Date: Tue, 5 Jun 2018 11:31:35 +0200
Subject: [PATCH 07/14] svx: improved text importing from PDF
---
pdfium/fpdfsdk/fpdf_editpage.cpp | 9 +++++++--
pdfium/public/fpdf_edit.h | 6 +++++-
2 files changed, 12 insertions(+), 3 deletions(-)
diff --git a/pdfium/fpdfsdk/fpdf_editpage.cpp b/pdfium/fpdfsdk/fpdf_editpage.cpp
index f8e2418..2249e8e 100644
--- a/pdfium/fpdfsdk/fpdf_editpage.cpp
+++ b/pdfium/fpdfsdk/fpdf_editpage.cpp
@@ -652,8 +652,11 @@ FPDFTextObj_GetMatrix(FPDF_PAGEOBJECT text_object,
double* a,
double* b,
double* c,
- double* d) {
- if (!text_object)
+ double* d,
+ double* e,
+ double* f)
+{
+ if (!text_object || !a || !b || !c || !d || !e || !f)
return;
CPDF_TextObject* pTxtObj = CPDFTextObjectFromFPDFPageObject(text_object);
@@ -662,6 +665,8 @@ FPDFTextObj_GetMatrix(FPDF_PAGEOBJECT text_object,
*b = matrix.b;
*c = matrix.c;
*d = matrix.d;
+ *e = matrix.e;
+ *f = matrix.f;
}
FPDF_EXPORT int FPDF_CALLCONV
diff --git a/pdfium/public/fpdf_edit.h b/pdfium/public/fpdf_edit.h
index 89ec8cf..fc906f4 100644
--- a/pdfium/public/fpdf_edit.h
+++ b/pdfium/public/fpdf_edit.h
@@ -1038,12 +1038,16 @@ FPDFTextObj_GetFontSize(FPDF_PAGEOBJECT text_object);
// b - Pointer to a double value receiving coefficient "b" of the matrix.
// c - Pointer to a double value receiving coefficient "c" of the matrix.
// d - Pointer to a double value receiving coefficient "d" of the matrix.
+// e - Pointer to a double value receiving coefficient "e" of the matrix.
+// f - Pointer to a double value receiving coefficient "f" of the matrix.
FPDF_EXPORT void FPDF_CALLCONV
FPDFTextObj_GetMatrix(FPDF_PAGEOBJECT text_object,
double* a,
double* b,
double* c,
- double* d);
+ double* d,
+ double* e,
+ double* f);
// Get the unicode of a special character in a text object.
//
--
2.16.3
From 92e382401059237c84c13114d4612ceaa5b0c214 Mon Sep 17 00:00:00 2001
From: Ashod Nakashian <ashod.nakashian@collabora.co.uk>
Date: Tue, 5 Jun 2018 11:32:12 +0200
Subject: [PATCH 08/14] svx: correct the positioning of PDF Paths and the
stroke width
---
pdfium/core/fpdfapi/page/cpdf_page.cpp | 3 +++
pdfium/core/fpdfapi/render/cpdf_renderstatus.cpp | 2 +-
pdfium/core/fxge/cfx_pathdata.cpp | 2 ++
pdfium/fpdfsdk/fpdf_editpath.cpp | 16 ++++++++--------
4 files changed, 14 insertions(+), 9 deletions(-)
diff --git a/pdfium/core/fpdfapi/page/cpdf_page.cpp b/pdfium/core/fpdfapi/page/cpdf_page.cpp
index eee6673..00657d6 100644
--- a/pdfium/core/fpdfapi/page/cpdf_page.cpp
+++ b/pdfium/core/fpdfapi/page/cpdf_page.cpp
@@ -37,12 +37,14 @@ CPDF_Page::CPDF_Page(CPDF_Document* pDocument,
CFX_FloatRect mediabox = GetBox("MediaBox");
if (mediabox.IsEmpty())
mediabox = CFX_FloatRect(0, 0, 612, 792);
+ fprintf(stderr, "Page mediabox: %f, %f, %f, %f\n", mediabox.left, mediabox.right, mediabox.top, mediabox.bottom);
m_BBox = GetBox("CropBox");
if (m_BBox.IsEmpty())
m_BBox = mediabox;
else
m_BBox.Intersect(mediabox);
+ fprintf(stderr, "Page cropbox: %f, %f, %f, %f\n", m_BBox.left, m_BBox.right, m_BBox.top, m_BBox.bottom);
m_PageSize.width = m_BBox.Width();
m_PageSize.height = m_BBox.Height();
@@ -50,6 +52,7 @@ CPDF_Page::CPDF_Page(CPDF_Document* pDocument,
int rotate = GetPageRotation();
if (rotate % 2)
std::swap(m_PageSize.width, m_PageSize.height);
+ fprintf(stderr, "Page rotate: %d, Page Width: %f, Page Height: %f\n", rotate, m_PageSize.width, m_PageSize.height);
switch (rotate) {
case 0:
diff --git a/pdfium/core/fpdfapi/render/cpdf_renderstatus.cpp b/pdfium/core/fpdfapi/render/cpdf_renderstatus.cpp
index 87301d3..bf82d55 100644
--- a/pdfium/core/fpdfapi/render/cpdf_renderstatus.cpp
+++ b/pdfium/core/fpdfapi/render/cpdf_renderstatus.cpp
@@ -1767,7 +1767,7 @@ bool CPDF_RenderStatus::ProcessText(CPDF_TextObject* textobj,
return true;
float font_size = textobj->m_TextState.GetFontSize();
- fprintf(stderr, "Font size: %f, matrix a: %f, b: %f, c: %f, d: %f, e: %f, f: %f\n", font_size, text_matrix.a, text_matrix.b, text_matrix.c, text_matrix.d, text_matrix.e, text_matrix.f);
+// fprintf(stderr, "Font size: %f, matrix a: %f, b: %f, c: %f, d: %f, e: %f, f: %f\n", font_size, text_matrix.a, text_matrix.b, text_matrix.c, text_matrix.d, text_matrix.e, text_matrix.f);
if (bPattern) {
DrawTextPathWithPattern(textobj, pObj2Device, pFont, font_size,
&text_matrix, bFill, bStroke);
diff --git a/pdfium/core/fxge/cfx_pathdata.cpp b/pdfium/core/fxge/cfx_pathdata.cpp
index ac1ff42..a483edf 100644
--- a/pdfium/core/fxge/cfx_pathdata.cpp
+++ b/pdfium/core/fxge/cfx_pathdata.cpp
@@ -199,6 +199,7 @@ void CFX_PathData::Append(const CFX_PathData* pSrc, const CFX_Matrix* pMatrix) {
void CFX_PathData::AppendPoint(const CFX_PointF& point,
FXPT_TYPE type,
bool closeFigure) {
+ fprintf(stderr, "Append: %f, %f (%s)\n", point.x, point.y, closeFigure ? "CLOSE" : "OPEN");
m_Points.push_back(FX_PATHPOINT(point, type, closeFigure));
}
@@ -294,6 +295,7 @@ CFX_FloatRect CFX_PathData::GetBoundingBox(float line_width,
void CFX_PathData::Transform(const CFX_Matrix* pMatrix) {
if (!pMatrix)
return;
+ fprintf(stderr, "XForm: %f, %f %f, %f, %f, %f\n", pMatrix->a, pMatrix->b, pMatrix->c, pMatrix->d, pMatrix->e, pMatrix->f);
for (auto& point : m_Points)
point.m_Point = pMatrix->Transform(point.m_Point);
}
--
2.16.3
......@@ -10,41 +10,6 @@ Subject: [PATCH 09/14] svx: support color text for imported PDFs
pdfium/public/fpdf_edit.h | 10 +++---
4 files changed, 46 insertions(+), 17 deletions(-)
diff --git a/pdfium/core/fpdfapi/page/cpdf_imageobject.cpp b/pdfium/core/fpdfapi/page/cpdf_imageobject.cpp
index 58ef90a..416d82d 100644
--- a/pdfium/core/fpdfapi/page/cpdf_imageobject.cpp
+++ b/pdfium/core/fpdfapi/page/cpdf_imageobject.cpp
@@ -43,7 +43,7 @@ const CPDF_ImageObject* CPDF_ImageObject::AsImage() const {
void CPDF_ImageObject::CalcBoundingBox() {
std::tie(m_Left, m_Right, m_Top, m_Bottom) =
m_Matrix.TransformRect(0.f, 1.f, 1.f, 0.f);
- fprintf(stderr, "Image BB: %f, %f, %f, %f\n", m_Left, m_Right, m_Top, m_Bottom);
+ // fprintf(stderr, "Image BB: %f, %f, %f, %f\n", m_Left, m_Right, m_Top, m_Bottom);
}
void CPDF_ImageObject::SetImage(const RetainPtr<CPDF_Image>& pImage) {
diff --git a/pdfium/core/fxge/cfx_pathdata.cpp b/pdfium/core/fxge/cfx_pathdata.cpp
index a483edf..13e2cdb 100644
--- a/pdfium/core/fxge/cfx_pathdata.cpp
+++ b/pdfium/core/fxge/cfx_pathdata.cpp
@@ -199,7 +199,7 @@ void CFX_PathData::Append(const CFX_PathData* pSrc, const CFX_Matrix* pMatrix) {
void CFX_PathData::AppendPoint(const CFX_PointF& point,
FXPT_TYPE type,
bool closeFigure) {
- fprintf(stderr, "Append: %f, %f (%s)\n", point.x, point.y, closeFigure ? "CLOSE" : "OPEN");
+// fprintf(stderr, "Append: %f, %f (%s)\n", point.x, point.y, closeFigure ? "CLOSE" : "OPEN");
m_Points.push_back(FX_PATHPOINT(point, type, closeFigure));
}
@@ -295,7 +295,7 @@ CFX_FloatRect CFX_PathData::GetBoundingBox(float line_width,
void CFX_PathData::Transform(const CFX_Matrix* pMatrix) {
if (!pMatrix)
return;
- fprintf(stderr, "XForm: %f, %f %f, %f, %f, %f\n", pMatrix->a, pMatrix->b, pMatrix->c, pMatrix->d, pMatrix->e, pMatrix->f);
+// fprintf(stderr, "XForm: %f, %f %f, %f, %f, %f\n", pMatrix->a, pMatrix->b, pMatrix->c, pMatrix->d, pMatrix->e, pMatrix->f);
for (auto& point : m_Points)
point.m_Point = pMatrix->Transform(point.m_Point);
}
diff --git a/pdfium/fpdfsdk/fpdf_editpage.cpp b/pdfium/fpdfsdk/fpdf_editpage.cpp
index 2249e8e..9c353a4 100644
--- a/pdfium/fpdfsdk/fpdf_editpage.cpp
......
......@@ -29,7 +29,7 @@ diff --git a/pdfium/fpdfsdk/fpdf_editpage.cpp b/pdfium/fpdfsdk/fpdf_editpage.cpp
index 9c353a4..bf68250 100644
--- a/pdfium/fpdfsdk/fpdf_editpage.cpp
+++ b/pdfium/fpdfsdk/fpdf_editpage.cpp
@@ -780,3 +780,33 @@ FPDFTextObj_GetColor(FPDF_PAGEOBJECT text_object,
@@ -704,3 +704,31 @@ FPDFTextObj_GetColor(FPDF_PAGEOBJECT text_object,
return true;
}
......@@ -54,8 +54,6 @@ index 9c353a4..bf68250 100644
+ CPDF_FormObject* pFrmObj = CPDFFormObjectFromFPDFPageObject(form_object);
+ if (pFrmObj)
+ {
+ const CFX_Matrix& matrix = pFrmObj->form_matrix();
+ fprintf(stderr, "Form matrix a: %f, b: %f, c: %f, d: %f, e: %f, f: %f\n", matrix.a, matrix.b, matrix.c, matrix.d, matrix.e, matrix.f);
+ const CPDF_PageObjectList* pObjectList = pFrmObj->form()->GetPageObjectList();
+ if (pObjectList)
+ return pObjectList->GetPageObjectByIndex(index);
......
......@@ -64,7 +64,7 @@ diff --git a/pdfium/fpdfsdk/fpdf_editpage.cpp b/pdfium/fpdfsdk/fpdf_editpage.cpp
index f4a1688..f34d3b5 100644
--- a/pdfium/fpdfsdk/fpdf_editpage.cpp
+++ b/pdfium/fpdfsdk/fpdf_editpage.cpp
@@ -27,6 +27,7 @@
@@ -26,6 +26,7 @@
#include "core/fpdfapi/parser/cpdf_string.h"
#include "core/fpdfdoc/cpdf_annot.h"
#include "core/fpdfdoc/cpdf_annotlist.h"
......@@ -72,8 +72,8 @@ index f4a1688..f34d3b5 100644
#include "fpdfsdk/cpdfsdk_helpers.h"
#include "public/fpdf_formfill.h"
#include "third_party/base/logging.h"
@@ -732,6 +733,46 @@ FPDF_EXPORT int FPDF_CALLCONV FPDFTextObj_GetText(FPDF_PAGEOBJECT text_object,
return ret_count;
@@ -656,6 +657,46 @@ FPDFPageObj_SetLineCap(FPDF_PAGEOBJECT page_object, int line_cap) {
return true;
}
+FPDF_EXPORT int FPDF_CALLCONV
......@@ -123,9 +123,9 @@ diff --git a/pdfium/public/fpdf_edit.h b/pdfium/public/fpdf_edit.h
index f249e64..e14b2a5 100644
--- a/pdfium/public/fpdf_edit.h
+++ b/pdfium/public/fpdf_edit.h
@@ -1065,6 +1065,19 @@ FPDFTextObj_GetText(FPDF_PAGEOBJECT text_object,
int char_count,
unsigned short* result);
@@ -1088,6 +1088,19 @@ FPDFTextObj_CountChars(FPDF_PAGEOBJECT text_object);
FPDF_EXPORT int FPDF_CALLCONV
FPDFTextObj_GetFontSize(FPDF_PAGEOBJECT text_object);
+// Get the processed text of a text object.
+//
......
From 2f56db06360e547f995c6b20050974d5f4c6f7c6 Mon Sep 17 00:00:00 2001
From: Ashod Nakashian <ashod.nakashian@collabora.co.uk>
Date: Tue, 5 Jun 2018 11:36:05 +0200
Subject: [PATCH 13/14] svx: cleanup pdfium importer
---
pdfium/core/fpdfapi/page/cpdf_imageobject.cpp | 1 -
pdfium/core/fpdfapi/page/cpdf_page.cpp | 3 ---
pdfium/core/fpdfapi/page/cpdf_pageobject.cpp | 2 --
pdfium/core/fpdfapi/render/cpdf_renderstatus.cpp | 1 -
pdfium/core/fxge/cfx_pathdata.cpp | 2 --
pdfium/fpdfsdk/fpdf_editpage.cpp | 12 ------------
6 files changed, 21 deletions(-)
diff --git a/pdfium/core/fpdfapi/page/cpdf_imageobject.cpp b/pdfium/core/fpdfapi/page/cpdf_imageobject.cpp
index 416d82d..3b5a740 100644
--- a/pdfium/core/fpdfapi/page/cpdf_imageobject.cpp
+++ b/pdfium/core/fpdfapi/page/cpdf_imageobject.cpp
@@ -43,7 +43,6 @@ const CPDF_ImageObject* CPDF_ImageObject::AsImage() const {
void CPDF_ImageObject::CalcBoundingBox() {
std::tie(m_Left, m_Right, m_Top, m_Bottom) =
m_Matrix.TransformRect(0.f, 1.f, 1.f, 0.f);
- // fprintf(stderr, "Image BB: %f, %f, %f, %f\n", m_Left, m_Right, m_Top, m_Bottom);
}
void CPDF_ImageObject::SetImage(const RetainPtr<CPDF_Image>& pImage) {
diff --git a/pdfium/core/fpdfapi/page/cpdf_page.cpp b/pdfium/core/fpdfapi/page/cpdf_page.cpp
index 00657d6..eee6673 100644
--- a/pdfium/core/fpdfapi/page/cpdf_page.cpp
+++ b/pdfium/core/fpdfapi/page/cpdf_page.cpp
@@ -37,14 +37,12 @@ CPDF_Page::CPDF_Page(CPDF_Document* pDocument,
CFX_FloatRect mediabox = GetBox("MediaBox");
if (mediabox.IsEmpty())
mediabox = CFX_FloatRect(0, 0, 612, 792);
- fprintf(stderr, "Page mediabox: %f, %f, %f, %f\n", mediabox.left, mediabox.right, mediabox.top, mediabox.bottom);
m_BBox = GetBox("CropBox");
if (m_BBox.IsEmpty())
m_BBox = mediabox;
else
m_BBox.Intersect(mediabox);
- fprintf(stderr, "Page cropbox: %f, %f, %f, %f\n", m_BBox.left, m_BBox.right, m_BBox.top, m_BBox.bottom);
m_PageSize.width = m_BBox.Width();
m_PageSize.height = m_BBox.Height();
@@ -52,7 +50,6 @@ CPDF_Page::CPDF_Page(CPDF_Document* pDocument,
int rotate = GetPageRotation();
if (rotate % 2)
std::swap(m_PageSize.width, m_PageSize.height);
- fprintf(stderr, "Page rotate: %d, Page Width: %f, Page Height: %f\n", rotate, m_PageSize.width, m_PageSize.height);
switch (rotate) {
case 0:
diff --git a/pdfium/core/fpdfapi/page/cpdf_pageobject.cpp b/pdfium/core/fpdfapi/page/cpdf_pageobject.cpp
index 9b5e2ce..8bb5bf5 100644
--- a/pdfium/core/fpdfapi/page/cpdf_pageobject.cpp
+++ b/pdfium/core/fpdfapi/page/cpdf_pageobject.cpp
@@ -98,7 +98,5 @@ FX_RECT CPDF_PageObject::GetBBox(const CFX_Matrix* pMatrix) const {
if (pMatrix)
rect = pMatrix->TransformRect(rect);
- FX_RECT rc = rect.GetOuterRect();
- fprintf(stderr, "PageObject BB: %f, %f, %f, %f\n", rc.left, rc.right, rc.top, rc.bottom);
return rect.GetOuterRect();
}
diff --git a/pdfium/core/fpdfapi/render/cpdf_renderstatus.cpp b/pdfium/core/fpdfapi/render/cpdf_renderstatus.cpp
index bf82d55..565be85 100644
--- a/pdfium/core/fpdfapi/render/cpdf_renderstatus.cpp
+++ b/pdfium/core/fpdfapi/render/cpdf_renderstatus.cpp
@@ -1767,7 +1767,6 @@ bool CPDF_RenderStatus::ProcessText(CPDF_TextObject* textobj,
return true;
float font_size = textobj->m_TextState.GetFontSize();
-// fprintf(stderr, "Font size: %f, matrix a: %f, b: %f, c: %f, d: %f, e: %f, f: %f\n", font_size, text_matrix.a, text_matrix.b, text_matrix.c, text_matrix.d, text_matrix.e, text_matrix.f);
if (bPattern) {
DrawTextPathWithPattern(textobj, pObj2Device, pFont, font_size,
&text_matrix, bFill, bStroke);
diff --git a/pdfium/core/fxge/cfx_pathdata.cpp b/pdfium/core/fxge/cfx_pathdata.cpp
index 13e2cdb..ac1ff42 100644
--- a/pdfium/core/fxge/cfx_pathdata.cpp
+++ b/pdfium/core/fxge/cfx_pathdata.cpp
@@ -199,7 +199,6 @@ void CFX_PathData::Append(const CFX_PathData* pSrc, const CFX_Matrix* pMatrix) {
void CFX_PathData::AppendPoint(const CFX_PointF& point,
FXPT_TYPE type,
bool closeFigure) {
-// fprintf(stderr, "Append: %f, %f (%s)\n", point.x, point.y, closeFigure ? "CLOSE" : "OPEN");
m_Points.push_back(FX_PATHPOINT(point, type, closeFigure));
}
@@ -295,7 +294,6 @@ CFX_FloatRect CFX_PathData::GetBoundingBox(float line_width,
void CFX_PathData::Transform(const CFX_Matrix* pMatrix) {
if (!pMatrix)
return;
-// fprintf(stderr, "XForm: %f, %f %f, %f, %f, %f\n", pMatrix->a, pMatrix->b, pMatrix->c, pMatrix->d, pMatrix->e, pMatrix->f);
for (auto& point : m_Points)
point.m_Point = pMatrix->Transform(point.m_Point);
}
diff --git a/pdfium/fpdfsdk/fpdf_editpage.cpp b/pdfium/fpdfsdk/fpdf_editpage.cpp
index f34d3b5..29c8b01 100644
--- a/pdfium/fpdfsdk/fpdf_editpage.cpp
+++ b/pdfium/fpdfsdk/fpdf_editpage.cpp
@@ -711,17 +711,6 @@ FPDF_EXPORT int FPDF_CALLCONV FPDFTextObj_GetText(FPDF_PAGEOBJECT text_object,
str += pFont->UnicodeFromCharCode(charcode);
}
-// CFX_WideTextBuf m_TextBuf;
-// WideString str = textpage->GetPageText(char_start, char_count);
-// return WideString(m_TextBuf.AsStringView().Mid(
-// static_cast<size_t>(text_start), static_cast<size_t>(text_count)));
-
-// if (str.GetLength() > static_cast<size_t>(char_count))
-// str = str.Left(static_cast<size_t>(char_count));
-
- // Reincode in UTF-16.
-// WideString str = text.UTF8Decode();
-
// UFT16LE_Encode doesn't handle surrogate pairs properly, so it is expected
// the number of items to stay the same.
ByteString byte_str = str.UTF16LE_Encode();
@@ -843,7 +832,6 @@ FPDFFormObj_GetSubObject(FPDF_PAGEOBJECT form_object, int index)
if (pFrmObj)
{
const CFX_Matrix& matrix = pFrmObj->form_matrix();
- fprintf(stderr, "Form matrix a: %f, b: %f, c: %f, d: %f, e: %f, f: %f\n", matrix.a, matrix.b, matrix.c, matrix.d, matrix.e, matrix.f);
const CPDF_PageObjectList* pObjectList = pFrmObj->form()->GetPageObjectList();
if (pObjectList)
return pObjectList->GetPageObjectByIndex(index);
--
2.16.3
......@@ -40,16 +40,7 @@ diff --git a/pdfium/fpdfsdk/fpdf_editpage.cpp b/pdfium/fpdfsdk/fpdf_editpage.cpp
index 29c8b01..a52e1a9 100644
--- a/pdfium/fpdfsdk/fpdf_editpage.cpp
+++ b/pdfium/fpdfsdk/fpdf_editpage.cpp
@@ -718,7 +718,7 @@ FPDF_EXPORT int FPDF_CALLCONV FPDFTextObj_GetText(FPDF_PAGEOBJECT text_object,
int ret_count = byte_str_len / sizeof(unsigned short);
ASSERT(ret_count <= char_count + 1); // +1 to account for the NUL terminator.
- memcpy(result, byte_str.GetBuffer(byte_str_len), byte_str_len);
+ memcpy(result, byte_str.GetBuffer(byte_str_len).data(), byte_str_len);
return ret_count;
}
@@ -758,7 +758,7 @@ FPDFTextObj_GetTextProcessed(FPDF_PAGEOBJECT text_object,
@@ -693,7 +693,7 @@ FPDFTextObj_GetTextProcessed(FPDF_PAGEOBJECT text_object,
int ret_count = byte_str_len / kBytesPerCharacter;
ASSERT(ret_count <= char_count + 1); // +1 to account for the NUL terminator.
......@@ -58,7 +49,7 @@ index 29c8b01..a52e1a9 100644
return ret_count;
}
@@ -801,10 +801,15 @@ FPDFTextObj_GetColor(FPDF_PAGEOBJECT text_object,
@@ -736,10 +736,15 @@ FPDFTextObj_GetColor(FPDF_PAGEOBJECT text_object,
return false;
}
......@@ -78,8 +69,8 @@ index 29c8b01..a52e1a9 100644
*A = static_cast<unsigned int>(
(pTxtObj->m_GeneralState.GetStrokeAlpha() * 255.f) + 0.5f);
@@ -834,7 +839,7 @@ FPDFFormObj_GetSubObject(FPDF_PAGEOBJECT form_object, int index)
const CFX_Matrix& matrix = pFrmObj->form_matrix();
@@ -768,7 +773,7 @@ FPDFFormObj_GetSubObject(FPDF_PAGEOBJECT form_object, int index)
{
const CPDF_PageObjectList* pObjectList = pFrmObj->form()->GetPageObjectList();
if (pObjectList)
- return pObjectList->GetPageObjectByIndex(index);
......
......@@ -12,7 +12,15 @@ diff --git a/pdfium/fpdfsdk/fpdf_editpage.cpp b/pdfium/fpdfsdk/fpdf_editpage.cpp
index a52e1a9..9daffc0 100644
--- a/pdfium/fpdfsdk/fpdf_editpage.cpp
+++ b/pdfium/fpdfsdk/fpdf_editpage.cpp
@@ -648,6 +648,29 @@ FPDFTextObj_GetFontSize(FPDF_PAGEOBJECT text_object)
@@ -20,6 +20,7 @@
#include "core/fpdfapi/page/cpdf_pageobject.h"
#include "core/fpdfapi/page/cpdf_pathobject.h"
#include "core/fpdfapi/page/cpdf_shadingobject.h"
+#include "core/fpdfapi/page/cpdf_textobject.h"
#include "core/fpdfapi/parser/cpdf_array.h"
#include "core/fpdfapi/parser/cpdf_document.h"
#include "core/fpdfapi/parser/cpdf_number.h"
@@ -458,6 +459,29 @@ FPDFTextObj_GetFontSize(FPDF_PAGEOBJECT text_object)
return pTxtObj->GetFontSize();
}
......@@ -40,15 +48,15 @@ index a52e1a9..9daffc0 100644
+}
+
FPDF_EXPORT void FPDF_CALLCONV
FPDFTextObj_GetMatrix(FPDF_PAGEOBJECT text_object,
double* a,
FPDFPageObj_SetBlendMode(FPDF_PAGEOBJECT page_object,
FPDF_BYTESTRING blend_mode) {
diff --git a/pdfium/public/fpdf_edit.h b/pdfium/public/fpdf_edit.h
index 4351649..f858ab2 100644
--- a/pdfium/public/fpdf_edit.h
+++ b/pdfium/public/fpdf_edit.h
@@ -1030,6 +1030,17 @@ FPDFTextObj_CountChars(FPDF_PAGEOBJECT text_object);
FPDF_EXPORT int FPDF_CALLCONV
FPDFTextObj_GetFontSize(FPDF_PAGEOBJECT text_object);
@@ -1068,6 +1068,17 @@ FPDFPageObj_CreateTextObj(FPDF_DOCUMENT document,
FPDF_FONT font,
float font_size);
+// Get the font name of a text object.
+//
......@@ -61,7 +69,7 @@ index 4351649..f858ab2 100644
+FPDF_EXPORT int FPDF_CALLCONV
+FPDFTextObj_GetFontName(FPDF_PAGEOBJECT text_object, char* result);
+
// Get the matrix of a particular text object.
// Get the number of characters from a text object.
//
// text_object - Handle of text object returned by FPDFPageObj_NewTextObj
--
......
......@@ -14,7 +14,8 @@ pdfium_patches += icu.patch.1
# Fixes build on our baseline.
pdfium_patches += build.patch.1
# Adds missing editing API
pdfium_patches += 0001-svx-import-PDF-text-using-PDFium.patch.2
# Backport of <https://pdfium-review.googlesource.com/35434>.
pdfium_patches += 0001-Add-FPDFText_GetMatrix-API.patch.1
pdfium_patches += 0002-svx-more-accurate-PDF-text-importing.patch.2
pdfium_patches += 0003-svx-import-PDF-images-as-BGRA.patch.2
pdfium_patches += 0004-svx-support-PDF-text-color.patch.2
......@@ -24,13 +25,10 @@ pdfium_patches += 0005-svx-support-Paths-in-PDFs-while-importing.patch.1
pdfium_patches += 0006-Add-FPDFPath_GetDrawMode-API.patch.1
# Backport of <https://pdfium-review.googlesource.com/33670>.
pdfium_patches += 0006-Add-FPDFPath_GetMatrix-and-FPDFPath_SetMatrix-APIs.patch.1
pdfium_patches += 0007-svx-improved-text-importing-from-PDF.patch.2
pdfium_patches += 0008-svx-correct-the-positioning-of-PDF-Paths-and-the-str.patch.2
pdfium_patches += 0009-svx-support-color-text-for-imported-PDFs.patch.2
pdfium_patches += 0010-svx-support-importing-forms-from-PDFs.patch.2
pdfium_patches += 0011-svx-correctly-possition-form-objects-from-PDF.patch.2
pdfium_patches += 0012-svx-import-processed-PDF-text.patch.2
pdfium_patches += 0013-svx-cleanup-pdfium-importer.patch.2
pdfium_patches += 0014-svx-update-PDFium-patch-and-code.patch.2
pdfium_patches += 0015-svx-set-the-font-name-of-imported-PDF-text.patch.2
......
......@@ -816,7 +816,7 @@ void ImpSdrPdfImport::ImportText(FPDF_PAGEOBJECT pPageObject, FPDF_TEXTPAGE pTex
return;
double a, b, c, d, e, f;
FPDFTextObj_GetMatrix(pPageObject, &a, &b, &c, &d, &e, &f);
FPDFText_GetMatrix(pPageObject, &a, &b, &c, &d, &e, &f);
Matrix aTextMatrix(mCurMatrix);
aTextMatrix.Transform(left, right, top, bottom);
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment