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.]
"FriendlyTypeName"="PDF 文档"
@="Adobe Acrobat Document"
"EditFlags"=hex:,,,
"BrowseInPlace"="" [HKEY_CLASSES_ROOT\AcroExch.Document.\CLSID]
@="{B801CA65-A1FC-11D0-85AD-444553540000}" [HKEY_CLASSES_ROOT\AcroExch.Document.\DefaultIcon]
@="C:\\Windows\\Installer\\{AC76BA86-7AD7-2052-7B44-A92000000001}\\PDFFile_8.ico,0" [HKEY_CLASSES_ROOT\AcroExch.Document.\Insertable]
@="" [HKEY_CLASSES_ROOT\AcroExch.Document.\protocol] [HKEY_CLASSES_ROOT\AcroExch.Document.\protocol\StdFileEditing] [HKEY_CLASSES_ROOT\AcroExch.Document.\protocol\StdFileEditing\RequestDataFormats]
@="NoteshNote" [HKEY_CLASSES_ROOT\AcroExch.Document.\protocol\StdFileEditing\server]
@="\"C:\\Program Files\\Adobe\\Reader 9.0\\Acrobat\\Acrobat.exe\"" [HKEY_CLASSES_ROOT\AcroExch.Document.\protocol\StdFileEditing\SetDataFormats]
@="NotesDocInfo" [HKEY_CLASSES_ROOT\AcroExch.Document.\protocol\StdFileEditing\verb] [HKEY_CLASSES_ROOT\AcroExch.Document.\protocol\StdFileEditing\verb\]
@="&Open" [HKEY_CLASSES_ROOT\AcroExch.Document.\shell]
@="Read" [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\"" [HKEY_CLASSES_ROOT\AcroExch.Document.\shell\Print] [HKEY_CLASSES_ROOT\AcroExch.Document.\shell\Print\command]
@="\"C:\\Program Files\\Adobe\\Reader 9.0\\Reader\\AcroRd32.exe\" /p /h \"%1\"" [HKEY_CLASSES_ROOT\AcroExch.Document.\shell\Printto] [HKEY_CLASSES_ROOT\AcroExch.Document.\shell\Printto\command]
@="\"C:\\Program Files\\Adobe\\Reader 9.0\\Reader\\AcroRd32.exe\" /t \"%1\" \"%2\" \"%3\" \"%4\"" [HKEY_CLASSES_ROOT\AcroExch.Document.\shell\Read]
@="使用 Adobe Reader 9 打开" [HKEY_CLASSES_ROOT\AcroExch.Document.\shell\Read\command]
@="\"C:\\Program Files\\Adobe\\Reader 9.0\\Reader\\AcroRd32.exe\" \"%1\"" [HKEY_CLASSES_ROOT\AcroExch.Document.\Shellex] [HKEY_CLASSES_ROOT\AcroExch.Document.\Shellex\PropertySheetHandlers]
@="InfoPage" [HKEY_CLASSES_ROOT\AcroExch.Document.\Shellex\PropertySheetHandlers\InfoPage]
@="{F9DB5320-233E-11D1-9F84-707F02C10627}" [HKEY_CLASSES_ROOT\AcroExch.Document.\Shellex\{BB2E617C--11d1-9A0B-00C04FC2D6C1}]
@="{F9DB5320-233E-11D1-9F84-707F02C10627}" [HKEY_CLASSES_ROOT\AcroExch.Document]
"FriendlyTypeName"="PDF 文档"
"EditFlags"=hex:,,,
"BrowseInPlace"=""
@="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:\\自己动手写网络爬虫.pdf");
}
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;
}

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

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

浅谈print2flash的在线预览转换应用(原创)的更多相关文章

  1. 浅谈js本地图片预览

    最近在工作中遇到一个问题,就是实现一个反馈页面,这个反馈页面的元素有反馈主题.反馈类型.反馈内容.反馈人联系电话以及反馈图片.前端将这些反馈的元素POST给后台提供的接口:实现这个工作的步骤就是:页面 ...

  2. Print2flash在.NET(C#)中的使用,即文档在线预览

    office文档(word,excel,ppt)在线预览查看,有很多种方式,比如可以 1.调用weboffice组件,进行word预览,要求客户端安装word,仅适用IE, word2013, IE1 ...

  3. Print2flash在.NET(C#)64位中的使用,即文档在线预览

    转:http://www.cnblogs.com/flowwind/p/3411106.html Print2flash在.NET(C#)中的使用,即文档在线预览   office文档(word,ex ...

  4. 在线预览-Java 使用 Print2Flash 实现Office文档在线阅读

    近期项目上遇到一个需求是用户上传的文档进行在线浏览,之前有过一篇使用 OpenOffice 将 word 转换成 html 页面进行展示的.现在介绍一个新的工具那就是 Print2Flash .    ...

  5. 实战动态PDF在线预览及带签名的PDF文件转换

    开篇语: 最近工作需要做一个借款合同,公司以前的合同都是通过app端下载,然后通过本地打开pdf文件,而喜欢创新的我,心想着为什么不能在线H5预览,正是这个想法,说干就干,实践过程总是艰难的,折腾了3 ...

  6. Atitit.office word  excel  ppt pdf 的web在线预览方案与html转换方案 attilax 总结

    Atitit.office word  excel  ppt pdf 的web在线预览方案与html转换方案 attilax 总结 1. office word  excel pdf 的web预览要求 ...

  7. 文件在线预览doc,docx转换pdf(一)

    文件在线预览doc,docx转换pdf(一) 1. 前言 文档转换是一个是一块硬骨头,但是也是必不可少的,我们正好做的知识库产品中,也面临着同样的问题,文档转换,精准的全文搜索,知识的转换率,是知识库 ...

  8. [Asp.net]使用flexpaper+swftools大文件分页转换实现在线预览

    引言 之前总结了在线预览几种常见解决方案,可以戳这里: http://www.cnblogs.com/wolf-sun/p/3569960.html http://www.cnblogs.com/wo ...

  9. Office在线预览及PDF在线预览的实现方式史上最全大集合

    Office在线预览及PDF在线预览的实现方式大集合 一.服务器先转换为PDF,再转换为SWF,最后通过网页加载Flash预览 微软方:利用Office2007以上版本的一个PDF插件SaveAsPD ...

随机推荐

  1. Chessboard(规律)&&阿里巴巴和n个大盗(规律)

    Chessboard Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Total ...

  2. UML视图(四)状态图

    以下是一个图书馆管理系统的状态图,非常典型,涵盖状态图的全部元素的使用,由于状态图相对照较简单,直接从看图就能非常好地掌握.假设想对状态图的元素严谨的概念进行了解,在图下方,有仔细的叙述. 看了上面的 ...

  3. Bctf-pwn_ruin-re_lastflower

    Pwn-ruin 用几个词来概括下漏洞原理:Arm+heap overflow(house of force)+dl-resolve Info leak: 在printf key8时,泄漏堆上地址(s ...

  4. IE下全局对象报 脚本错误提示“对象不支持此属性或方法”解决方案

    原来是IE会把页面中的元素id可以直接当变量名一样使用,但是这个id变量不能被赋值. 例如: <body id='body'> <script type="text/jav ...

  5. UVA 10410 Tree Reconstruction

    题意: 给定一个树的BFS和DFS,求这棵树. 分析: 拿dfs的序列,分成若干段,每一段相当一个子树,这样就可以利用bfs的序列去将dfs的序列分段,然后利用一个队列去存放每一段,不断求出子树即可. ...

  6. Sql遍历数据库

    Sql遍历数据库 set nocount on ) ) ) set @str='ad' Declare cur_Depart Cursor For select name,id from syscol ...

  7. html form表单提交数据并后台获取

    前台: HTML的代码:(关键是要在form里设置enctype="multipart/form-data",这样才能在提交表单时,将文件以二进制流的形式传输到服务器) <h ...

  8. Hibernate工作原理及为什么要用?(转http://www.cnblogs.com/javaNewegg/archive/2011/08/28/2156521.html)

    原理:1.通过Configuration().configure();读取并解析hibernate.cfg.xml配置文件2.由hibernate.cfg.xml中的<mapping resou ...

  9. HDU 1328 IBM Minus One

    IBM Minus One Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)Tot ...

  10. file_get_contents()的另一种使用方法

    今天在网上看到一篇挺不错的文章,拿过来保存学习一下.本文源地址为:http://www.kuitao8.com/20140727/2867.shtml $data = file_get_content ...