diff options
Diffstat (limited to 'external/pdfium/0001-Add-FPDFTextObj_GetText-API.patch.1')
-rw-r--r-- | external/pdfium/0001-Add-FPDFTextObj_GetText-API.patch.1 | 164 |
1 files changed, 0 insertions, 164 deletions
diff --git a/external/pdfium/0001-Add-FPDFTextObj_GetText-API.patch.1 b/external/pdfium/0001-Add-FPDFTextObj_GetText-API.patch.1 deleted file mode 100644 index 22926462cdac..000000000000 --- a/external/pdfium/0001-Add-FPDFTextObj_GetText-API.patch.1 +++ /dev/null @@ -1,164 +0,0 @@ -From 3bee9c60f013b8b7e99c39ee35699d132b330334 Mon Sep 17 00:00:00 2001 -Date: Tue, 7 Aug 2018 21:45:34 +0000 -Subject: [PATCH] Add FPDFTextObj_GetText() API - -Generalize CPDF_TextPage::GetTextByRect(), so that it's possible to get -the text from a text page using a predicate, that way we can easily -get the text that belongs to single text object as well. - -Change-Id: Ia457af0f41184694dc1481709be72b35685bce7f -Reviewed-on: https://pdfium-review.googlesource.com/39530 -Reviewed-by: Henrique Nakashima <hnakashima@chromium.org> -Reviewed-by: Lei Zhang <thestig@chromium.org> -Commit-Queue: Lei Zhang <thestig@chromium.org> ---- - core/fpdftext/cpdf_textpage.cpp | 18 +++++++++++++-- - core/fpdftext/cpdf_textpage.h | 4 ++++ - fpdfsdk/fpdf_edittext.cpp | 18 +++++++++++++++ - fpdfsdk/fpdf_text_embeddertest.cpp | 45 ++++++++++++++++++++++++++++++++++++++ - fpdfsdk/fpdf_view_c_api_test.c | 1 + - public/fpdf_edit.h | 20 +++++++++++++++++ - 6 files changed, 104 insertions(+), 2 deletions(-) - -diff --git a/core/fpdftext/cpdf_textpage.cpp b/core/fpdftext/cpdf_textpage.cpp -index 289416043..ed7f36fb6 100644 ---- a/core/fpdftext/cpdf_textpage.cpp -+++ b/core/fpdftext/cpdf_textpage.cpp -@@ -426,7 +426,8 @@ int CPDF_TextPage::GetIndexAtPos(const CFX_PointF& point, - return pos < nCount ? pos : NearPos; - } - --WideString CPDF_TextPage::GetTextByRect(const CFX_FloatRect& rect) const { -+WideString CPDF_TextPage::GetTextByPredicate( -+ const std::function<bool(const PAGECHAR_INFO&)>& predicate) const { - if (!m_bIsParsed) - return WideString(); - -@@ -435,7 +436,7 @@ WideString CPDF_TextPage::GetTextByRect(const CFX_FloatRect& rect) const { - bool IsAddLineFeed = false; - WideString strText; - for (const auto& charinfo : m_CharList) { -- if (IsRectIntersect(rect, charinfo.m_CharBox)) { -+ if (predicate(charinfo)) { - if (fabs(posy - charinfo.m_Origin.y) > 0 && !IsContainPreChar && - IsAddLineFeed) { - posy = charinfo.m_Origin.y; -@@ -460,6 +461,19 @@ WideString CPDF_TextPage::GetTextByRect(const CFX_FloatRect& rect) const { - return strText; - } - -+WideString CPDF_TextPage::GetTextByRect(const CFX_FloatRect& rect) const { -+ return GetTextByPredicate([&rect](const PAGECHAR_INFO& charinfo) { -+ return IsRectIntersect(rect, charinfo.m_CharBox); -+ }); -+} -+ -+WideString CPDF_TextPage::GetTextByObject( -+ const CPDF_TextObject* pTextObj) const { -+ return GetTextByPredicate([pTextObj](const PAGECHAR_INFO& charinfo) { -+ return charinfo.m_pTextObj == pTextObj; -+ }); -+} -+ - void CPDF_TextPage::GetCharInfo(int index, FPDF_CHAR_INFO* info) const { - if (!m_bIsParsed || !pdfium::IndexInBounds(m_CharList, index)) - return; -diff --git a/core/fpdftext/cpdf_textpage.h b/core/fpdftext/cpdf_textpage.h -index 36d01854f..90b45bd96 100644 ---- a/core/fpdftext/cpdf_textpage.h -+++ b/core/fpdftext/cpdf_textpage.h -@@ -8,6 +8,7 @@ - #define CORE_FPDFTEXT_CPDF_TEXTPAGE_H_ - - #include <deque> -+#include <functional> - #include <vector> - - #include "core/fpdfapi/page/cpdf_pageobjectlist.h" -@@ -97,6 +98,7 @@ class CPDF_TextPage { - std::vector<CFX_FloatRect> GetRectArray(int start, int nCount) const; - int GetIndexAtPos(const CFX_PointF& point, const CFX_SizeF& tolerance) const; - WideString GetTextByRect(const CFX_FloatRect& rect) const; -+ WideString GetTextByObject(const CPDF_TextObject* pTextObj) const; - - // Returns string with the text from |m_TextBuf| that are covered by the input - // range. |start| and |count| are in terms of the |m_CharIndex|, so the range -@@ -151,6 +153,8 @@ class CPDF_TextPage { - TextOrientation FindTextlineFlowOrientation() const; - void AppendGeneratedCharacter(wchar_t unicode, const CFX_Matrix& formMatrix); - void SwapTempTextBuf(int32_t iCharListStartAppend, int32_t iBufStartAppend); -+ WideString GetTextByPredicate( -+ const std::function<bool(const PAGECHAR_INFO&)>& predicate) const; - - UnownedPtr<const CPDF_Page> const m_pPage; - std::vector<uint16_t> m_CharIndex; -diff --git a/fpdfsdk/fpdf_edittext.cpp b/fpdfsdk/fpdf_edittext.cpp -index 6aa44b3b2..2773763b9 100644 ---- a/fpdfsdk/fpdf_edittext.cpp -+++ b/fpdfsdk/fpdf_edittext.cpp -@@ -22,6 +22,7 @@ - #include "core/fpdfapi/parser/cpdf_number.h" - #include "core/fpdfapi/parser/cpdf_reference.h" - #include "core/fpdfapi/parser/cpdf_stream.h" -+#include "core/fpdftext/cpdf_textpage.h" - #include "core/fxcrt/fx_extension.h" - #include "core/fxge/cfx_fontmgr.h" - #include "core/fxge/fx_font.h" -@@ -564,6 +565,23 @@ FPDFTextObj_GetFontName(FPDF_PAGEOBJECT text, - return dwStringLen; - } - -+FPDF_EXPORT unsigned long FPDF_CALLCONV -+FPDFTextObj_GetText(FPDF_PAGEOBJECT text_object, -+ FPDF_TEXTPAGE text_page, -+ void* buffer, -+ unsigned long length) { -+ CPDF_TextObject* pTextObj = CPDFTextObjectFromFPDFPageObject(text_object); -+ if (!pTextObj) -+ return 0; -+ -+ CPDF_TextPage* pTextPage = CPDFTextPageFromFPDFTextPage(text_page); -+ if (!pTextPage) -+ return 0; -+ -+ WideString text = pTextPage->GetTextByObject(pTextObj); -+ return Utf16EncodeMaybeCopyAndReturnLength(text, buffer, length); -+} -+ - 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 4d5aa9c48..83fedba90 100644 ---- a/public/fpdf_edit.h -+++ b/public/fpdf_edit.h -@@ -1274,6 +1274,26 @@ FPDFTextObj_GetFontName(FPDF_PAGEOBJECT text, - void* buffer, - unsigned long length); - -+// Experimental API. -+// Get the text of a text object. -+// -+// text_object - the handle to the text object. -+// text_page - the handle to the text page. -+// buffer - the address of a buffer that receives the text. -+// length - the size, in bytes, of |buffer|. -+// -+// Returns the number of bytes in the text (including the trailing NUL -+// character) on success, 0 on error. -+// -+// Regardless of the platform, the |buffer| is always in UTF16-LE encoding. -+// If |length| is less than the returned length, or |buffer| is NULL, |buffer| -+// will not be modified. -+FPDF_EXPORT unsigned long FPDF_CALLCONV -+FPDFTextObj_GetText(FPDF_PAGEOBJECT text_object, -+ FPDF_TEXTPAGE text_page, -+ void* buffer, -+ unsigned long length); -+ - // Experimental API. - // Get number of page objects inside |form_object|. - // --- -2.16.4 - |