aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/pdf/SkPDFDocument.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/pdf/SkPDFDocument.cpp')
-rw-r--r--src/pdf/SkPDFDocument.cpp52
1 files changed, 49 insertions, 3 deletions
diff --git a/src/pdf/SkPDFDocument.cpp b/src/pdf/SkPDFDocument.cpp
index 939e9ed991..f7c35ca2ac 100644
--- a/src/pdf/SkPDFDocument.cpp
+++ b/src/pdf/SkPDFDocument.cpp
@@ -12,6 +12,9 @@
#include "SkPDFCanon.h"
#include "SkPDFDevice.h"
#include "SkPDFUtils.h"
+#ifdef SK_SUPPORT_LEGACY_PDF_PIXELSERIALIZER
+#include "SkPixelSerializer.h"
+#endif
#include "SkStream.h"
SkPDFObjectSerializer::SkPDFObjectSerializer() : fBaseOffset(0), fNextToBeSerialized(0) {}
@@ -173,9 +176,16 @@ static sk_sp<SkPDFDict> generate_page_tree(SkTArray<sk_sp<SkPDFDict>>* pages) {
SkPDFDocument::SkPDFDocument(SkWStream* stream,
void (*doneProc)(SkWStream*, bool),
- const SkDocument::PDFMetadata& metadata)
+ const SkDocument::PDFMetadata& metadata
+#ifdef SK_SUPPORT_LEGACY_PDF_PIXELSERIALIZER
+ , sk_sp<SkPixelSerializer> jpegEncoder
+#endif
+ )
: SkDocument(stream, doneProc)
, fMetadata(metadata) {
+#ifdef SK_SUPPORT_LEGACY_PDF_PIXELSERIALIZER
+ fCanon.fPixelSerializer = std::move(jpegEncoder);
+#endif
}
SkPDFDocument::~SkPDFDocument() {
@@ -426,7 +436,11 @@ void SkPDFDocument::onClose(SkWStream* stream) {
sk_sp<SkDocument> SkPDFMakeDocument(SkWStream* stream,
void (*proc)(SkWStream*, bool),
- const SkDocument::PDFMetadata& metadata) {
+ const SkDocument::PDFMetadata& metadata
+#ifdef SK_SUPPORT_LEGACY_PDF_PIXELSERIALIZER
+ , sk_sp<SkPixelSerializer> jpeg
+#endif
+ ) {
SkDocument::PDFMetadata meta = metadata;
if (meta.fRasterDPI <= 0) {
meta.fRasterDPI = 72.0f;
@@ -434,7 +448,12 @@ sk_sp<SkDocument> SkPDFMakeDocument(SkWStream* stream,
if (meta.fEncodingQuality < 0) {
meta.fEncodingQuality = 0;
}
- return stream ? sk_make_sp<SkPDFDocument>(stream, proc, meta) : nullptr;
+ return stream ? sk_make_sp<SkPDFDocument>(stream, proc, meta
+#ifdef SK_SUPPORT_LEGACY_PDF_PIXELSERIALIZER
+ , std::move(jpeg)
+#endif
+ )
+ : nullptr;
}
sk_sp<SkDocument> SkDocument::MakePDF(SkWStream* stream, const PDFMetadata& metadata) {
@@ -445,3 +464,30 @@ sk_sp<SkDocument> SkDocument::MakePDF(SkWStream* stream) {
return SkPDFMakeDocument(stream, nullptr, PDFMetadata());
}
+#ifdef SK_SUPPORT_LEGACY_PDF_PIXELSERIALIZER
+sk_sp<SkDocument> SkDocument::MakePDF(SkWStream* stream,
+ SkScalar dpi,
+ const PDFMetadata& metadata,
+ sk_sp<SkPixelSerializer> jpegEncoder,
+ bool pdfa) {
+ PDFMetadata meta = metadata;
+ meta.fRasterDPI = dpi;
+ meta.fPDFA = pdfa;
+ return SkPDFMakeDocument(stream, nullptr, meta, jpegEncoder);
+}
+sk_sp<SkDocument> SkDocument::MakePDF(SkWStream* stream, SkScalar dpi) {
+ PDFMetadata meta;
+ meta.fRasterDPI = dpi;
+ return SkPDFMakeDocument(stream, nullptr, meta, nullptr);
+}
+sk_sp<SkDocument> SkDocument::MakePDF(const char path[], SkScalar dpi) {
+ auto delete_wstream = [](SkWStream* stream, bool) { delete stream; };
+ auto stream = skstd::make_unique<SkFILEWStream>(path);
+ if (!stream->isValid()) {
+ return nullptr;
+ }
+ PDFMetadata meta;
+ meta.fRasterDPI = dpi;
+ return SkPDFMakeDocument(stream.release(), delete_wstream, meta, nullptr);
+}
+#endif