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