从flashplayer里extract PDF的过程

  • 注:大概是大三写的记录
  • 试图从源码中找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一个循环就可以完美解决问题:
    • ```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
      ```

A digital garden, perpetually growing.