SkDocument* SkDocument::CreatePDF(const char path[], SkScalar dpi) { SkFILEWStream* stream = SkNEW_ARGS(SkFILEWStream, (path)); if (!stream->isValid()) { SkDELETE(stream); return NULL; } auto delete_wstream = [](SkWStream* stream, bool) { SkDELETE(stream); }; return SkNEW_ARGS(SkDocument_PDF, (stream, delete_wstream, dpi)); }
/** Write the output of pdf renderer to a file. * @param outputDir Output dir. * @param inputFilename The skp file that was read. * @param renderer The object responsible to write the pdf file. */ static SkWStream* open_stream(const SkString& outputDir, const SkString& inputFilename) { if (outputDir.isEmpty()) { return SkNEW(SkDynamicMemoryWStream); } SkString outputPath; if (!make_output_filepath(&outputPath, outputDir, inputFilename)) { return NULL; } SkFILEWStream* stream = SkNEW_ARGS(SkFILEWStream, (outputPath.c_str())); if (!stream->isValid()) { SkDebugf("Could not write to file %s\n", outputPath.c_str()); return NULL; } return stream; }