2015-03-26 3 views
0

Im пытается сохранить один pdf-файл в пути, который содержит японское имя пользователя. В этом случае HPDF_SaveToFile делает крушение моего приложения на окнах. Любые варианты компиляции или другие вещи? Любая идея поддерживать имена файлов Unicode с помощью libhaur? Я не хочу создавать pdf-код с японским кодированием, я хочу написать pdf-файл с японским именем.Позвоните в HPDF_SaveToFile() с japanese filename

+0

Im получение ERROR_No: 1017, когда HPDF_SaveToFile вызова() с японским путем – jgd

+1

Вы всегда можете попробовать отладить его. Или вы можете использовать HPDF_SaveToStream и дать ему поток, который поддерживается файлом с японским именем. Или вы можете сохранить файл с английским именем, а затем переименовать его в японское имя. –

+0

@RaymondChen Если у вас есть путь с японским именем пользователя, это потому, что пользователь хочет сохранить файл по этому пути, и вы не можете его изменить. Решение - это изменение libharu API для поддержки wchar_t вместо char. – jgd

ответ

0

Решение в Qt. Если вы используете C++, вы можете использовать fstream/ofstream (:: write). Если вы используете C, вы можете использовать fwrite.

QFile file(path); 
if (file.open(QIODevice::WriteOnly)) 
{ 
    HPDF_SaveToStream(m_pdf); 
    /* get the data from the stream and write it to file. */ 
    for (;;) 
    { 
     HPDF_BYTE buf[4096]; 
     HPDF_UINT32 siz = 4096; 
     HPDF_STATUS ret = HPDF_ReadFromStream(m_pdf, buf, &siz); 

     if (siz == 0) 
     { 
      break; 
     } 

     if (-1 == file.write(reinterpret_cast<const char *>(buf), siz)) 
     { 
      qDebug() << "Write PDF error"; 
      break; 
     } 
    } 
} 
HPDF_Free(m_pdf); 

Refrence: Libharu Usage examples