VSD文档转换成PDF并不是很难的事情,但在很多地方教你制作百度文库这样类似在线文档浏览器的时候,并没有告诉你怎么将VSD文档转换成SWF文档,其实VSD文档并不能直接转换成SWF文档,不管是java还是C#都没有相应的包或接口,所以必须先将VSD文档转换成PDF,然后PDF2SWF,这样就可以了。

那java怎么实现VSD文档转换PDF文档呢?java也没有包可以实现,不过可以利用Microsoft.Office.Interop.Visio.dll,采用C#做一个控制台程序。

代码如下:

using System;
using System.Collections.Generic;
using System.Text;
using Visio = Microsoft.Office.Interop.Visio;namespace VsdToDoc
{class Program{static void Main(string[] args){String openPath = args[0];String savePath = args[1];Exec(openPath, savePath);}public static void Exec(String openPath, String savePath){Visio.ApplicationClass vsdApp = null;Visio.Document vsdDoc = null;try{vsdApp = new Visio.ApplicationClass();vsdApp.Visible = false;vsdDoc = vsdApp.Documents.Open(openPath.ToString());vsdDoc.ExportAsFixedFormat(Visio.VisFixedFormatTypes.visFixedFormatPDF,savePath.ToString(), Visio.VisDocExIntent.visDocExIntentScreen,Visio.VisPrintOutRange.visPrintAll, 1, vsdDoc.Pages.Count, false, true,true, true, true, System.Reflection.Missing.Value);Console.Write("vsd to pdf OK!!!");}catch (Exception e){Console.Write(e.Message);Console.Write("vsd to pdf error !");}finally{if (vsdDoc != null){vsdDoc.Close();vsdDoc = null;}if (vsdApp != null){vsdApp.Quit();vsdApp = null;}}}}
}

附送一个java代码,帮助你做测试


import java.awt.Image;
import java.awt.image.BufferedImage;
import java.io.BufferedInputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.net.ConnectException;import javax.imageio.ImageIO;
import javax.swing.JOptionPane;import org.slf4j.Logger;
import org.slf4j.LoggerFactory;import com.artofsolving.jodconverter.DocumentConverter;
import com.artofsolving.jodconverter.openoffice.connection.OpenOfficeConnection;
import com.artofsolving.jodconverter.openoffice.connection.SocketOpenOfficeConnection;
import com.artofsolving.jodconverter.openoffice.converter.OpenOfficeDocumentConverter;
import com.sun.image.codec.jpeg.ImageFormatException;
import com.sun.image.codec.jpeg.JPEGCodec;
import com.sun.image.codec.jpeg.JPEGImageEncoder;public class ReaderConverter {private String sourceFile;private String destinationFile;public String swfToolExePath = "";public String vsdToolExePath = "";public int openOfficePort = 0;public String openOfficeExePaht = "";private Process openOfficeServer = null;public static final Logger logger = LoggerFactory.getLogger(ReaderConverter.class);public ReaderConverter() {super();}public ReaderConverter(String swfToolExePath,String vsdToolExePath,String openOfficeExePaht,int openOfficePort) {super();this.swfToolExePath = swfToolExePath;this.vsdToolExePath = vsdToolExePath;this.openOfficeExePaht = openOfficeExePaht;this.openOfficePort = openOfficePort;}/*** 启动OpenOffice服务* * @return*/private boolean openOffice() {if (checkOpenOffice()) {return true;} else {openOfficeServer = null;String cmd = openOfficeExePaht+ " -headless -accept=\"socket,host=127.0.0.1,port=8100;urp;\" -nofirststartwizard";try {openOfficeServer = Runtime.getRuntime().exec(cmd);// 调用waitFor方法,是为了阻塞当前进程,直到cmd执行完logger.info("OpenOfficeServer start....");return checkOpenOffice();} catch (Exception e) {// e.printStackTrace();logger.info("OpenOfficeServer start failed!!!");return false;}}}private void stopOffice() {if(openOfficeServer != null){openOfficeServer.destroy();}logger.info("OpenOfficeServer stop....");}/*** 检查OpenOffice是否已经启动* * @return*/private boolean checkOpenOffice() {OpenOfficeConnection connection = new SocketOpenOfficeConnection(openOfficePort);try {connection.connect();} catch (ConnectException cex) {// cex.printStackTrace();connection = null;logger.info("OpenOfficeServer is stop....");} finally {// close the connectionif (connection != null) {connection.disconnect();connection = null;logger.info("OpenOfficeServer is running....");return true;}}return false;}/*** @param sourceFile*            带转换的PDF源文件地址* @param destinationFile*            转换后的SWF目标文件地址* @param exePath*            SWFTOOL的地址* @throws IOException*/private boolean pdf2swf() throws IOException {logger.info("start pdf2swf, sourceFile: " + sourceFile);Process pro = null;if (isWindowsSystem()) {// 如果是windows系统// 命令行命令String cmd = swfToolExePath + "/pdf2swf.exe" + " \"" + sourceFile+ "\" -o \"" + destinationFile + "\"  -f -T 9 ";// Runtime执行后返回创建的进程对象pro = Runtime.getRuntime().exec(cmd);} else {// 如果是linux系统,路径不能有空格,而且一定不能用双引号,否则无法创建进程String[] cmd = new String[3];cmd[0] = swfToolExePath;cmd[1] = sourceFile;cmd[2] = destinationFile;// Runtime执行后返回创建的进程对象pro = Runtime.getRuntime().exec(cmd);}try {// 调用waitFor方法,是为了阻塞当前进程,直到cmd执行完loadStream(pro.getInputStream());loadStream(pro.getErrorStream());// System.out.print(loadStream(pro.getInputStream()));// System.err.print(loadStream(pro.getErrorStream()));pro.waitFor();} catch (InterruptedException e) {e.printStackTrace();}return (new File(destinationFile)).exists();}private boolean png2swf() throws IOException {logger.info("start png2swf, sourceFile: " + sourceFile);Process pro = null;if (isWindowsSystem()) {// 如果是windows系统// 命令行命令String cmd = swfToolExePath + "/png2swf.exe" + " \"" + sourceFile+ "\" -o \"" + destinationFile + "\"  -T 9 ";// Runtime执行后返回创建的进程对象pro = Runtime.getRuntime().exec(cmd);} else {// 如果是linux系统,路径不能有空格,而且一定不能用双引号,否则无法创建进程String[] cmd = new String[3];cmd[0] = swfToolExePath;cmd[1] = sourceFile;cmd[2] = destinationFile;// Runtime执行后返回创建的进程对象pro = Runtime.getRuntime().exec(cmd);}try {// 调用waitFor方法,是为了阻塞当前进程,直到cmd执行完loadStream(pro.getInputStream());loadStream(pro.getErrorStream());System.out.print(loadStream(pro.getInputStream()));System.err.print(loadStream(pro.getErrorStream()));pro.waitFor();} catch (InterruptedException e) {e.printStackTrace();}return (new File(destinationFile)).exists();}private boolean gif2swf() throws IOException {logger.info("start gif2swf, sourceFile: " + sourceFile);Process pro = null;if (isWindowsSystem()) {// 如果是windows系统// 命令行命令String cmd = swfToolExePath + "/gif2swf.exe" + " \"" + sourceFile+ "\" -o \"" + destinationFile + "\" ";// Runtime执行后返回创建的进程对象pro = Runtime.getRuntime().exec(cmd);} else {// 如果是linux系统,路径不能有空格,而且一定不能用双引号,否则无法创建进程String[] cmd = new String[3];cmd[0] = swfToolExePath;cmd[1] = sourceFile;cmd[2] = destinationFile;// Runtime执行后返回创建的进程对象pro = Runtime.getRuntime().exec(cmd);}try {// 调用waitFor方法,是为了阻塞当前进程,直到cmd执行完loadStream(pro.getInputStream());loadStream(pro.getErrorStream());System.out.print(loadStream(pro.getInputStream()));System.err.print(loadStream(pro.getErrorStream()));pro.waitFor();} catch (InterruptedException e) {e.printStackTrace();}return (new File(destinationFile)).exists();}private boolean jpg2swf() throws IOException {logger.info("start jpg2swf, sourceFile: " + sourceFile);Process pro = null;if (isWindowsSystem()) {// 如果是windows系统// 命令行命令String cmd = swfToolExePath + "/jpeg2swf.exe" + " \"" + sourceFile+ "\" -o \"" + destinationFile + "\"   -T 9 ";// Runtime执行后返回创建的进程对象pro = Runtime.getRuntime().exec(cmd);} else {// 如果是linux系统,路径不能有空格,而且一定不能用双引号,否则无法创建进程String[] cmd = new String[3];cmd[0] = swfToolExePath;cmd[1] = sourceFile;cmd[2] = destinationFile;// Runtime执行后返回创建的进程对象pro = Runtime.getRuntime().exec(cmd);}try {// 调用waitFor方法,是为了阻塞当前进程,直到cmd执行完loadStream(pro.getInputStream());loadStream(pro.getErrorStream());System.out.print(loadStream(pro.getInputStream()));System.err.print(loadStream(pro.getErrorStream()));pro.waitFor();} catch (InterruptedException e) {e.printStackTrace();}return (new File(destinationFile)).exists();}private boolean bmp2swf() throws IOException {logger.info("start bmp2swf, sourceFile: " + sourceFile);String JPGFile = "";// 文件路径String filePath = destinationFile.substring(0,destinationFile.lastIndexOf("/"));// 文件名,不带后缀String fileName = destinationFile.substring((filePath.length() + 1),destinationFile.lastIndexOf("."));JPGFile = filePath + "/" + fileName + ".jpg";//转换BMP2JPGBMPToJPG(sourceFile, JPGFile);sourceFile = JPGFile;Process pro = null;if (isWindowsSystem()) {// 如果是windows系统// 命令行命令String cmd = swfToolExePath + "/jpeg2swf.exe" + " \"" + sourceFile+ "\" -o \"" + destinationFile + "\"   -T 9 ";// Runtime执行后返回创建的进程对象pro = Runtime.getRuntime().exec(cmd);} else {// 如果是linux系统,路径不能有空格,而且一定不能用双引号,否则无法创建进程String[] cmd = new String[3];cmd[0] = swfToolExePath;cmd[1] = sourceFile;cmd[2] = destinationFile;// Runtime执行后返回创建的进程对象pro = Runtime.getRuntime().exec(cmd);}try {// 调用waitFor方法,是为了阻塞当前进程,直到cmd执行完loadStream(pro.getInputStream());loadStream(pro.getErrorStream());System.out.print(loadStream(pro.getInputStream()));System.err.print(loadStream(pro.getErrorStream()));pro.waitFor();} catch (InterruptedException e) {e.printStackTrace();}// 删除临时的jpg文件,沉睡1秒钟,保证临时文件不被占用boolean deleteOK =  (new File(sourceFile)).delete();logger.info("delete temp file: " + sourceFile + " result is "+deleteOK);return (new File(destinationFile)).exists();}private boolean vsd2pdf() throws IOException{logger.info("start vsd2pdf, sourceFile: " + sourceFile);String PDFFile = "";// 文件路径String filePath = destinationFile.substring(0,destinationFile.lastIndexOf("/"));// 文件名,不带后缀String fileName = destinationFile.substring((filePath.length() + 1),destinationFile.lastIndexOf("."));PDFFile = filePath + "/" + fileName + ".pdf";Process pro = null;if (isWindowsSystem()) {// 如果是windows系统// 命令行命令String cmd = vsdToolExePath + "/VsdToDoc.exe" + " \"" + sourceFile+ "\" \"" + PDFFile + "\"";// Runtime执行后返回创建的进程对象pro = Runtime.getRuntime().exec(cmd);} try {// 调用waitFor方法,是为了阻塞当前进程,直到cmd执行完loadStream(pro.getInputStream());loadStream(pro.getErrorStream());System.out.print(loadStream(pro.getInputStream()));System.err.print(loadStream(pro.getErrorStream()));pro.waitFor();} catch (InterruptedException e) {e.printStackTrace();}sourceFile = PDFFile;return (new File(sourceFile)).exists();}private boolean doc2pdf() {logger.info("start doc2pdf, sourceFile: " + sourceFile);String PDFFile = "";// 文件路径String filePath = destinationFile.substring(0,destinationFile.lastIndexOf("/"));// 文件名,不带后缀String fileName = destinationFile.substring((filePath.length() + 1),destinationFile.lastIndexOf("."));PDFFile = filePath + "/" + fileName + ".pdf";// 处理txt、xml文件格式的特殊代码,将txt的后缀名改为odt. ,处理WPS的文件则 将 文件后缀名改为 对应Office的文件的后缀名,Boolean isNeedCreateTempFile = (isTXTFile(sourceFile) || isWPSFile(sourceFile));if (isNeedCreateTempFile) {try {String tempFilePostfix = "";if (sourceFile.toLowerCase().indexOf(".txt") > 1) {tempFilePostfix = "odt";}if (sourceFile.toLowerCase().indexOf(".xml") > 1) {tempFilePostfix = "odt";}if (sourceFile.toLowerCase().indexOf(".wps") > 1) {tempFilePostfix = "docx";}if (sourceFile.toLowerCase().indexOf(".dps") > 1) {tempFilePostfix = "pptx";}if (sourceFile.toLowerCase().indexOf(".et") > 1) {tempFilePostfix = "xlsx";}copyFile(sourceFile, filePath + "/" + fileName + "."+ tempFilePostfix);sourceFile = filePath + "/" + fileName + "." + tempFilePostfix;} catch (Exception e) {e.printStackTrace();}}openOffice();OpenOfficeConnection connection = new SocketOpenOfficeConnection(8100);try {connection.connect();DocumentConverter converter = new OpenOfficeDocumentConverter(connection);converter.convert(new File(sourceFile), new File(PDFFile));} catch (ConnectException cex) {cex.printStackTrace();} finally {// close the connectionif (connection != null) {connection.disconnect();connection = null;}}stopOffice();// 删除临时的odt文件,沉睡1秒钟,保证临时文件不被占用if (isNeedCreateTempFile) {try {Thread.sleep(1000);} catch (InterruptedException e) {e.printStackTrace();}boolean deleteOK =    (new File(sourceFile)).delete();logger.info("delete temp file: " + sourceFile + " result is "+deleteOK);}sourceFile = PDFFile;return (new File(sourceFile)).exists();}/* * 转换主方法 *//*** @param sourceFile*            office file or pdf file full path read as* @param destinationFile*            swf file full path save as* @return*/public boolean conver(String sourceFile, String destinationFile) {this.sourceFile = sourceFile;this.destinationFile = destinationFile;try {// 如果已经是PDF则不需要转换if (isPDFFile(sourceFile)) {logger.info("sourceFile: " + sourceFile+ " ,is PDF file not need doc2pdf.");pdf2swf();} else if (isPNGFile(sourceFile)) {logger.info("sourceFile: " + sourceFile+ " ,is png file not need doc2pdf.");png2swf();} else if (isGIFFile(sourceFile)) {logger.info("sourceFile: " + sourceFile+ " ,is gif file not need doc2pdf.");gif2swf();} else if (isJPGFile(sourceFile)) {logger.info("sourceFile: " + sourceFile+ " ,is jpg file not need doc2pdf.");jpg2swf();} else if (isBMPFile(sourceFile)) {logger.info("sourceFile: " + sourceFile+ " ,is bmp file not need doc2pdf.");bmp2swf();} else if (isVSDFile(sourceFile)) {logger.info("sourceFile: " + sourceFile+ " ,is visio file need vsd2pdf.");if (vsd2pdf()) {pdf2swf();}// 删除临时的PDF文件(new File(this.sourceFile)).delete();}else {if (doc2pdf()) {pdf2swf();}// 删除临时的PDF文件(new File(this.sourceFile)).delete();}} catch (Exception e) {e.printStackTrace();return false;}if ((new File(destinationFile)).exists()) {logger.info("conver successful, destinationFile: "+ destinationFile);return true;} else {logger.info("conver failed, destinationFile: " + destinationFile);return false;}}public String loadStream(InputStream in) throws IOException {int ptr = 0;in = new BufferedInputStream(in);StringBuffer buffer = new StringBuffer();while ((ptr = in.read()) != -1) {buffer.append((char) ptr);}return buffer.toString();}/*** 判断是否是windows操作系统* * @return*/private boolean isWindowsSystem() {String p = System.getProperty("os.name");return p.toLowerCase().indexOf("windows") >= 0 ? true : false;}/*** 根据后缀名判断文件是否为PDF文件* * @return*/private boolean isPDFFile(String filePath) {return filePath.toLowerCase().indexOf(".pdf") > 1 ? true : false;}/*** 根据后缀名判断文件是否为WPS系列的文件* * @return*/private boolean isWPSFile(String filePath) {return (filePath.toLowerCase().indexOf(".wps") > 1|| filePath.toLowerCase().indexOf(".dps") > 1 || filePath.toLowerCase().indexOf(".et") > 1) ? true : false;}/*** 根据后缀名判断文件是否为TXT文件* * @return*/private boolean isTXTFile(String filePath) {return (filePath.toLowerCase().indexOf(".txt") > 1 || filePath.toLowerCase().indexOf(".xml") > 1) ? true : false;}/*** 根据后缀名判断文件是否为PNG文件* * @return*/private boolean isPNGFile(String filePath) {return filePath.toLowerCase().indexOf(".png") > 1 ? true : false;}/*** 根据后缀名判断文件是否为GIF文件* * @return*/private boolean isGIFFile(String filePath) {return filePath.toLowerCase().indexOf(".gif") > 1 ? true : false;}/*** 根据后缀名判断文件是否为JPG文件* * @return*/private boolean isJPGFile(String filePath) {return (filePath.toLowerCase().indexOf(".jpg") > 1 || filePath.toLowerCase().indexOf(".jpeg") > 1) ? true : false;}/*** 根据后缀名判断文件是否为BMP文件* * @return*/private boolean isBMPFile(String filePath) {return filePath.toLowerCase().indexOf(".bmp") > 1 ? true : false;}/*** 根据后缀名判断文件是否为Visio文件* * @return*/private boolean isVSDFile(String filePath) {return filePath.toLowerCase().indexOf(".vsd") > 1 ? true : false;}/*** 复制单个文件* * @param oldPath*            String 原文件路径 如:c:/fqf.txt* @param newPath*            String 复制后路径 如:f:/fqf.txt* @throws Exception*/public static void copyFile(String oldPath, String newPath)throws Exception {InputStream inStream = null;FileOutputStream fs = null;try {int bytesum = 0;int byteread = 0;File oldfile = new File(oldPath);if (oldfile.exists()) { // 文件存在时inStream = new FileInputStream(oldPath); // 读入原文件fs = new FileOutputStream(newPath);byte[] buffer = new byte[1444];while ((byteread = inStream.read(buffer)) != -1) {bytesum += byteread; // 字节数 文件大小// System.out.println(bytesum);fs.write(buffer, 0, byteread);}}} catch (Exception e) {System.out.println("复制单个文件操作出错");e.printStackTrace();throw e;} finally {if (inStream != null) {inStream.close();}if (fs != null) {fs.close();}}}/*** BMP文件转换成JPG文件* @param src* @param des*/private void BMPToJPG(String src, String des) {File file = new File(src);if (file.exists() == false) {return;}try {Image img = ImageIO.read(file);BufferedImage tag = new BufferedImage(img.getWidth(null),img.getHeight(null), BufferedImage.TYPE_INT_RGB);tag.getGraphics().drawImage(img.getScaledInstance(img.getWidth(null),img.getHeight(null), Image.SCALE_SMOOTH), 0, 0,null);FileOutputStream out = new FileOutputStream(des);JPEGImageEncoder encoder = JPEGCodec.createJPEGEncoder(out);encoder.encode(tag);out.close();} catch (IOException e) {e.printStackTrace();} catch (Exception e) {e.printStackTrace();}}/*** 测试main方法* * @param args*/public static void main(String[] args) {ReaderConverter reader = new ReaderConverter("C:/SWFTools","C:/VsdToPdf","C:/openoffice.org 3/program/soffice", 8100);reader.conver("c:/1.pptx", "c:/1.swf");reader.conver("c:/2.docx", "c:/2.swf");reader.conver("c:/3.pdf", "c:/3.swf");reader.conver("c:/4.odt", "c:/4.swf");reader.conver("c:/5.bmp", "c:/5.swf"); reader.conver("c:/6.jpg", "c:/6.swf");   reader.conver("c:/7.png", "c:/7.swf");reader.conver("c:/8.gif", "c:/8.swf");reader.conver("c:/9.vsd", "c:/9.swf");reader.conver("c:/10.txt", "c:/10.swf");reader.conver("c:/11.wps", "c:/11.swf");reader.conver("c:/12.dps", "c:/12.swf");reader.conver("c:/13.et", "c:/13.swf");reader.conver("c:/14.xml", "c:/14.swf");}}
public class BMPReader {private void BMPToJPG(String src, String des) {File file = new File(src);if (file.exists() == false) {JOptionPane.showMessageDialog(null, "文件不存在!", "提示",JOptionPane.INFORMATION_MESSAGE);return;}try {Image img = ImageIO.read(file);BufferedImage tag = new BufferedImage(img.getWidth(null),img.getHeight(null), BufferedImage.TYPE_INT_RGB);tag.getGraphics().drawImage(img.getScaledInstance(img.getWidth(null),img.getHeight(null), Image.SCALE_SMOOTH), 0, 0,null);FileOutputStream out = new FileOutputStream(des);JPEGImageEncoder encoder = JPEGCodec.createJPEGEncoder(out);encoder.encode(tag);out.close();JOptionPane.showMessageDialog(null, "转换完成!", "提示",JOptionPane.INFORMATION_MESSAGE);} catch (IOException e) {e.printStackTrace();} catch (ImageFormatException e) {e.printStackTrace();}}}

VSD2PDF源代码,帮做你做好类似百度文库的在线文档浏览器相关推荐

  1. php如何将文档转成flas,PHP_PHP实现仿百度文库,豆丁在线文档效果(word,excel,ppt转flash),本文实例讲述了PHP实现仿百度 - phpStudy...

    PHP实现仿百度文库,豆丁在线文档效果(word,excel,ppt转flash) 本文实例讲述了PHP实现仿百度文库,豆丁在线文档效果.分享给大家供大家参考,具体如下: 由于项目要实现类似百度文库的 ...

  2. 仿百度文库、豆丁文档网站源码在线文档分享系统最新版+带全套工具

    非常棒的一套在线文档分享系统源码,仿百度文库.豆丁文档网站源码,在这里完全免费提供给大家学习.在这里无需任何币就可以下载到非常多的精品源码,如果觉得好站长资源做的不错,请帮忙推荐给更多的站长朋友. 此 ...

  3. 推荐一个免费下载神器!你还在付费下载百度文库、豆丁文档吗?

    推荐一个很厉害的神器:冰点文库助手.它可以免费下载百度文库.豆丁文档.道客巴巴等各种网站几亿份文档!!!甚至大部分付费文档都可以下载!逆天了有没有!电脑下载,把需要下载的文档网址复制到软件的输入框即可 ...

  4. 百度文库里面的文档无法复制,如果要下载需要下载券,如何免费复制文档呢?

    本人按照公司领导要求,去网上找一个公司软件工程质量管理体系说明的说明书 但是 1.下载需要下载券,我又不是经常下载,开通vip不舍得 2.复制又复制不了 解决方案 1.把这个文档的名称,完完整整的输入 ...

  5. 从百度文库下载的文档无法打开解决办法

    点击解除锁定 转载于:https://www.cnblogs.com/hbhzz/p/4690496.html

  6. 大话存储pdf 百度网盘_学用系列亲身体验百度网盘内测在线文档,有遗憾也有期待...

    随着阿里系的Teambition网盘上线进入倒计时,百度网盘也终于开始发力,除了vip用户扩容11TB的豪举之外,另一个亮点就是上线了内测在线文档功能.胖胖老师也第一手获得了内测资格,今天就和大家分享 ...

  7. 大话存储pdf 百度网盘_学用系列|亲身体验百度网盘内测在线文档,有遗憾也有期待...

    随着阿里系的Teambition网盘上线进入倒计时,百度网盘也终于开始发力,除了vip用户扩容11TB的豪举之外,另一个亮点就是上线了内测在线文档功能.胖胖老师也第一手获得了内测资格,今天就和大家分享 ...

  8. linux word 转 pdf 上类似百度文库开发研究与实战

    缘起 由于项目需要开发了类似百度文库和DOCIN类似的Flash播放器读取上传文档的系统,虽然最终技术问题都得以解决,但开发的过程中走了不少弯路,浪费了不少时间,特别是FlexPaper去掉自带的Lo ...

  9. html怎么转换到百度,类似百度文库在线预览文档flash版(支持word、excel、ppt、pdf)+在线预览文档html版...

    类似百度文库在线预览文档flash版(支持word.excel.ppt.pdf)+在线预览文档html版 (1).将文档转换为html,只支持支持office文档 (2).将文档转换为flash,实现 ...

最新文章

  1. 大数据是一座孤单的小岛
  2. 腾讯天衍实验室联合微众银行研发医疗联邦学习 AI利器让脑卒中预测准确率达80%
  3. 用正则表达式判断一个二进制数是否能被3整除
  4. 可怕又可笑的看病经历
  5. Caffe学习系列(15):计算图片数据的均值
  6. Spring Boot 日志管理
  7. 经典C语言程序100例之八六
  8. VS2008如何添加 OLE/COM 对象查看器 .
  9. linux关闭沙盒模式,打开或关闭沙盒模式以禁用宏
  10. Google的电话面试
  11. 精简Linux文件路径
  12. C++ QT安装教程2021
  13. Exadata是什么?
  14. cesium 页面多 viewer 地图加载过缓解决方案
  15. json rpgmv 加密_rpg制作大师mv加密打包教程
  16. 【感悟】参加公司首届黑客马拉松有感
  17. H5+CSS+JavaScript入门学习
  18. 2020-10-19 Nvidia与vGPU
  19. Lua--棋牌游戏开发(概念性设计二
  20. C语言编程>第三周 ④ 求100之内的素数。

热门文章

  1. seurat -- 细胞注释部分
  2. 每日算法面试题,大厂特训二十八天——第二十四天(运算符)
  3. C# 爬取 在线时间 设置 Windows系统时间
  4. python 按钮点击关闭窗口
  5. 摄像头8mm可以看多远_监控摄像头的组成详解
  6. Udacity数据分析(进阶)——清洗与分析数据(Twitter数据集)
  7. jrtt 某头条网页版 _signature参数逆向
  8. mac macbook eclipse 更改字体
  9. 汇川变频器md380量产矢量源码
  10. echarts折线图填充颜色