static BaseEngine *psgz2pdf(const WCHAR *fileName) { ScopedMem<WCHAR> tmpFile(path::GetTempPath(L"PsE")); ScopedFile tmpFileScope(tmpFile); if (!tmpFile) return NULL; gzFile inFile = gzopen_w(fileName, "rb"); if (!inFile) return NULL; FILE *outFile = NULL; errno_t err = _wfopen_s(&outFile, tmpFile, L"wb"); if (err != 0 || !outFile) { gzclose(inFile); return NULL; } char buffer[12*1024]; for (;;) { int len = gzread(inFile, buffer, sizeof(buffer)); if (len <= 0) break; fwrite(buffer, 1, len, outFile); } fclose(outFile); gzclose(inFile); return ps2pdf(tmpFile); }
bool Load(const WCHAR *fileName) { AssertCrash(!this->fileName && !pdfEngine); if (!fileName) return false; this->fileName.Set(str::Dup(fileName)); if (file::StartsWith(fileName, "\x1F\x8B")) pdfEngine = psgz2pdf(fileName); else pdfEngine = ps2pdf(fileName); return pdfEngine != NULL; }
bool Load(const WCHAR *fileName) { assert(!this->fileName && !pdfEngine); if (!fileName) return false; this->fileName = str::Dup(fileName); if (isgzipped(fileName)) pdfEngine = psgz2pdf(fileName); else pdfEngine = ps2pdf(fileName); return pdfEngine != NULL; }