定时转换pdf到swf的问题

发布于 2022-10-15 08:53:13 字数 7224 浏览 28 评论 0

扫描一个目录下的文件,如果是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 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(6

一个人练习一个人 2022-10-22 08:53:14

编写一个相同功能的shell,然后用sleep控制循环时间,对于你解决问题,很有帮助!

公布 2022-10-22 08:53:14

回复 1# z71941

    怎么实现pdf2swf,有这样的软件或开源的程序吗?多谢。

不知在何时 2022-10-22 08:53:14

谢谢,按照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 #记录结束时间

断舍离 2022-10-22 08:53:14

pdf2swf 有现成的安装包,包装后就可以使用了

梦醒时光 2022-10-22 08:53:14

回复 5# z71941

    在linux上找了半天,没有找到包,或是软件, 能够告诉下包的名字和软件吗?

音盲 2022-10-22 08:53:14

swftool

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文