[PDF] Remove one copy of each content stream.

Review URL: http://codereview.appspot.com/4231044

git-svn-id: http://skia.googlecode.com/svn/trunk@856 2bbb7eff-a529-9590-31e7-b0007b416f81
diff --git a/src/pdf/SkPDFDevice.cpp b/src/pdf/SkPDFDevice.cpp
index 1c6477f..cf6a68e 100644
--- a/src/pdf/SkPDFDevice.cpp
+++ b/src/pdf/SkPDFDevice.cpp
@@ -558,10 +558,16 @@
     return mediaBox;
 }
 
-SkString SkPDFDevice::content() const {
-    SkString result = fContent;
-    for (int i = 0; i < fGraphicStackIndex; i++)
-        result.append("Q\n");
+SkStream* SkPDFDevice::content() const {
+    size_t offset = fContent.size();
+    char* data = (char*)sk_malloc_throw(offset + fGraphicStackIndex * 2);
+    memcpy(data, fContent.c_str(), offset);
+    for (int i = 0; i < fGraphicStackIndex; i++) {
+        data[offset++] = 'Q';
+        data[offset++] = '\n';
+    }
+    SkMemoryStream* result = new SkMemoryStream;
+    result->setMemoryOwned(data, offset);
     return result;
 }