通過swagger2markup+asciidoctorj生成html和pdf文件並解決asciidoctorj生成的pdf檔案中文顯示不全問題(maven方式及java程式碼方式)
阿新 • • 發佈:2020-08-12
通過swagger2markup+asciidoctorj生成html和pdf文件(maven方式及java程式碼方式)
任務:通過同事的json檔案生成相應的html和pdf文件
前言
開始時swagger2markup和asciidoctorj是什麼都不知道,只能百度,看官方文件(翻譯。。。),
遇到問題就一頭霧水,完全不知道哪裡出了問題,要怎麼決解,百度上資料(中文?)也是寥寥無幾,maven
也是沒有系統學習過,導致很多小問題到了自己這裡變成了大麻煩。在經歷了一個星期的摸索,終於小有所成,
在此寫下自己嘔心瀝血的過程,以免日後自己忘了,也給其他同僚多一份可以參考的資料。
如果有寫的不好的地方,還望指出。
以下是我經歷一個星期的各種碰撞過程
- 使用maven外掛方法生成html和pdf檔案(json檔案生成adoc檔案,adoc檔案再生成html和pdf檔案)
- 使用java程式碼方式生成adoc檔案
- 使用java程式碼方式呼叫cmd執行mvn test命令生成html和pdf檔案
出現問題:生成的pdf中文顯示不全
解決:
- 使用asciidoctorj工具(單獨)在cmd裡生成pdf檔案
- 使用java程式碼方式直接生成pdf檔案(需adoc檔案)
目錄
生成html和pdf文件
1、使用maven外掛方法生成html和pdf檔案 (json檔案生成adoc檔案, adoc檔案再生成html和pdf檔案)
- 匯入eclipse後發現只有幾個可用
- 可以看到pom.xml檔案內有如下配置檔案
<!-- 一些引數 -->
<properties>
<java.version>1.8</java.version>
<swagger2markup.version>1.2.0</swagger2markup.version>
<asciidoctor.input.directory>${project.basedir}/src/docs/asciidoc</asciidoctor.input.directory>
<swagger.output.dir>${project.build.directory}/swagger</swagger.output.dir>
<swagger.snippetOutput.dir>${project.build.directory}/asciidoc/snippets</swagger.snippetOutput.dir>
<generated.asciidoc.directory>${project.build.directory}/asciidoc/generated</generated.asciidoc.directory>
<asciidoctor.html.output.directory>${project.build.directory}/asciidoc/html</asciidoctor.html.output.directory>
<asciidoctor.pdf.output.directory>${project.build.directory}/asciidoc/pdf</asciidoctor.pdf.output.directory>
<swagger.input>${swagger.output.dir}/swagger.json</swagger.input>
</properties>
<!-- 首先是兩個遠端倉庫 -->
<pluginRepositories>
<pluginRepository>
<id>jcenter-snapshots</id>
<name>jcenter</name>
<url>http://oss.jfrog.org/artifactory/oss-snapshot-local/</url>
</pluginRepository>
<pluginRepository>
<id>jcenter-releases</id>
<name>jcenter</name>
<url>http://jcenter.bintray.com</url>
<snapshots>
<enabled>false</enabled>
</snapshots>
</pluginRepository>
</pluginRepositories>
<repositories>
<repository>
<id>jcentral</id>
<name>bintray</name>
<url>http://jcenter.bintray.com</url>
<snapshots>
<enabled>false</enabled>
</snapshots>
</repository>
<repository>
<id>jcenter-snapshots</id>
<name>jcenter</name>
<url>http://oss.jfrog.org/artifactory/oss-snapshot-local/</url>
</repository>
</repositories>
<!-- 以下用於生成adoc檔案的配置 -->
<plugin>
<groupId>io.github.swagger2markup</groupId>
<artifactId>swagger2markup-maven-plugin</artifactId>
<version>${swagger2markup.version}</version>
<dependencies>
<dependency>
<groupId>io.github.swagger2markup</groupId>
<artifactId>swagger2markup-import-files-ext</artifactId>
<version>${swagger2markup.version}</version>
</dependency>
<dependency>
<groupId>io.github.swagger2markup</groupId>
<artifactId>swagger2markup-spring-restdocs-ext</artifactId>
<version>${swagger2markup.version}</version>
</dependency>
</dependencies>
<configuration>
<swaggerInput>${swagger.input}</swaggerInput>
<outputDir>${generated.asciidoc.directory}</outputDir>
<config>
<swagger2markup.markupLanguage>ASCIIDOC</swagger2markup.markupLanguage>
<swagger2markup.pathsGroupedBy>TAGS</swagger2markup.pathsGroupedBy>
<swagger2markup.extensions.dynamicOverview.contentPath>${project.basedir}/src/docs/asciidoc/extensions/overview</swagger2markup.extensions.dynamicOverview.contentPath>
<swagger2markup.extensions.dynamicDefinitions.contentPath>${project.basedir}/src/docs/asciidoc/extensions/definitions</swagger2markup.extensions.dynamicDefinitions.contentPath>
<swagger2markup.extensions.dynamicPaths.contentPath>${project.basedir}/src/docs/asciidoc/extensions/paths</swagger2markup.extensions.dynamicPaths.contentPath>
<swagger2markup.extensions.dynamicSecurity.contentPath>${project.basedir}src/docs/asciidoc/extensions/security/</swagger2markup.extensions.dynamicSecurity.contentPath>
<swagger2markup.extensions.springRestDocs.snippetBaseUri>${swagger.snippetOutput.dir}</swagger2markup.extensions.springRestDocs.snippetBaseUri>
<swagger2markup.extensions.springRestDocs.defaultSnippets>true</swagger2markup.extensions.springRestDocs.defaultSnippets>
</config>
</configuration>
<executions>
<execution>
<phase>test</phase>
<goals>
<goal>convertSwagger2markup</goal>
</goals>