定时转换pdf到swf的问题
扫描一个目录下的文件,如果是pdf,则先判断对应名字的swf是否存在,如果不存在,判断是否存在对应名字的err文件,如果不存在,执行pdf2swf 把pdf转换成swf,转换完后判断是否有生成 swf文件(加密的pdf会生成失败),如果不存在,则生成 err文件,防止下次循环在去判断。
程序独立执行没问题,但放在定时任务执行(5分钟执行一次),则大部分不会生成swf 是什么原因?
void dir_scan(char *path, char *file)
{
struct stat s;
DIR *dir;
struct dirent *dt;
char dirname[500];
char filetype[10];
char filepdfname[100];
char fileerrname[100];
char fileerr2name[100];
char fullpdfname[200];
char fullerrname[200];
char fullerr2name[200];
char execcmd[500];
memset(dirname, 0, 50*sizeof(char));
strcpy(dirname, path);
if(lstat(file, &s) < 0){
printf("lstat error\n");
}
if(S_ISDIR(s.st_mode) == false){
{
//printf("dirname:%s filename: %s\n", dirname, file);
memset(filetype, 0, 10*sizeof(char));
strcpy(filetype,file + strlen(file)-3);
memset(filepdfname, 0, 100*sizeof(char));
memcpy(filepdfname,file,strlen(file)-3);
strcpy(filepdfname+strlen(filepdfname),"swf");
memset(fileerrname, 0, 100*sizeof(char));
memcpy(fileerrname,file,strlen(file)-3);
strcpy(fileerrname+strlen(fileerrname),"err");
if (strcmp(filetype,"pdf") == 0)
{
//printf("filetype is pdf\n");
memset(fullpdfname, 0, 200*sizeof(char));
strcpy(fullpdfname,dirname);
strcpy(fullpdfname+strlen(fullpdfname),filepdfname);
memset(fullerrname, 0, 200*sizeof(char));
strcpy(fullerrname,dirname);
strcpy(fullerrname+strlen(fullerrname),fileerrname);
if (access(fullpdfname,F_OK)) { //pdf file not exist
if (access(fullerrname,F_OK)) { //err file not exist
memset(execcmd, 0, 500*sizeof(char));
strcpy(execcmd,"/usr/bin/pdf2swf -it ");
strcat(execcmd,dirname);
strcat(execcmd,file);
strcat(execcmd," -o ");
strcat(execcmd,fullpdfname);
system(execcmd);
if (access(fullpdfname,F_OK)) { //pdf file not exist
memset(execcmd, 0, 500*sizeof(char));
strcpy(execcmd,"touch ");
strcat(execcmd,fullerrname);
system(execcmd);
}
}
}
}
else
{
//printf("filetype is none pdf\n");
}
count++;
}
}
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(6)
编写一个相同功能的shell,然后用sleep控制循环时间,对于你解决问题,很有帮助!
回复 1# z71941
怎么实现pdf2swf,有这样的软件或开源的程序吗?多谢。
谢谢,按照2楼的想法,写了个shell,问题解决了。
#!/bin/csh
#echo "this is test";
dirs=/www/log
cd $dirs
#记录开始时间
if [ ! -s "tranlog.txt" ]
then
touch tranlog.txt
fi
echo $(date +%Y"."%m"."%d" "%k":"%M":"%S) >> tranlog.txt
#处理开始
dirt=/www/pdf/$(date +%Y)/$(date +%m)/$(date +%d) #pdf 目录在 /www/pdf/2011/04/26 类似这样的目录
cd $dirt
for i in *.pdf; do
s1=$i;
s2=${i%%\.*}.swf;
#echo "$s1";
#echo "$s2";
if [ ! -s $s2 ]
then
#echo "$s2 is empty";
/usr/bin/pdf2swf -it $s1 -o $s2
#else
# echo "$s2 is not empty";
fi
done
cd $dirs
echo end$(date +%Y"."%m"."%d" "%k":"%M":"%S) >> tranlog.txt #记录结束时间
pdf2swf 有现成的安装包,包装后就可以使用了
回复 5# z71941
在linux上找了半天,没有找到包,或是软件, 能够告诉下包的名字和软件吗?
swftool