コード例 #1
0
ファイル: PsEngine.cpp プロジェクト: xuxiandi/sumatrapdf
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);
}
コード例 #2
0
ファイル: PsEngine.cpp プロジェクト: xuxiandi/sumatrapdf
 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;
 }
コード例 #3
0
ファイル: PsEngine.cpp プロジェクト: Livit/moonpdf
 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;
 }