精华内容
下载资源
问答
  • 通过freemarker 的word xml生成了word文件,现在想在下载的时候通过把模板获得的二进制流转变成html字符串再成然后变成pdf下载出来
  • 二进制XML存储方案

    2008-09-25 09:48:50
    二进制XML存储方案BinXML实现方法 BinXML是我个人杜撰出来的名字,不知道是否合适,也不知道是否已存在类似的解决方案。在vcer.net上我前一段时间的这个BinXML方案贡献出来,希望能够与广大vcer分享。 当时问题的...
  • 上一篇文件上传【点击跳转】,是路径等文件信息存进log_file临时表,内容二进制存入数据库Test表,这种逻辑是在调用数据库表Test内容展示时,判断文件为word(转换成pdf)还是pdf(直接展示)。 上一篇链接:链接地址...

    上一篇文件上传,是将路径等文件信息存进log_file临时表,内容二进制存入数据库Test表,这种逻辑是在上传文件到数据库的同时,将word转成pdf,内容以二进制存test表。页面预览调用的是test表的内容。
    上一篇链接:链接地址。
    下面进一步优化:
    具体逻辑:删除原数据表Test,路径等文件信息依旧存log_file表。文件预览时,判断文件类型,如果为word类型,进行转换pdf展示;反之直接展示文件。
    word类型条件满足后,进一步判断文件是否已经转换过(判断依据是根据路径下文件名查找相同文件名的pdf文件是否存在),如果同名的pdf文件存在,表示已经转换过,直接展示;如果不存在,word转换pdf,再展示。

    代码如下:

    public void world(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse) throws IOException {
            List<LogFile> files = terminalServiceImpl.world();
            //用作实例展示,在这取得是数据库第二条信息:以word文件展示。
            String path = files.get(1).getFilePath();
            String filename=files.get(1).getFileName();
    
            //1.根据文件后缀获取文件类型
            File wordName=new File(filename);
            String fileName=wordName.getName();
            String fileTyle=fileName.substring(fileName.lastIndexOf("."),fileName.length());
            logger.info("------文件后缀名------"+fileTyle);
    
            //如果文件类型为word,需要先转换成pdf
            if(fileTyle.equals(".doc")||fileTyle.equals(".docx")){
                    //1.判断文件是否已经转换pdf,文件是否存在:文件前缀+.pdf(word是否已经转换过pdf),如果存在直接展示pdf
                    File fileOne = new File(path);
                    String caselsh = filename.substring(0,filename.lastIndexOf("."));
                    logger.info("------pdf文件名字------"+caselsh+"pdf.pdf");
    //                File fileIf = new File(fileOne+"\\" + caselsh+".pdf");
                    String filePath=(fileOne+"\\" + caselsh+"pdf.pdf");
                    File fileIf=new File(filePath);
                    if(!fileIf.exists()){
                        String pdfFilePath = OpenOfficeUtil.wordToPDF(path,filename);
                        System.err.println(pdfFilePath);
                        FileInputStream fileInputStream = new FileInputStream(pdfFilePath);
                        byte[] content = new byte[fileInputStream.available()];
                        fileInputStream.read(content);
                        fileInputStream.close();
                        ServletOutputStream servletOutputStream = httpServletResponse.getOutputStream();
                        if (servletOutputStream != null && content != null){
                            httpServletResponse.setContentType("application/pdf");
                            httpServletResponse.setContentLength(content.length);
                            httpServletResponse.setHeader("Expires","0");
                            httpServletResponse.setHeader("Cache-Control","must-revalidate,post-check=0,pre-check=0");
                            httpServletResponse.setHeader("Pragma","public");
                            servletOutputStream.write(content);
                            servletOutputStream.flush();
                            servletOutputStream.close();
                        }
                    }else{
                        File file3 = new File(filePath);
                        //获取pdf文件路径,内容做展示
                        byte[] resultE = new byte[(int) file3.length()];
                        FileInputStream fis = new FileInputStream(file3);
                        fis.read(resultE); //read file into bytes[]
                        fis.close();
                        ServletOutputStream servletOutputStream = httpServletResponse.getOutputStream();
                        if (servletOutputStream != null && resultE != null){
                            httpServletResponse.setContentType("application/pdf");
                            httpServletResponse.setContentLength(resultE.length);
                            httpServletResponse.setHeader("Expires","0");
                            httpServletResponse.setHeader("Cache-Control","must-revalidate,post-check=0,pre-check=0");
                            httpServletResponse.setHeader("Pragma","public");
                            servletOutputStream.write(resultE);
                            servletOutputStream.flush();
                            servletOutputStream.close();
                        }
                }
            }else{
                File file = new File(path);
                File file2 = new File(file+"\\" + filename);
                //获取pdf文件路径,内容做展示
                byte[] result = new byte[(int) file2.length()];
                FileInputStream fis = new FileInputStream(file2);
                fis.read(result); //read file into bytes[]
                fis.close();
                ServletOutputStream servletOutputStream = httpServletResponse.getOutputStream();
                if (servletOutputStream != null && result != null){
                    httpServletResponse.setContentType("application/pdf");
                    httpServletResponse.setContentLength(result.length);
                    httpServletResponse.setHeader("Expires","0");
                    httpServletResponse.setHeader("Cache-Control","must-revalidate,post-check=0,pre-check=0");
                    httpServletResponse.setHeader("Pragma","public");
                    servletOutputStream.write(result);
                    servletOutputStream.flush();
                    servletOutputStream.close();
                }
            }
       }
    
    展开全文
  • 创建一个记事本,并其后缀名改为.java 打开编译写入如下代码: public class Test{ public static void main(String[] args) { System.out.println(“Hello, world!”); } } 然后在命令行中输入javac Test....

    1.Hello Word程序入门

    1. 创建一个记事本,并将其后缀名改为.java
    2. 打开编译写入如下代码:

    public class Test{
    public static void main(String[] args) {
    System.out.println(“Hello, world!”);
    }
    }
    然后在命令行中输入javac Test.java 和 java Test

    2.进制的转换

    1. 进制转换:十进制,二进制,八进制,十六进制(0-9A-F)
    2. 十转二:除以2反向取余直到为0

      (2)二转十:用二进制的每一个乘以2的n次方。

    (3)十转八:除八取余

    (4)八转二:三位转

    (4)十六和二:四位转

    3.关键字

    1. 如果使用关键字作为标识符,编译器能提示错误。goto 是java的保留关键字,意思是java并没有使用goto,以后是否使用未定。

    4.标示符

    1. 标识符由26个英文字符大小写(a~zA~Z)、数字(0~9)、下划线(_)和美元符号($)组成。
    2. 不能以数字开头,不能是关键字
    3. 严格区分大小写
    4. 标识符的可以为任意长度

    4.1. 命名规范

    包名
    

    多个单词组成时所有字母小写(例:package com.itcast)
    类名和接口
    多个单词组成时所有单词的首字母大写(例:HelloWorld)
    变量名和函数名
    多个单词组成时第一个单词首字母小写,其他单词首字母大写(例:lastAccessTime、getTime)。
    常量名
    多个单词组成时,字母全部大写,多个单词之间使用_分隔(例:INTEGER_CACHE)

    5.注释

    1. 多行注释:/**/
    2. 单行注释://
    3. 文档注释:/* /

    6.变量

    1. 类型 byte,short,int,long,float,double,char,boolean。
    2. 在java变量的初始化一般要先申明后赋值; 基本数据类型一般在栈区域,引用数据类型分为栈区域 和堆区域
    展开全文
  • java后台将二进制转换成16进制 ``` /** * 将二进制转换成16进制 * @method parseByte2HexStr * @param buf * @return * @throws * @since v1.0 */ public static String parseByte2HexStr(byte ...
  • 本文主要介绍如何使用ES插件将word/pdf等文档导入ES中以及如何使用JAVA API操作写入读取信息 Ingest Attachment Processor Plugin插件允许Elasticsearch通过使用Apache文本提取库Tika提取通用格式(例如PPT,XLS...

    本文主要介绍如何使用ES插件将word/pdf等文档导入ES中以及如何使用JAVA API操作写入读取信息

     

    Ingest Attachment Processor Plugin插件允许Elasticsearch通过使用Apache文本提取库Tika提取通用格式(例如PPT,XLS和PDF)的文件附件。

    源字段必须是base64编码的二进制。如果不想增加在base64之间来回转换的开销,则可以使用CBOR格式而不是JSON,并将字段指定为字节数组而不是字符串表示形式。然后,处理器将跳过base64解码。

    安装

    可以使用插件管理器安装此插件:

    sudo bin/elasticsearch-plugin install ingest-attachment

    该插件必须安装在群集中的每个节点上,并且每个节点必须在安装后重新启动。

    可从 https://artifacts.elastic.co/downloads/elasticsearch-plugins/ingest-attachment/ingest-attachment-7.4.2.zip下载此插件以进行脱机安装

    删除

    可以使用以下命令删除该插件:

    sudo bin/elasticsearch-plugin remove ingest-attachment

    在删除插件之前,必须先停止该节点。

     

    创建一个名称为attachment的管道,后面我们在操作文档的时候,需要使用到这个名称

    PUT _ingest/pipeline/attachment
    {
      "description" : "Extract attachment information",
      "processors" : [
        {
          "attachment" : {
            "field" : "data"
          }
        }
      ]
    }

    PUT attachment_index/_doc/1?pipeline=attachment
    {
      "data": "e1xydGYxXGFuc2kNCkxvcmVtIGlwc3VtIGRvbG9yIHNpdCBhbWV0DQpccGFyIH0="
    }


    GET attachment_index/_doc/1

     

    JAVA代码如下:

    package com.start.es;

    import java.io.ByteArrayOutputStream;
    import java.io.File;
    import java.io.FileInputStream;
    import java.io.IOException;
    import java.io.InputStream;
    import java.net.HttpURLConnection;
    import java.net.URL;
    import java.util.HashMap;
    import java.util.Map;
    import org.apache.http.HttpHost;
    import org.apache.http.client.config.RequestConfig;
    import org.apache.http.impl.nio.client.HttpAsyncClientBuilder;
    import org.apache.http.impl.nio.reactor.IOReactorConfig;
    import org.elasticsearch.action.index.IndexRequest;
    import org.elasticsearch.action.index.IndexResponse;
    import org.elasticsearch.client.RequestOptions;
    import org.elasticsearch.client.RestClient;
    import org.elasticsearch.client.RestClientBuilder;
    import org.elasticsearch.client.RestHighLevelClient;
    import sun.misc.BASE64Encoder;


    /**
     * 
     * @author hsn
     * 
     *  实现DOC/PDF/TXT 导入到ES
     *
     */
    @SuppressWarnings("restriction")
    public class Es7TestAttachment {
        public static void main(String[] args) throws IOException {
            
            RestClientBuilder restClientBuilder = RestClient.builder(new HttpHost("127.0.0.1", 9200))
                    .setRequestConfigCallback(new RestClientBuilder.RequestConfigCallback() {
                        @Override
                        public RequestConfig.Builder customizeRequestConfig(RequestConfig.Builder requestConfigBuilder) {
                            return requestConfigBuilder.setConnectTimeout(5000) // 连接超时(默认为1秒)
                                    .setSocketTimeout(60000);// 套接字超时(默认为30秒)
                        }
                    })
                    // .setMaxRetryTimeoutMillis(60000)//调整最大重试超时时间(默认为30秒)
                    .setHttpClientConfigCallback(new RestClientBuilder.HttpClientConfigCallback() {
                        @Override
                        public HttpAsyncClientBuilder customizeHttpClient(HttpAsyncClientBuilder httpClientBuilder) {
                            return httpClientBuilder
                                    .setDefaultIOReactorConfig(IOReactorConfig.custom().setIoThreadCount(1).build());// 线程数
                        }
                    });
            RestHighLevelClient client = new RestHighLevelClient(restClientBuilder);

            // String base64Contentpath = pdfToBase641("d:\\TEST.pdf");
            String base64Contentpath = fileDocToBase64("E:\\新建 DOC 文档.doc");

            // base64Contentpath =
            // "e1xydGYxXGFuc2kNCkxvcmVtIGlwc3VtIGRvbG9yIHNpdCBhbWV0DQpccGFyIH0=";

            Map<String, Object> jsonMap = new HashMap<>();
            jsonMap.put("data", base64Contentpath);
            IndexRequest request = new IndexRequest("attachment_index").setPipeline("attachment") 
                    .id("9").source(jsonMap);
            IndexResponse indexResponse = client.index(request, RequestOptions.DEFAULT);

            client.close();
        }

        
        @SuppressWarnings("restriction")
        public static String UrlDocToBase64(String contentpath) throws IOException {
            InputStream is = null;
            String url = contentpath;
            URL url2 = new URL(url);
            HttpURLConnection conn = (HttpURLConnection) url2.openConnection();
            conn.setDoInput(true);
            conn.connect();
            is = conn.getInputStream();

            byte[] data = null;
            
            try {
                ByteArrayOutputStream swapStream = new ByteArrayOutputStream();
                byte[] buff = new byte[100];
                int rc = 0;
                while ((rc = is.read(buff, 0, 100)) > 0) {
                    swapStream.write(buff, 0, rc);
                }
                data = swapStream.toByteArray();
            } catch (IOException e) {
                e.printStackTrace();
            } finally {
                if (is != null) {
                    try {
                        is.close();
                    } catch (IOException e) {
                        e.printStackTrace();
                    }
                }
            }
            return new BASE64Encoder().encode(data).replace("\n", "").replace("\r", "");
        }

        @SuppressWarnings("restriction")
        public static String fileDocToBase64(String contentpath) throws IOException {
            InputStream is = null;
            String url = contentpath;
            File file = new File(contentpath);
            is = new FileInputStream(file);

            byte[] data = null;

            try {
                ByteArrayOutputStream swapStream = new ByteArrayOutputStream();
                byte[] buff = new byte[100];
                int rc = 0;
                while ((rc = is.read(buff, 0, 100)) > 0) {
                    swapStream.write(buff, 0, rc);
                }
                data = swapStream.toByteArray();
            } catch (IOException e) {
                e.printStackTrace();
            } finally {
                if (is != null) {
                    try {
                        is.close();
                    } catch (IOException e) {
                        e.printStackTrace();
                    }
                }
            }
            return new BASE64Encoder().encode(data).replace("\n", "").replace("\r", "");
        }

    }
     

     

    Attachment options

    Name Required Default Description

    field

    yes

    -

    The field to get the base64 encoded field from

    target_field

    no

    attachment

    The field that will hold the attachment information

    indexed_chars

    no

    100000

    The number of chars being used for extraction to prevent huge fields. Use -1 for no limit.

    indexed_chars_field

    no

    null

    Field name from which you can overwrite the number of chars being used for extraction. See indexed_chars.

    properties

    no

    all properties

     Array of properties to select to be stored. Can be contenttitlenameauthorkeywordsdatecontent_typecontent_lengthlanguage

    ignore_missing

    no

    false

    If true and field does not exist, the processor quietly exits without modifying the document

     

    如果一次要插入多篇文档,请参考:https://www.elastic.co/guide/en/elasticsearch/plugins/7.4/ingest-attachment-with-arrays.html

    更多代码请参考:https://github.com/hsn999/Elasticsearch_7_springboot_demo 

     

     

     

     

    展开全文
  • JAVA上百实例源码以及开源项目

    千次下载 热门讨论 2016-01-03 17:37:40
     Java二进制IO类与文件复制操作实例,好像是一本书的例子,源代码有的是独立运行的,与同目录下的其它代码文件互不联系,这些代码面向初级、中级Java程序员。 Java访问权限控制源代码 1个目标文件 摘要:Java源码,...
  • java开源包1

    千次下载 热门讨论 2013-06-28 09:14:34
    Blister是一个用于操作苹果二进制PList文件格式的Java开源类库(可用于发送数据给iOS应用程序)。 重复文件检查工具 FindDup.tar FindDup 是一个简单易用的工具,用来检查计算机上重复的文件。 OpenID的Java客户端...
  • java开源包12

    热门讨论 2013-06-28 10:14:45
    Blister是一个用于操作苹果二进制PList文件格式的Java开源类库(可用于发送数据给iOS应用程序)。 重复文件检查工具 FindDup.tar FindDup 是一个简单易用的工具,用来检查计算机上重复的文件。 OpenID的Java客户端...
  • Java二进制IO类与文件复制操作实例 16个目标文件 内容索引:Java源码,初学实例,二进制,文件复制 Java二进制IO类与文件复制操作实例,好像是一本书的例子,源代码有的是独立运行的,与同目录下的其它代码文件互不联系...
  • Java资源包01

    2016-08-31 09:16:25
    Blister是一个用于操作苹果二进制PList文件格式的Java开源类库(可用于发送数据给iOS应用程序)。 重复文件检查工具 FindDup.tar FindDup 是一个简单易用的工具,用来检查计算机上重复的文件。 OpenID的Java客户端...
  • java开源包101

    2016-07-13 10:11:08
    Blister是一个用于操作苹果二进制PList文件格式的Java开源类库(可用于发送数据给iOS应用程序)。 重复文件检查工具 FindDup.tar FindDup 是一个简单易用的工具,用来检查计算机上重复的文件。 OpenID的Java客户端...
  • java开源包11

    热门讨论 2013-06-28 10:10:38
    Blister是一个用于操作苹果二进制PList文件格式的Java开源类库(可用于发送数据给iOS应用程序)。 重复文件检查工具 FindDup.tar FindDup 是一个简单易用的工具,用来检查计算机上重复的文件。 OpenID的Java客户端...
  • java开源包2

    热门讨论 2013-06-28 09:17:39
    Blister是一个用于操作苹果二进制PList文件格式的Java开源类库(可用于发送数据给iOS应用程序)。 重复文件检查工具 FindDup.tar FindDup 是一个简单易用的工具,用来检查计算机上重复的文件。 OpenID的Java客户端...
  • java开源包3

    热门讨论 2013-06-28 09:20:52
    Blister是一个用于操作苹果二进制PList文件格式的Java开源类库(可用于发送数据给iOS应用程序)。 重复文件检查工具 FindDup.tar FindDup 是一个简单易用的工具,用来检查计算机上重复的文件。 OpenID的Java客户端...
  • java开源包6

    热门讨论 2013-06-28 09:48:32
    Blister是一个用于操作苹果二进制PList文件格式的Java开源类库(可用于发送数据给iOS应用程序)。 重复文件检查工具 FindDup.tar FindDup 是一个简单易用的工具,用来检查计算机上重复的文件。 OpenID的Java客户端...
  • java开源包5

    热门讨论 2013-06-28 09:38:46
    Blister是一个用于操作苹果二进制PList文件格式的Java开源类库(可用于发送数据给iOS应用程序)。 重复文件检查工具 FindDup.tar FindDup 是一个简单易用的工具,用来检查计算机上重复的文件。 OpenID的Java客户端...
  • java开源包10

    热门讨论 2013-06-28 10:06:40
    Blister是一个用于操作苹果二进制PList文件格式的Java开源类库(可用于发送数据给iOS应用程序)。 重复文件检查工具 FindDup.tar FindDup 是一个简单易用的工具,用来检查计算机上重复的文件。 OpenID的Java客户端...
  • java开源包4

    热门讨论 2013-06-28 09:26:54
    Blister是一个用于操作苹果二进制PList文件格式的Java开源类库(可用于发送数据给iOS应用程序)。 重复文件检查工具 FindDup.tar FindDup 是一个简单易用的工具,用来检查计算机上重复的文件。 OpenID的Java客户端...
  • java开源包8

    热门讨论 2013-06-28 09:55:26
    Blister是一个用于操作苹果二进制PList文件格式的Java开源类库(可用于发送数据给iOS应用程序)。 重复文件检查工具 FindDup.tar FindDup 是一个简单易用的工具,用来检查计算机上重复的文件。 OpenID的Java客户端...
  • java开源包9

    热门讨论 2013-06-28 09:58:55
    Blister是一个用于操作苹果二进制PList文件格式的Java开源类库(可用于发送数据给iOS应用程序)。 重复文件检查工具 FindDup.tar FindDup 是一个简单易用的工具,用来检查计算机上重复的文件。 OpenID的Java客户端...
  • java开源包7

    热门讨论 2013-06-28 09:52:16
    Blister是一个用于操作苹果二进制PList文件格式的Java开源类库(可用于发送数据给iOS应用程序)。 重复文件检查工具 FindDup.tar FindDup 是一个简单易用的工具,用来检查计算机上重复的文件。 OpenID的Java客户端...
  • java范例开发大全

    2013-03-08 20:06:54
    实例13 Java中的进制与移位运算符 22 第3章 条件控制语句(教学视频:75分钟) 26 3.1 if控制语句 26 实例14 判断输入的年份是否为闰年 26 实例15 抽奖活动 27 3.2 for语句 28 实例16 小九九乘法表 28 实例17 如何列...
  • java范例开发大全源代码

    热门讨论 2011-10-30 23:31:51
     实例13 Java中的进制与移位运算符 22  第3章 条件控制语句(教学视频:75分钟) 26  3.1 if控制语句 26  实例14 判断输入的年份是否为闰年 26  实例15 抽奖活动 27  3.2 for语句 28  实例16 ...
  • Java范例开发大全 (源程序)

    热门讨论 2011-04-27 07:47:22
     实例13 Java中的进制与移位运算符 22  第3章 条件控制语句(教学视频:75分钟) 26  3.1 if控制语句 26  实例14 判断输入的年份是否为闰年 26  实例15 抽奖活动 27  3.2 for语句 28  实例16 小九九...
  • java范例开发大全(pdf&源码)

    热门讨论 2013-07-04 13:04:40
    实例13 Java中的进制与移位运算符 22 第3章 条件控制语句(教学视频:75分钟) 26 3.1 if控制语句 26 实例14 判断输入的年份是否为闰年 26 实例15 抽奖活动 27 3.2 for语句 28 实例16 小九九乘法表 28 实例17 如何列...
  • Java范例开发大全(全书源程序)

    热门讨论 2013-04-05 11:50:26
    实例13 Java中的进制与移位运算符 22 第3章 条件控制语句(教学视频:75分钟) 26 3.1 if控制语句 26 实例14 判断输入的年份是否为闰年 26 实例15 抽奖活动 27 3.2 for语句 28 实例16 小九九乘法表 28 实例17...
  • 以前写了一个java的正规表达式的java工具类,分享一下,有用到的欢迎下载使用。 如果你有常用的定义好的,且测试通过的正规表达式,欢迎跟贴,也让我享用一下 . 类中用到了 jakarta-oro-2.0.jar 包,请大家自己在 ...
  • 介绍了应用Java Web进行程序开发的各个方面的知识和技巧,主要包括Java Web编程基础、文件操作管理、图形图像与多媒体技术、窗体应用技术、JSP操作Word与Excel等。全书分6篇23章,共计600个实例和600个经验技巧。每...

空空如也

空空如也

1 2 3
收藏数 58
精华内容 23
关键字:

java将word转二进制

java 订阅