summaryrefslogtreecommitdiff
path: root/core/fpdfapi/parser/cpdf_string.cpp
diff options
context:
space:
mode:
authorArtem Strygin <art-snake@yandex-team.ru>2018-07-23 19:54:34 +0000
committerChromium commit bot <commit-bot@chromium.org>2018-07-23 19:54:34 +0000
commit2bfa78540c375916ec9973f0ae11271b098180bd (patch)
tree4ec0b11e0014c95acda8a2e0b54e1bacd9f349d1 /core/fpdfapi/parser/cpdf_string.cpp
parent9f53dc093a9d00342ea76ecc0b4c8c84357ffd6e (diff)
downloadpdfium-2bfa78540c375916ec9973f0ae11271b098180bd.tar.xz
Rework of CPDF_Object writing.
Move writing logic into implementation of related clases. Change-Id: If70dc418b352b562ee681ea34fa6595d6f52eee3 Reviewed-on: https://pdfium-review.googlesource.com/36350 Commit-Queue: Art Snake <art-snake@yandex-team.ru> Reviewed-by: Tom Sepez <tsepez@chromium.org>
Diffstat (limited to 'core/fpdfapi/parser/cpdf_string.cpp')
-rw-r--r--core/fpdfapi/parser/cpdf_string.cpp16
1 files changed, 13 insertions, 3 deletions
diff --git a/core/fpdfapi/parser/cpdf_string.cpp b/core/fpdfapi/parser/cpdf_string.cpp
index 851442e8b4..e7f2a9dcd6 100644
--- a/core/fpdfapi/parser/cpdf_string.cpp
+++ b/core/fpdfapi/parser/cpdf_string.cpp
@@ -7,7 +7,9 @@
#include "core/fpdfapi/parser/cpdf_string.h"
#include <utility>
+#include <vector>
+#include "core/fpdfapi/edit/cpdf_encryptor.h"
#include "core/fpdfapi/parser/fpdf_parser_decode.h"
#include "core/fxcrt/fx_stream.h"
#include "third_party/base/ptr_util.h"
@@ -65,7 +67,15 @@ WideString CPDF_String::GetUnicodeText() const {
return PDF_DecodeText(m_String);
}
-bool CPDF_String::WriteTo(IFX_ArchiveStream* archive) const {
- return archive->WriteString(
- PDF_EncodeString(GetString(), IsHex()).AsStringView());
+bool CPDF_String::WriteTo(IFX_ArchiveStream* archive,
+ const CPDF_Encryptor* encryptor) const {
+ std::vector<uint8_t> encrypted_data;
+ pdfium::span<const uint8_t> data = m_String.AsRawSpan();
+ if (encryptor) {
+ encrypted_data = encryptor->Encrypt(data);
+ data = encrypted_data;
+ }
+ const ByteString content =
+ PDF_EncodeString(ByteString(data.data(), data.size()), IsHex());
+ return archive->WriteString(content.AsStringView());
}