2018-07-02 09:27:04 qq_35617517 阅读数 3298
  • 微服务架构实战:Swagger规范RESTFUL API文档以及Mock...

    随着微服务架构的流行,REST风格也是大势所趋。那么,什么是REST?如何规范我们的RESTFUL API 文档? 本课堂将主要基于以上两个话题进行讨论并探讨在“数字化企业云平台”的实践中如何规范RESTful文档,同时课堂中将引入API Mock的概念并讨论Mock和Doc领域的集成实现。

    7952 人正在学习 去看看 CSDN讲师

    今天在工作中遇到利用aspose doc转成pdf在linux下汉字出现小方框问题,现在讲解下解决办法。

首先在服务器上把生成的pdf下载下来,分析pdf编码:



然后在linux安装该字体


这些都试了之后发现还不是不行,就去找了下aspose源码,发现代码中还缺失了一行


 FontSettings.setFontsFolder(ClassPathUtil.getClassesPath() + "font" + File.separator, true);

  在实例化doc时需要以上代码,问题成功解决。(注:Linux上还需要安装字体,不然也会出现方框)

 

2019-08-12 15:24:44 baidu_38432732 阅读数 50
  • 微服务架构实战:Swagger规范RESTFUL API文档以及Mock...

    随着微服务架构的流行,REST风格也是大势所趋。那么,什么是REST?如何规范我们的RESTFUL API 文档? 本课堂将主要基于以上两个话题进行讨论并探讨在“数字化企业云平台”的实践中如何规范RESTful文档,同时课堂中将引入API Mock的概念并讨论Mock和Doc领域的集成实现。

    7952 人正在学习 去看看 CSDN讲师

1、下载两个包

[root@manage-host ~]# wget http://mirrors.ustc.edu.cn/tdf/libreoffice/stable/6.3.0/rpm/x86_64/LibreOffice_6.3.0_Linux_x86-64_rpm.tar.gz

2、解压

[root@manage-host ~]# tar xzvf LibreOffice_6.3.0_Linux_x86-64_rpm.tar.gz

3、安装

[root@manage-host ~]#  yum -y install cairo cups (安装依赖包)

[root@manage-host ~]# cd /root/LibreOffice_6.3.0.4_Linux_x86-64_rpm/RPMS

[root@manage-host RPMS]# yum -y install *.rpm

4、配置命令

[root@localhost ~]# ll /usr/bin/libreoffice6.3 
lrwxrwxrwx 1 root root 35 Aug 14 09:46 /usr/bin/libreoffice6.3 -> /opt/libreoffice6.3/program/soffice
[root@localhost ~]# ln -s /opt/libreoffice6.3/program/soffice /usr/bin/libreoffice

5、此时我们就可以执行切换命令

[root@manage-host ~]# libreoffice --invisible --convert-to pdf --outdir 输出目录/pdf 运营数据周汇报2019-04-01-2019-04-10.doc

此时出现乱码问题

解决办法:

yum groupinstall "fonts"

vim /etc/locale.conf (把内容改为以下内容)

LANG="zh_CN.UTF-8"

然后重启服务器,最终乱码问题解决

 

2016-06-15 19:28:15 pwtitle 阅读数 15826
  • 微服务架构实战:Swagger规范RESTFUL API文档以及Mock...

    随着微服务架构的流行,REST风格也是大势所趋。那么,什么是REST?如何规范我们的RESTFUL API 文档? 本课堂将主要基于以上两个话题进行讨论并探讨在“数字化企业云平台”的实践中如何规范RESTful文档,同时课堂中将引入API Mock的概念并讨论Mock和Doc领域的集成实现。

    7952 人正在学习 去看看 CSDN讲师

先安装libreoffice,然后使用命令

soffice --headless --invisible --convert-to pdf /tmp/abc.docx --outdir /tmp/

转换成PDF,几乎所有人都遇到


root@panda-dev:~/bin $ soffice --headless --convert-to txt:text blah.doc
/usr/lib64/libreoffice/program/soffice.bin X11 error: Can't open display:
   Set DISPLAY environment variable, use -display option
   or check permissions of your X-Server
   (See "man X" resp. "man xhost" for details)

类似的问题,网上的帮助都是说要求启用:


/usr/bin/soffice --headless --accept="socket,host=127.0.0.1,port=8100;urp;" --nofirststartwizard &


然后 export DISPLAY=:0.0,就可以解决问题,但试了N次也完全不行。


其实只需要 yum install libreoffice-headless,即可。


2019-07-18 10:32:08 weixin_42670653 阅读数 636
  • 微服务架构实战:Swagger规范RESTFUL API文档以及Mock...

    随着微服务架构的流行,REST风格也是大势所趋。那么,什么是REST?如何规范我们的RESTFUL API 文档? 本课堂将主要基于以上两个话题进行讨论并探讨在“数字化企业云平台”的实践中如何规范RESTful文档,同时课堂中将引入API Mock的概念并讨论Mock和Doc领域的集成实现。

    7952 人正在学习 去看看 CSDN讲师

概述

Linux下将word转换为PDF较为费劲,一方面是格式是否正确,另一方面是时间问题,下面简单列出几个工具,比较说明它们的用法和局限性。

1. openoffice+unoconv

2. docx-to-pdf-converter

3. xdocreport

4. aspose-words破解版

openoffice+unoconv

1. 安装

参考

https://www.cnblogs.com/goodcheap/p/7929986.html

https://jingyan.baidu.com/article/d8072ac48d8f30ec95cefdeb.html

Openoffice 安装与启动

wget https://jaist.dl.sourceforge.net/project/openofficeorg.mirror/4.1.5/binaries/zh-CN/Apache_OpenOffice_4.1.5_Linux_x86-64_install-rpm_zh-CN.tar.gz

tar -xvzf Apache_OpenOffice_4.1.5_Linux_x86-64_install-rpm_zh-CN.tar.gz

cd zh-CN/RPMS/

yum localinstall *.rpm

cd desktop-integration/

yum localinstall openoffice4.1.5-redhat-menus-4.1.5-9789.noarch.rpm

永久启动 

nohup /opt/openoffice4/program/soffice -headless -accept="socket,host=127.0.0.1,port=8100;urp;" -nofirststartwizard &

unoconv安装

git clone https://github.com/dagwieers/unoconv.git

cd unoconv/

make install

转换word的时候发现中文乱码,解决方法,将windows下C:\Windows\Fonts下的字体打包压缩上传到linux下:

unoconv支持中文:

unzip win.zip  

mv win /usr/share/fonts  

cd /usr/share/fonts/

chmod -Rf 755 win/  

//加载字体  

cd win/

mkfontscale  

mkfontdir  

fc-cache –fv  

执行指令,将word转换为pdf

unoconv -f pdf aa.docx 

2. 局限性

这种方式转换的pdf格式与word一致,但是在服务器中无法多线程,而且openoffice服务容易死

docx-to-pdf-converter

github项目:https://github.com/yeokm1/docs-to-pdf-converter

这个包作者已经不再维护了,但是有人推荐好使,于是我下载部署了下,它在转换我的word时报错,不知道什么原因。

安装

直接下载对应的jar包

java -jar doc-converter.jar -input test.doc -o output.pdf

xdocreport

github: https://github.com/opensagres/xdocreport

下载这个例子,这是一个web

https://github.com/opensagres/xdocreport.samples

用docker+tomcat部署,这个例子的pom.xml缺少内容,导致部署一直报错,踩了特别多坑

xdocreport.samples-xdocreport-samples-2.0.0/REST-Service-Converter-WebApplication-itext5路径下的pom.xml缺少的内容

<dependency>
           <groupId>org.apache.cxf</groupId>
                    <artifactId>cxf-rt-frontend-jaxrs</artifactId>
                    <version>3.1.4</version>
                </dependency>
                <dependency>
                    <groupId>org.apache.cxf</groupId>
                    <artifactId>cxf-rt-transports-http</artifactId>
                    <version>3.1.4</version>
                </dependency>
                <dependency>
        <groupId>org.apache.cxf</groupId>
        <artifactId>cxf-rt-transports-http-jetty</artifactId>
        <version>3.1.4</version>
                </dependency>
                 <dependency>
      <groupId>org.apache.cxf</groupId>
      <artifactId>cxf-rt-rs-extension-providers</artifactId>
      <version>3.1.4</version>
</dependency>

Dockerfile

放在xdocreport.samples-xdocreport-samples-2.0.0/REST-Service-Converter-WebApplication-itext5/target目录下

FROM ubuntu:latest
RUN apt-get -y update && apt-get -y upgrade
RUN apt-get -y install openjdk-8-jdk wget
RUN mkdir /usr/local/tomcat
RUN wget http://www-us.apache.org/dist/tomcat/tomcat-8/v8.5.43/bin/apache-tomcat-8.5.43.tar.gz -O /tmp/tomcat.tar.gz
RUN cd /tmp && tar xvfz tomcat.tar.gz
RUN cp -Rv /tmp/apache-tomcat-8.5.43/* /usr/local/tomcat/

#这个Fonts是从windows上下载的字体
ADD Fonts  /usr/share/fonts/chinese/
RUN apt-get install -y ttf-mscorefonts-installer
RUN cd /usr/share/fonts/chinese/ && mkfontscale && mkfontdir && fc-cache -fv

ADD rest-service-converter-itext5.war /usr/local/tomcat/webapps/
ADD rest-service-converter-itext5  /usr/local/tomcat/webapps/
EXPOSE 8080
CMD ["/usr/local/tomcat/bin/catalina.sh", "run"]

部署docker之后,浏览器可以访问这个服务,网页上可以选xdocreport或者docx4j,将docx转换为pdf,但是不知道是部署出错还是怎么,只有docx4j才能转换成功,但是有中文乱码问题。

即使安装上中文包,也是有的中文显示正确,有的显示乱码

 查阅资料,说是不支持宋体(正文),但是我改成宋体之后仍然乱码

除了中文乱码问题之外,还有一个问题,就是会多出空白页,此方法废弃

aspose-words破解版

此工具不是开源,提供破解版也仅供参考,具体商用的话还是请支持正版。

网上有很多文章讲解,但是我觉得他们的总是不全,对于我这种对Java部署非常不熟的人,真的是费了好大劲才部署成功,在此详细记录下。

下载安装包,不知道怎么发到CSDN上

编写Doc2Pdf.Java脚本

//package pageOffice.utils;
//import java.io.File;
//import java.io.FileInputStream;
//import java.io.FileOutputStream;
//import java.io.InputStream;
import java.io.*;

import com.aspose.words.Document;
import com.aspose.words.License;
import com.aspose.words.SaveFormat;


/**
 * @author Administrator
 * @version $Id$
 * @since
 * @see
 */
public class Doc2Pdf {
	
	private static boolean getLicense() {
        boolean result = false;
        try {
            // 凭证
            String licenseStr =
                    "<License>\n" +
                    "  <Data>\n" +
                    "    <Products>\n" +
                    "      <Product>Aspose.Total for Java</Product>\n" +
                    "      <Product>Aspose.Words for Java</Product>\n" +
                    "    </Products>\n" +
                    "    <EditionType>Enterprise</EditionType>\n" +
                    "    <SubscriptionExpiry>20991231</SubscriptionExpiry>\n" +
                    "    <LicenseExpiry>20991231</LicenseExpiry>\n" +
                    "    <SerialNumber>8bfe198c-7f0c-4ef8-8ff0-acc3237bf0d7</SerialNumber>\n" +
                    "  </Data>\n" +
                    "  <Signature>sNLLKGMUdF0r8O1kKilWAGdgfs2BvJb/2Xp8p5iuDVfZXmhppo+d0Ran1P9TKdjV4ABwAgKXxJ3jcQTqE/2IRfqwnPf8itN8aFZlV3TJPYeD3yWE7IT55Gz6EijUpC7aKeoohTb4w2fpox58wWoF3SNp6sK6jDfiAUGEHYJ9pjU=</Signature>\n" +
                    "</License>";
            InputStream license = new ByteArrayInputStream(licenseStr.getBytes("UTF-8"));
            License asposeLic = new License();
            asposeLic.setLicense(license);
            result = true;
        } catch (Exception e) {
            e.printStackTrace();
        }
        return result;
    }

    public static void doc2pdf(String inPath, String outPath) {
        if (!getLicense()) { // 验证License 若不验证则转化出的pdf文档会有水印产生
            return;
        }
        try {
            long old = System.currentTimeMillis();
            File file = new File(outPath); // 新建一个空白pdf文档
            FileOutputStream os = new FileOutputStream(file);
            Document doc = new Document(inPath); // Address是将要被转化的word文档
            doc.save(os, SaveFormat.PDF);// 全面支持DOC, DOCX, OOXML, RTF HTML, OpenDocument, PDF,
                                         // EPUB, XPS, SWF 相互转换
            long now = System.currentTimeMillis();
            System.out.println("共耗时:" + ((now - old) / 1000.0) + "秒"); // 转化用时
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
	
	public static void main(String[] args) {
        doc2pdf("fullreport.docx","fullreport.pdf");
    }
}

 

编译运行

javac -cp .:/disk/software/aspose-words/aspose-word-16.8.0-maven/aspose-words-16.8.0-javadoc.jar:/disk/software/aspose-words/aspose-word-16.8.0-maven/aspose-words-16.8.0-jdk16.jar Doc2Pdf.java

我build这个Doc2Pdf.java,引入了2个jar包,在工作目录下生成Doc2Pdf.class

java -cp .:/disk/software/aspose-words/aspose-word-16.8.0-maven/aspose-words-16.8.0-javadoc.jar:/disk/software/aspose-words/aspose-wor/pkl/software/aspose-words/aspose-word-16.8.0-maven/aspose-words-16.8.0-jdk16.jar:/disk/software/aspose-words/aspose-word-16.8.0-maven/ Doc2Pdf

因为执行命令可以在任何目录下,所以需要在引入的包中带上绝对路径,注意最后加了个:/disk/software/aspose-words/aspose-word-16.8.0-maven/ ,是为了让java可以找到Doc2Pdf.class

就可以转换成功了

 

2017-06-29 11:54:21 cyerogy 阅读数 4572
  • 微服务架构实战:Swagger规范RESTFUL API文档以及Mock...

    随着微服务架构的流行,REST风格也是大势所趋。那么,什么是REST?如何规范我们的RESTFUL API 文档? 本课堂将主要基于以上两个话题进行讨论并探讨在“数字化企业云平台”的实践中如何规范RESTful文档,同时课堂中将引入API Mock的概念并讨论Mock和Doc领域的集成实现。

    7952 人正在学习 去看看 CSDN讲师

1、安装unoconv

命令:sudo apt-get install unoconv

2、安装imagemagick

命令:sudo apt-get install imagemagick

3、检测imagemagick是否安装成功

命令:convert -version。出现下图结果表示安装成功

4、先在终端命令行进行转换测试

(1)将odt文件转成pdf文件,命令:unoconv -f pdf XXX。XXX是你需要转换的文件(包括后缀)

(2)将pdf转成图片(jpg),命令:convert XXX.pdf %d.jpg。XXX是pdf的文件名,%d是按页进行转换

5、php调用shell命令进行转换

注意:在转换之前先找到unoconv和convert的bin目录

命令:sudo find / -name unoconv

例如:/usr/bin/unoconv

sudo find / -name convert

例如:/usr/bin/convert

调用方法

exec(“/usr/bin/unoconv -f pdf test.odt”);

exec(“/usr/bin/convert test.pdf %d.jpg”);

例如:/usr/bin/unoconv


没有更多推荐了,返回首页