浅谈print2flash的在线预览转换应用

print2flash是一种在线预览转换工具,可以将doc、docx、xls、pdf、ppt等格式的文档转换成flash文件进行预览,因为之前使用的flash2paper只支持32为操作系统,不支持64为win7,所以才考虑用print2flash。

在使用过程中遇到了很多问题,下面我将遇到的问题总结一下。

1、安装以后,进行pdf转换出现系统错误,code 1155 没有应用程序与当前的操作的文件相关联,百度以后才发现是注册表的问题,

运行regedit进入注册表,删除注册表中的
HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\FileExts\.PDF 项,然后将以下内容保存为 REG 文件双击导入:

Windows Registry Editor Version 5.00

[HKEY_CLASSES_ROOT\.pdf]
"Content Type"="application/pdf"
@="AcroExch.Document"

[HKEY_CLASSES_ROOT\.pdf\OpenWithList]
@=""

[HKEY_CLASSES_ROOT\.pdf\OpenWithList\AcroRd32.exe]
@=""

[HKEY_CLASSES_ROOT\.pdf\PersistentHandler]
@="{F6594A6D-D57F-4EFD-B2C3-DCD9779E382E}"

[HKEY_CLASSES_ROOT\.pdf\ShellEx]

[HKEY_CLASSES_ROOT\.pdf\ShellEx\{8895b1c6-b41f-4c1c-a562-0d564250836f}]
@="{DC6EFB56-9CFA-464D-8880-44885D7DC193}"

[HKEY_CLASSES_ROOT\AcroExch.Document.7]
"FriendlyTypeName"="PDF 文档"
@="Adobe Acrobat Document"
"EditFlags"=hex:00,00,01,00
"BrowseInPlace"="1"

[HKEY_CLASSES_ROOT\AcroExch.Document.7\CLSID]
@="{B801CA65-A1FC-11D0-85AD-444553540000}"

[HKEY_CLASSES_ROOT\AcroExch.Document.7\DefaultIcon]
@="C:\\Windows\\Installer\\{AC76BA86-7AD7-2052-7B44-A92000000001}\\PDFFile_8.ico,0"

[HKEY_CLASSES_ROOT\AcroExch.Document.7\Insertable]
@=""

[HKEY_CLASSES_ROOT\AcroExch.Document.7\protocol]

[HKEY_CLASSES_ROOT\AcroExch.Document.7\protocol\StdFileEditing]

[HKEY_CLASSES_ROOT\AcroExch.Document.7\protocol\StdFileEditing\RequestDataFormats]
@="NoteshNote"

[HKEY_CLASSES_ROOT\AcroExch.Document.7\protocol\StdFileEditing\server]
@="\"C:\\Program Files\\Adobe\\Reader 9.0\\Acrobat\\Acrobat.exe\""

[HKEY_CLASSES_ROOT\AcroExch.Document.7\protocol\StdFileEditing\SetDataFormats]
@="NotesDocInfo"

[HKEY_CLASSES_ROOT\AcroExch.Document.7\protocol\StdFileEditing\verb]

[HKEY_CLASSES_ROOT\AcroExch.Document.7\protocol\StdFileEditing\verb\0]
@="&Open"

[HKEY_CLASSES_ROOT\AcroExch.Document.7\shell]
@="Read"

[HKEY_CLASSES_ROOT\AcroExch.Document.7\shell\Open]

[HKEY_CLASSES_ROOT\AcroExch.Document.7\shell\Open\command]
@="\"C:\\Program Files\\Adobe\\Reader 9.0\\Reader\\AcroRd32.exe\" \"%1\""

[HKEY_CLASSES_ROOT\AcroExch.Document.7\shell\Print]

[HKEY_CLASSES_ROOT\AcroExch.Document.7\shell\Print\command]
@="\"C:\\Program Files\\Adobe\\Reader 9.0\\Reader\\AcroRd32.exe\" /p /h \"%1\""

[HKEY_CLASSES_ROOT\AcroExch.Document.7\shell\Printto]

[HKEY_CLASSES_ROOT\AcroExch.Document.7\shell\Printto\command]
@="\"C:\\Program Files\\Adobe\\Reader 9.0\\Reader\\AcroRd32.exe\" /t \"%1\" \"%2\" \"%3\" \"%4\""

[HKEY_CLASSES_ROOT\AcroExch.Document.7\shell\Read]
@="使用 Adobe Reader 9 打开"

[HKEY_CLASSES_ROOT\AcroExch.Document.7\shell\Read\command]
@="\"C:\\Program Files\\Adobe\\Reader 9.0\\Reader\\AcroRd32.exe\" \"%1\""

[HKEY_CLASSES_ROOT\AcroExch.Document.7\Shellex]

[HKEY_CLASSES_ROOT\AcroExch.Document.7\Shellex\PropertySheetHandlers]
@="InfoPage"

[HKEY_CLASSES_ROOT\AcroExch.Document.7\Shellex\PropertySheetHandlers\InfoPage]
@="{F9DB5320-233E-11D1-9F84-707F02C10627}"

[HKEY_CLASSES_ROOT\AcroExch.Document.7\Shellex\{BB2E617C-0920-11d1-9A0B-00C04FC2D6C1}]
@="{F9DB5320-233E-11D1-9F84-707F02C10627}"

[HKEY_CLASSES_ROOT\AcroExch.Document]
"FriendlyTypeName"="PDF 文档"
"EditFlags"=hex:00,00,01,00
"BrowseInPlace"="1"
@="Adobe Acrobat Document"

[HKEY_CLASSES_ROOT\AcroExch.Document\CLSID]
@="{B801CA65-A1FC-11D0-85AD-444553540000}"

[HKEY_CLASSES_ROOT\AcroExch.Document\CurVer]
@="AcroExch.Document.7"

[HKEY_CLASSES_ROOT\AcroExch.Document\DefaultIcon]
@="C:\\Windows\\Installer\\{AC76BA86-7AD7-2052-7B44-A92000000001}\\PDFFile_8.ico,0"

[HKEY_CLASSES_ROOT\AcroExch.Document\Shell]

[HKEY_CLASSES_ROOT\AcroExch.Document\Shell\open]

[HKEY_CLASSES_ROOT\AcroExch.Document\Shell\open\Command]
@="\"C:\\Program Files\\Adobe\\Reader 9.0\\Reader\\AcroRd32.exe\" \"%1\""

问题搞定。

2、关于引用dll的问题

这里要将jawin.dll添加到java.library.path中,至于如何添加请百度我就不详细说了。

3、在工程项目中添加jawin.jar包。

4、写测试类TestPrint2Flash

import java.io.*;

import org.jawin.DispatchPtr;
import org.jawin.win32.Ole32;

public class TestPrint2Flash
{

 public static void main(String[] args) throws java.io.IOException
 {
 //getswf("F:\\111.pdf");
 getswf("F:\\自己动手写网络爬虫.pdf");
 
 
 //getswfboo("F:\\123\\222.xls","F:\\123\\swf\\222.swf");
 }
 
 public static void getswf(String args) throws IOException{
  
  if (args.length() > 0)
  {
   try
   {
    Ole32.CoInitialize();

    // Create Server object
    DispatchPtr p2f = new DispatchPtr("Print2Flash3.Server");

    // Setup interface and protection options
    //DispatchPtr defProfile = (DispatchPtr)p2f.get("DefaultProfile");
    DispatchPtr DefBPOpt = (DispatchPtr)p2f.get("DefaultBatchProcessingOptions");
    //p2f.invoke("SetP2FPrinterAsDefault");
    //defProfile.put("ApplicationType", P2FConst.MSEXCEL|P2FConst.MSPOWERPOINT|P2FConst.MSWORD|P2FConst.ACROBAT);
    //defProfile.put("InterfaceOptions",P2FConst.INTLOGO | P2FConst.INTZOOMSLIDER | P2FConst.INTPREVPAGE | P2FConst.INTGOTOPAGE | P2FConst.INTNEXTPAGE);
    //DefBPOpt.put("ProtectionOptions", P2FConst.PROTDISPRINT | P2FConst.PROTENAPI);
    DefBPOpt.put("BeforePrintingTimeout", 6000);
    DefBPOpt.put("PrintingTimeout", 60000);
    DefBPOpt.put("KeepAutomationAppRef",P2FConst.MSEXCEL|P2FConst.MSPOWERPOINT|P2FConst.MSWORD|P2FConst.ACROBAT);
    DefBPOpt.put("KillAllAutomationProcesses",2 );
    DefBPOpt.invoke("ApplyChanges");
    // Convert document
    p2f.invoke("ConvertFile", new String(args));
    System.out.println("Conversion completed successfully");
   }
   catch (Exception e)
   {
    System.out.println("An error occurred at conversion: "+e.toString());
   }
   finally
   {
    try {
     Ole32.CoUninitialize();
    }
    catch (Exception e)
    {
     
    }
   }
  }
  else System.out.println("Please provide a document file name as a parameter");
  System.out.println("Press Enter to exit...");
  System.in.read();
  
 }

 

定义常量

(可能定义的常量与测试代码中的有出入不过不影响使用,这些常量可以查询API帮助文档)

public class P2FConst {
 // APPLICATIONTYPE enumeration constants
 public static final int MSEXCEL = 0x00000001;
 public static final int MSWORD = 0x00000002;
 public static final int MSPOWERPOINT = 0x00000004;
 public static final int ACROBAT = 0x00000008;

 // IMAGEFORMAT enumeration constants
 public static final int JPEG = 1;
 public static final int PNG = 2;

 // IMGBEHAVIOR enumeration constants
 public static final int STRETCH = 1;
 public static final int TILE = 2;

 // INTERFACE_OPTION enumeration constants
 public static final int INTLOGO = 0x00000001;
 public static final int INTDRAG = 0x00000002;
 public static final int INTSELTEXT = 0x00000004;
 public static final int INTZOOMSLIDER = 0x00000008;
 public static final int INTZOOMBOX = 0x00000010;
 public static final int INTFITWIDTH = 0x00000020;
 public static final int INTFITPAGE = 0x00000040;
 public static final int INTPREVPAGE = 0x00000080;
 public static final int INTGOTOPAGE = 0x00000100;
 public static final int INTNEXTPAGE = 0x00000200;
 public static final int INTSEARCHBOX = 0x00000400;
 public static final int INTSEARCHBUT = 0x00000800;
 public static final int INTROTATE = 0x00001000;
 public static final int INTPRINT = 0x00002000;
 public static final int INTNEWWIND = 0x00004000;
 public static final int INTHELP = 0x00008000;
 public static final int INTBACKBUTTON = 0x00030000;
 public static final int INTBACKBUTTONAUTO = 0x00010000;
 public static final int INTFORWARDBUTTON = 0x000C0000;
 public static final int INTFORWARDBUTTONAUTO = 0x00040000;
 public static final int INTFULLSCREEN = 0x00300000;
 public static final int INTFULLSCREENAUTO = 0x00100000;


 // METADATAPORMAT enumeration constants
 public static final int XML = 1;
 public static final int TEXT = 2;

 // OUTPUTFORMAT enumeration constants
 public static final int SINGLEFILE = 1;
 public static final int SINGLEFILEPERPAGE = 2;
 public static final int EXTVIEWER = 4;

 // PAPER_ORIENTATION enumeration constants
 public static final int ORIENT_PORTRAIT = 1;
 public static final int ORIENT_LANDSCAPE = 2;

 // PROTECTION_OPTION enumeration constants
 public static final int PROTDISPRINT = 0x00000001;
 public static final int PROTDISTEXTCOPY = 0x00000002;
 public static final int PROTENAPI = 0x00000004;

 // ThreeStateFlag enumeration constants
 public static final int TSF_NO = 0;
 public static final int TSF_YES = 1;
 public static final int TSF_AUTO = 2;

 // TOOLBARIMAGE enumeration constants
 public static final int IMGLOGO = 1;
 public static final int IMGDRAG = 2;
 public static final int IMGSELTEXT = 3;
 public static final int IMGZOOMRULER = 4;
 public static final int IMGZOOMFOCUSNADLE = 5;
 public static final int IMGZOOMNADLE = 6;
 public static final int IMGFITWIDTH = 7;
 public static final int IMGFITPAGE = 8;
 public static final int IMGPREVPAGE = 9;
 public static final int IMGNEXTPAGE = 10;
 public static final int IMGSEARCHBUT = 11;
 public static final int IMGROTATE = 12;
 public static final int IMGPRINT = 13;
 public static final int IMGNEWWIND = 14;
 public static final int IMGHELP = 15;
 public static final int IMGMORE = 16;
 public static final int IMGTOOLBARBGR = 17;
 public static final int IMGBACK = 18;
 public static final int IMGFORWARD = 19;
 public static final int IMGFULLSCREEN = 20;
 public static final int IMGEXITFULLSCREEN = 21;

 // TEMPLATETYPE enumeration constants
 public static final int TEMPLATE_CUSTOM = 1;
 public static final int TEMPLATE_ACTIONSCRIPT2 = 2;
 public static final int TEMPLATE_ACTIONSCRIPT3 = 3;

 // WATERMARKANCHOR enumeration constants
 public static final int CENTER = 0;
 public static final int LEFTCENTER = 1;
 public static final int RIGHTCENTER = 2;
 public static final int TOPCENTER = 16;
 public static final int BOTTOMCENTER = 32;
 public static final int LEFTTOP = 17;
 public static final int RIGHTTOP = 18;
 public static final int LEFTBOTTOM = 33;
 public static final int RIGHTBOTTOM = 34;
}   中国食疗网   http://www.shiliaowang.com/

5、定制自己想要的转换功能

这一点可以查看安装后的帮助文档,虽然是英文的,但是仔细看一看就能弄明白,API写的非常清楚

 

你可能感兴趣的:(浅谈print2flash的在线预览转换应用)