Here is an example of using Skia's PDF backend in the recommended way:
via the SkDocument and SkCanvas APIs.
-<!--?prettify?-->
+<!--?prettify lang=cc?-->
#include "SkDocument.h"
- bool WritePDF() {
- SkWStream* outputStream = ....;
-
- SkAutoTUnref<SkDocument> pdfDocument(
- SkDocument::CreatePDF(outputStream));
+ bool WritePDF(SkWStream* outputStream) {
+ sk_sp<SkDocument> pdfDocument(SkDocument::CreatePDF(outputStream));
+ typedef SkDocument::Attribute Attr;
+ Attr info[] = {
+ Attr(SkString("Title"), SkString("....")),
+ Attr(SkString("Author"), SkString("....")),
+ Attr(SkString("Subject"), SkString("....")),
+ Attr(SkString("Keywords"), SkString("....")),
+ Attr(SkString("Creator"), SkString("....")),
+ };
+ int infoCount = sizeof(info) / sizeof(info[0]);
+ SkTime::DateTime now;
+ SkTime::GetDateTime(&now);
+ pdfDocument->setMetadata(info, infoCount, &now, &now);
int numberOfPages = ....;
for (int page = 0; page < numberOfPages; ++page) {
pdfDocument->endPage();
}
-
- SkTArray<SkDocument::Attribute> info;
- info.emplace_back(SkString("Title"), SkString("...."));
- info.emplace_back(SkString("Author"), SkString("...."));
- info.emplace_back(SkString("Subject"), SkString("...."));
- info.emplace_back(SkString("Keywords"), SkString("...."));
- info.emplace_back(SkString("Creator"), SkString("...."));
- SkTime::DateTime now;
- SkTime::GetDateTime(&now);
- pdfDocument->setMetadata(info, &now, &now);
-
return pdfDocument->close();
}
REQUIRE_PDF_DOCUMENT(SkPDF_MetadataAttribute, r);
SkDynamicMemoryWStream pdf;
SkAutoTUnref<SkDocument> doc(SkDocument::CreatePDF(&pdf));
- SkTArray<SkDocument::Attribute> info;
- info.emplace_back(SkString("Title"), SkString("A1"));
- info.emplace_back(SkString("Author"), SkString("A2"));
- info.emplace_back(SkString("Subject"), SkString("A3"));
- info.emplace_back(SkString("Keywords"), SkString("A4"));
- info.emplace_back(SkString("Creator"), SkString("A5"));
+ typedef SkDocument::Attribute Attr;
+ Attr info[] = {
+ Attr(SkString("Title"), SkString("A1")),
+ Attr(SkString("Author"), SkString("A2")),
+ Attr(SkString("Subject"), SkString("A3")),
+ Attr(SkString("Keywords"), SkString("A4")),
+ Attr(SkString("Creator"), SkString("A5")),
+ };
+ int infoCount = sizeof(info) / sizeof(info[0]);
SkTime::DateTime now;
SkTime::GetDateTime(&now);
- doc->setMetadata(&info[0], info.count(), &now, &now);
+ doc->setMetadata(&info[0], infoCount, &now, &now);
doc->beginPage(612.0f, 792.0f);
doc->close();
SkAutoTUnref<SkData> data(pdf.copyToData());