• 注:大概是大三写的记录

  • 试图从源码中找swf地址,失败。

  • 这是个页数很多的PDF,每下拉几页都要加载,于是打开chrome F12 network选项卡,看时间轴,找到了最新加载的swf文件

  • 发现每一页都是一个单独的swf,而且地址只相差一个序号,于是用迅雷批量下载下来

  • 试图用acrobat转换成PDF,失败,因为只能把swf嵌入PDF。想了一下,我想要的其实是把动态的swf变成静止的,根本上来说是变图片

    去网上找swf转图片,没有很好的解决方案。最后看到了swf是编译后的文件,只有decompile才能取出其中的资源。

    找到了JPEXS Decompiler这个神器,可以免费decomile

    软件可以批量打开,并批量导出某些资源,发现

    1. 每个swf有一个frame,直接导出成png是没问题的,放大率选得越高越清晰
    2. 每个swf还有很多text资源,内容是用代码描述的位置、格式、内容等,所以理论上应该可以转换成svg或非扫描版PDF

    暂时使用导出为PNG的方法,发现都导出到了单独的文件夹,使用网上找的命令行下cp文件的方法不好使,因为每个文件夹里的图片都是重名的:1.png。想了想忽然发现python一个循环就可以完美解决问题:

    • from shutil import copyfile
      input_template = (r'G:\Study\Finance.Economics\quantitative finance\Time Series'
                      + r'\solution manual\pngs\073255627a0bd32dcafe0098e620b7e7-%s.swf'
                      + r'\frames\1.png'
                     )
      output_template = (r'G:\Study\Finance.Economics\quantitative finance\Time Series'
                       + r'\solution manual\output\solution_page_%s.png')
       
      for i in range(1, 100):
        src = input_template % str(i)
        dst = output_template % str(i)
        try:
            copyfile(src, dst)
        except IOError, e:
            print e