`

浅谈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写的非常清楚

 
分享到:
评论

相关推荐

    C# WinForm调用Print2Flash将文档转换成swf (x64)演示

    使用Print2Flash批量转换和API将文档转换成swf演示。64位的版本的,32位的版可以参考更改路径和dll文件。 使用API的时候需要安装Print2Flash服务,具体启动方法参考下面链接 ...在Print2Flash\Print2Flash\bin\Debug\...

    print2flash4 实现文件转换为swf供浏览器在线查看

    使用print2flash4实现pdf、txt、word、图片等文件转换为flash文件后供网页在线预览; 文件中含有print2flash的sdk,自己写得自动转换调度程序(.NET版本)+print2flash4安装程序以及补丁

    Print2Flash应用例子

    引用Print2Flash生成的文档 Print2Flash应用例子

    print2Flash文件预览,包含序列号!

    print2Flash 可以将word ppt excel txt 等等转化为swf 并在html上实现动画播放,分页显示 实现预览

    Print2Flash

    Print2Flash是一个虚拟打印机类的文档转换软件,因此只要是可打印的文档,都可以轻松转换为Flash文件,即SWF动画,特别是用于转换PDF、Word、Excel、PowerPoint等文档为SWF格式。 Print2Flash与Macromedia的...

    Interop.Print2Flash3.dll

    Interop.Print2Flash3.dll

    print2flashsdk

    print2flashsdk

    Print2Flash_V3.5.0.533 64位破解版(win8可用)

    Print2Flash_V3.5.0.533 64位,win8中能正常使用 1.安装print2flash v3.5 2.停止Print2Flash3服务(如果配置了服务并启动了的话),一般这一步可不需操作. 3.拷贝p2fServer.exe、Print2Flash.exe到安装目标文件夹替换原...

    print2flash 3.5

    print2flash 3.5 用于office文档在线预览,相关使用文档见http://www.cnblogs.com/flowwind/

    print2flash.rar

    print2flash

    print2flash.exejava例子

    java 使用print2flash.exe转换成swf的例子

    print2flash4商业版已注册

    print2flash4商业版已注册,可实现word文档的在线预览

    Print2Flash工具

    Print 2 Flash转换工具,具体操作步骤百度搜吧,挺简单的(为了凑够50字我必须得继续编下去)

    Print2Flash_V2.7.3

    Print2Flash是一款文档播放器,可以将普通文本、word、excel、ppt等转换为flash文件,很方便。

    print2flash4 SDK

    print2flash4官方提供的各种语言操作的API

    Print2Flash3.1

    用Print2Flash可以完全替代flashpaper,支持32位及64位的WIN7系统。绝对可以使用!

    print2flash软件

    这个是做仿百度文库的软件,win7用户应该都有体验FlashPaper2安装的时候有问题,print2flash相当于FlashPaper2的win7版本。

    Print2Flash免注册3.5

    Print2Flash免注册版,是网上pdf显示的实用工具,不论加密电脑还是不加密都能很好试用。

    print2flash4安装包+demo

    java实现与print2flash4的整合demo,下载安装工具导入demo即可运行.我用的64位win7系统;

    Print2flash

    Print2Flash是一个虚拟打印机类的文档转换软件,因此只要是可打印的文档,都可以轻松转换为Flash即SWF文件

Global site tag (gtag.js) - Google Analytics