diff --git a/core/fpdfapi/edit/cpdf_pagecontentgenerator.cpp b/core/fpdfapi/edit/cpdf_pagecontentgenerator.cpp
index 8740268..d6ab0b0 100644
--- a/core/fpdfapi/edit/cpdf_pagecontentgenerator.cpp
+++ b/core/fpdfapi/edit/cpdf_pagecontentgenerator.cpp
@@ -589,6 +589,6 @@
     if (charcode != CPDF_Font::kInvalidCharCode)
       pFont->AppendChar(&text, charcode);
   }
-  *buf << PDF_HexEncodeString(text) << " Tj ET";
+  *buf << PDF_HexEncodeString(text.AsStringView()) << " Tj ET";
   *buf << " Q\n";
 }
diff --git a/core/fpdfapi/parser/cpdf_string.cpp b/core/fpdfapi/parser/cpdf_string.cpp
index 001865b..2501cd1 100644
--- a/core/fpdfapi/parser/cpdf_string.cpp
+++ b/core/fpdfapi/parser/cpdf_string.cpp
@@ -74,12 +74,13 @@
     encrypted_data = encryptor->Encrypt(data);
     data = encrypted_data;
   }
-  const ByteString raw(data.data(), data.size());
-  const ByteString content =
+  ByteStringView raw(data.data(), data.size());
+  ByteString content =
       m_bHex ? PDF_HexEncodeString(raw) : PDF_EncodeString(raw);
   return archive->WriteString(content.AsStringView());
 }
 
 ByteString CPDF_String::EncodeString() const {
-  return m_bHex ? PDF_HexEncodeString(m_String) : PDF_EncodeString(m_String);
+  return m_bHex ? PDF_HexEncodeString(m_String.AsStringView())
+                : PDF_EncodeString(m_String.AsStringView());
 }
diff --git a/core/fpdfapi/parser/fpdf_parser_decode.cpp b/core/fpdfapi/parser/fpdf_parser_decode.cpp
index b9b3c94..9a5a8eb 100644
--- a/core/fpdfapi/parser/fpdf_parser_decode.cpp
+++ b/core/fpdfapi/parser/fpdf_parser_decode.cpp
@@ -10,7 +10,6 @@
 #include <limits.h>
 
 #include <algorithm>
-#include <sstream>
 #include <utility>
 #include <vector>
 
@@ -560,40 +559,40 @@
   return result;
 }
 
-ByteString PDF_EncodeString(const ByteString& src) {
-  std::ostringstream result;
-  int srclen = src.GetLength();
-  result << '(';
-  for (int i = 0; i < srclen; ++i) {
+ByteString PDF_EncodeString(ByteStringView src) {
+  ByteString result;
+  result.Reserve(src.GetLength() + 2);
+  result += '(';
+  for (size_t i = 0; i < src.GetLength(); ++i) {
     uint8_t ch = src[i];
     if (ch == 0x0a) {
-      result << "\\n";
+      result += "\\n";
       continue;
     }
     if (ch == 0x0d) {
-      result << "\\r";
+      result += "\\r";
       continue;
     }
     if (ch == ')' || ch == '\\' || ch == '(')
-      result << '\\';
-    result << static_cast<char>(ch);
+      result += '\\';
+    result += static_cast<char>(ch);
   }
-  result << ')';
-  return ByteString(result);
+  result += ')';
+  return result;
 }
 
-ByteString PDF_HexEncodeString(const ByteString& src) {
-  std::ostringstream result;
-  int srclen = src.GetLength();
-  result << '<';
-  for (int i = 0; i < srclen; ++i) {
+ByteString PDF_HexEncodeString(ByteStringView src) {
+  ByteString result;
+  result.Reserve(2 * src.GetLength() + 2);
+  result += '<';
+  for (size_t i = 0; i < src.GetLength(); ++i) {
     char buf[2];
     FXSYS_IntToTwoHexChars(src[i], buf);
-    result << buf[0];
-    result << buf[1];
+    result += buf[0];
+    result += buf[1];
   }
-  result << '>';
-  return ByteString(result);
+  result += '>';
+  return result;
 }
 
 bool FlateEncode(pdfium::span<const uint8_t> src_span,
diff --git a/core/fpdfapi/parser/fpdf_parser_decode.h b/core/fpdfapi/parser/fpdf_parser_decode.h
index de3c3f3..537456b 100644
--- a/core/fpdfapi/parser/fpdf_parser_decode.h
+++ b/core/fpdfapi/parser/fpdf_parser_decode.h
@@ -30,8 +30,8 @@
 
 bool ValidateDecoderPipeline(const CPDF_Array* pDecoders);
 
-ByteString PDF_EncodeString(const ByteString& src);
-ByteString PDF_HexEncodeString(const ByteString& src);
+ByteString PDF_EncodeString(ByteStringView src);
+ByteString PDF_HexEncodeString(ByteStringView src);
 WideString PDF_DecodeText(pdfium::span<const uint8_t> span);
 ByteString PDF_EncodeText(const WideString& str);
 
diff --git a/core/fpdfdoc/cpdf_generateap.cpp b/core/fpdfdoc/cpdf_generateap.cpp
index cc800d2..276e3ef 100644
--- a/core/fpdfdoc/cpdf_generateap.cpp
+++ b/core/fpdfdoc/cpdf_generateap.cpp
@@ -75,10 +75,10 @@
   return sWord;
 }
 
-ByteString GetWordRenderString(const ByteString& strWords) {
-  if (strWords.GetLength() > 0)
-    return PDF_EncodeString(strWords) + " Tj\n";
-  return ByteString();
+ByteString GetWordRenderString(ByteStringView strWords) {
+  if (strWords.IsEmpty())
+    return ByteString();
+  return PDF_EncodeString(strWords) + " Tj\n";
 }
 
 ByteString GetFontSetString(IPVT_FontMap* pFontMap,
@@ -111,7 +111,7 @@
     if (bContinuous) {
       if (place.LineCmp(oldplace) != 0) {
         if (!sWords.IsEmpty()) {
-          sLineStream << GetWordRenderString(sWords);
+          sLineStream << GetWordRenderString(sWords.AsStringView());
           sEditStream << sLineStream.str();
           sLineStream.str("");
           sWords.clear();
@@ -136,7 +136,7 @@
       if (pIterator->GetWord(word)) {
         if (word.nFontIndex != nCurFontIndex) {
           if (!sWords.IsEmpty()) {
-            sLineStream << GetWordRenderString(sWords);
+            sLineStream << GetWordRenderString(sWords.AsStringView());
             sWords.clear();
           }
           sLineStream << GetFontSetString(pFontMap, word.nFontIndex,
@@ -162,12 +162,13 @@
           nCurFontIndex = word.nFontIndex;
         }
         sEditStream << GetWordRenderString(
-            GetPDFWordString(pFontMap, nCurFontIndex, word.Word, SubWord));
+            GetPDFWordString(pFontMap, nCurFontIndex, word.Word, SubWord)
+                .AsStringView());
       }
     }
   }
   if (!sWords.IsEmpty()) {
-    sLineStream << GetWordRenderString(sWords);
+    sLineStream << GetWordRenderString(sWords.AsStringView());
     sEditStream << sLineStream.str();
   }
   return ByteString(sEditStream);
diff --git a/fpdfsdk/cpdfsdk_appstream.cpp b/fpdfsdk/cpdfsdk_appstream.cpp
index 37dfbc0..2dd0b27 100644
--- a/fpdfsdk/cpdfsdk_appstream.cpp
+++ b/fpdfsdk/cpdfsdk_appstream.cpp
@@ -580,10 +580,10 @@
   return ByteString(sRet);
 }
 
-ByteString GetWordRenderString(const ByteString& strWords) {
-  if (strWords.GetLength() > 0)
-    return PDF_EncodeString(strWords) + " " + kShowTextOperator + "\n";
-  return ByteString();
+ByteString GetWordRenderString(ByteStringView strWords) {
+  if (strWords.IsEmpty())
+    return ByteString();
+  return PDF_EncodeString(strWords) + " " + kShowTextOperator + "\n";
 }
 
 ByteString GetEditAppStream(CPWL_EditImpl* pEdit,
@@ -605,7 +605,7 @@
     if (bContinuous) {
       if (place.LineCmp(oldplace) != 0) {
         if (!sWords.IsEmpty()) {
-          sEditStream << GetWordRenderString(sWords);
+          sEditStream << GetWordRenderString(sWords.AsStringView());
           sWords.clear();
         }
 
@@ -632,7 +632,7 @@
       if (pIterator->GetWord(word)) {
         if (word.nFontIndex != nCurFontIndex) {
           if (!sWords.IsEmpty()) {
-            sEditStream << GetWordRenderString(sWords);
+            sEditStream << GetWordRenderString(sWords.AsStringView());
             sWords.clear();
           }
           sEditStream << GetFontSetString(pEdit->GetFontMap(), word.nFontIndex,
@@ -660,13 +660,14 @@
           nCurFontIndex = word.nFontIndex;
         }
         sEditStream << GetWordRenderString(
-            pEdit->GetPDFWordString(nCurFontIndex, word.Word, SubWord));
+            pEdit->GetPDFWordString(nCurFontIndex, word.Word, SubWord)
+                .AsStringView());
       }
     }
   }
 
   if (!sWords.IsEmpty())
-    sEditStream << GetWordRenderString(sWords);
+    sEditStream << GetWordRenderString(sWords.AsStringView());
 
   std::ostringstream sAppStream;
   if (sEditStream.tellp() > 0) {
diff --git a/fpdfsdk/fpdf_attachment.cpp b/fpdfsdk/fpdf_attachment.cpp
index 4955b1d..d1fba0d 100644
--- a/fpdfsdk/fpdf_attachment.cpp
+++ b/fpdfsdk/fpdf_attachment.cpp
@@ -188,7 +188,8 @@
   if (bsKey == kChecksumKey && !value.IsEmpty()) {
     CPDF_String* stringValue = pParamsDict->GetObjectFor(bsKey)->AsString();
     if (stringValue->IsHex()) {
-      ByteString encoded = PDF_HexEncodeString(stringValue->GetString());
+      ByteString encoded =
+          PDF_HexEncodeString(stringValue->GetString().AsStringView());
       value = pdfium::MakeRetain<CPDF_String>(nullptr, encoded, false)
                   ->GetUnicodeText();
     }
