Swagger2接口文檔導(dǎo)出為pdf格式

添加swagger相關(guān)配置

1雷猪、依賴配置

        <!-- swagger -->
        <dependency>
            <groupId>io.springfox</groupId>
            <artifactId>springfox-swagger2</artifactId>
            <version>2.9.2</version>
        </dependency>

        <!-- 接口API生成html文檔 -->
        <dependency>
            <groupId>io.springfox</groupId>
            <artifactId>springfox-swagger-ui</artifactId>
            <version>2.9.2</version>
        </dependency>

        <!--解決控制層接受參數(shù)為Integer類似的參數(shù),訪問swagger頁面報(bào)錯(cuò)-->
        <dependency>
            <groupId>io.swagger</groupId>
            <artifactId>swagger-models</artifactId>
            <version>1.5.21</version>
        </dependency>

        <dependency>
            <groupId>io.github.swagger2markup</groupId>
            <artifactId>swagger2markup</artifactId>
            <version>1.3.1</version>
        </dependency>

2、編寫config

package com.hag.opmos.config;

import io.swagger.annotations.ApiOperation;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.config.annotation.ResourceHandlerRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;
import springfox.documentation.builders.ApiInfoBuilder;
import springfox.documentation.builders.PathSelectors;
import springfox.documentation.builders.RequestHandlerSelectors;
import springfox.documentation.service.ApiInfo;
import springfox.documentation.spi.DocumentationType;
import springfox.documentation.spring.web.plugins.Docket;
import springfox.documentation.swagger2.annotations.EnableSwagger2;

/**
 * @Package: com.hag.opmos.config
 * @ClassName: swaggerConfig
 * @Author: Administrator
 * @Date:2021/4/30 10:55
 * @Description:
 */
@Configuration
@EnableSwagger2
public class swaggerConfig implements WebMvcConfigurer {
    @Bean
    public Docket createREstApi() {
        return new Docket(DocumentationType.SWAGGER_2)
                .apiInfo(apiInfo())
                .enable(true)
                .select()
                .apis(RequestHandlerSelectors.withMethodAnnotation(ApiOperation.class))
                .apis(RequestHandlerSelectors.basePackage("com.hag.opmos.controller"))
                .paths(PathSelectors.any())
                .build();
    }

    private ApiInfo apiInfo() {
        return new ApiInfoBuilder()
                .title("web api")
                .description("接口說明")
                .version("1.0.0")
                .build();
    }


    @Override
    public void addResourceHandlers(ResourceHandlerRegistry registry) {
        registry.addResourceHandler("/**")
                .addResourceLocations("classpath:/static/");

        registry.addResourceHandler("swagger-ui.html")
                .addResourceLocations("classpath:/META-INF/resources/");

        registry.addResourceHandler("/webjars/**")
                .addResourceLocations("classpath:/META-INF/resources/webjars/");
        WebMvcConfigurer.super.addResourceHandlers(registry);
    }
}

這時(shí)候可以運(yùn)行一下試試看看能出來swagger頁面不席函。沒問題繼續(xù)....

4、編寫all.adoc Test文件

        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-test</artifactId>
        </dependency>
package com.hag.opmos.test;

import com.hag.opmos.App;
import io.github.swagger2markup.Swagger2MarkupConfig;
import io.github.swagger2markup.Swagger2MarkupConverter;
import io.github.swagger2markup.builder.Swagger2MarkupConfigBuilder;
import io.github.swagger2markup.markup.builder.MarkupLanguage;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.test.context.junit4.SpringRunner;

import java.net.URL;
import java.nio.file.Paths;

@RunWith(SpringRunner.class)
@SpringBootTest(classes = App.class)
public class SwaggerTest {
    @Test
    public void generateAsciiDocs() throws Exception {
        //    輸出Ascii格式
        Swagger2MarkupConfig config = new Swagger2MarkupConfigBuilder()
                .withMarkupLanguage(MarkupLanguage.ASCIIDOC)
                .build();
        //此處填寫swagger項(xiàng)目地址
        Swagger2MarkupConverter.from(new URL("http://127.0.0.1:11003/v2/api-docs"))
                .withConfig(config)
                .build()
                .toFile(Paths.get("src/docs/asciidoc/generated/all"));
    }
}

這里運(yùn)行測(cè)試用例以前先啟用app.js,在執(zhí)行測(cè)試用例

5冈涧、插件配置

<plugin>
                <groupId>org.asciidoctor</groupId>
                <artifactId>asciidoctor-maven-plugin</artifactId>
                <version>1.5.6</version>
                <dependencies>
                    <dependency>
                        <groupId>org.asciidoctor</groupId>
                        <artifactId>asciidoctorj-pdf</artifactId>
                        <version>1.5.0-alpha.11</version>
                    </dependency>
                </dependencies>
                <executions>
                    <execution>
                        <id>output-html</id>
                        <phase>generate-resources</phase>
                        <goals>
                            <goal>process-asciidoc</goal>
                        </goals>
                    </execution>
                </executions>
                <configuration>
                    <sourceDirectory>src/docs/asciidoc/generated</sourceDirectory>
                    <outputDirectory>src/docs/asciidoc/pdf</outputDirectory>
                    <backend>pdf</backend>
                </configuration>
            </plugin>

最后執(zhí)行


image.png

image.png

pdf 格式錯(cuò)誤問題解決:
maven倉庫中的asciidoctorj-pdf jar包茂附,使用壓縮工具打開:

進(jìn)入asciidoctorj-pdf-1.5.0-alpha.16.jar\gems\asciidoctor-pdf-1.5.0.alpha.16\data\ 目錄
fonts:字體文件目錄
themes:配置文件目錄

下載字體:

字體下載:https://github.com/chloerei/asciidoctor-pdf-cjk-kai_gen_gothic/releases
注:只需下載KaiGenGothicCN-Bold.ttf、KaiGenGothicCN-Bold-Italic.ttf督弓、KaiGenGothicCN-Bold-Italic.ttf营曼、KaiGenGothicCN-Bold-Italic.ttf 即可
將字體文件放入fonts目錄中

修改配置
進(jìn)入themes目錄,修改default-theme.yml文件
修改以base:font_family屬性值對(duì)應(yīng)的字體文件配置:在font:catalog下愚隧。

base:
 font_family: Noto Serif

font:
 catalog:
   Noto Serif:
     normal: KaiGenGothicCN-Regular.ttf
     bold: KaiGenGothicCN-Bold.ttf
     italic: KaiGenGothicCN-Regular-Italic.ttf
     bold_italic: KaiGenGothicCN-Bold-Italic.ttf

因?yàn)椴寮?duì)中文支持不好蒂阱,解決辦法:首先下載中文字庫.ttl文件,可在網(wǎng)上下載需要的字體文件奸攻。

找到maven中依賴的插件所在的本地倉庫位置:例如我的是在D:\repo\org\asciidoctor\asciidoctorj-pdf\1.5.0-alpha.11蒜危。將下載的字體文件,添加到該壓縮包中指定位置:asciidoctorj-pdf-1.5.0-alpha.11.jar\gems\asciidoctor-pdf-1.5.0.alpha.11\data\fonts

修改asciidoctorj-pdf-1.5.0-alpha.11.jar\gems\asciidoctor-pdf-1.5.0.alpha.11\data\themes下的default-theme.yml文件

修改完成后睹耐,在按照生成步驟辐赞,重新生成pdf即可。

參考博客:https://blog.csdn.net/gs_jy/article/details/111287105 https://blog.csdn.net/qq_27621651/article/details/116129152

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末硝训,一起剝皮案震驚了整個(gè)濱河市响委,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌窖梁,老刑警劉巖赘风,帶你破解...
    沈念sama閱讀 206,482評(píng)論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異纵刘,居然都是意外死亡邀窃,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,377評(píng)論 2 382
  • 文/潘曉璐 我一進(jìn)店門假哎,熙熙樓的掌柜王于貴愁眉苦臉地迎上來瞬捕,“玉大人鞍历,你說我怎么就攤上這事》净ⅲ” “怎么了劣砍?”我有些...
    開封第一講書人閱讀 152,762評(píng)論 0 342
  • 文/不壞的土叔 我叫張陵,是天一觀的道長扇救。 經(jīng)常有香客問我刑枝,道長,這世上最難降的妖魔是什么迅腔? 我笑而不...
    開封第一講書人閱讀 55,273評(píng)論 1 279
  • 正文 為了忘掉前任装畅,我火速辦了婚禮,結(jié)果婚禮上钾挟,老公的妹妹穿的比我還像新娘洁灵。我一直安慰自己,他們只是感情好掺出,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,289評(píng)論 5 373
  • 文/花漫 我一把揭開白布徽千。 她就那樣靜靜地躺著,像睡著了一般汤锨。 火紅的嫁衣襯著肌膚如雪双抽。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,046評(píng)論 1 285
  • 那天闲礼,我揣著相機(jī)與錄音牍汹,去河邊找鬼。 笑死柬泽,一個(gè)胖子當(dāng)著我的面吹牛慎菲,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播锨并,決...
    沈念sama閱讀 38,351評(píng)論 3 400
  • 文/蒼蘭香墨 我猛地睜開眼露该,長吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來了第煮?” 一聲冷哼從身側(cè)響起解幼,我...
    開封第一講書人閱讀 36,988評(píng)論 0 259
  • 序言:老撾萬榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎包警,沒想到半個(gè)月后撵摆,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 43,476評(píng)論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡害晦,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 35,948評(píng)論 2 324
  • 正文 我和宋清朗相戀三年特铝,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 38,064評(píng)論 1 333
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡苟呐,死狀恐怖痒芝,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情牵素,我是刑警寧澤,帶...
    沈念sama閱讀 33,712評(píng)論 4 323
  • 正文 年R本政府宣布澄者,位于F島的核電站笆呆,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏粱挡。R本人自食惡果不足惜赠幕,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,261評(píng)論 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望询筏。 院中可真熱鬧榕堰,春花似錦、人聲如沸嫌套。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,264評(píng)論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽踱讨。三九已至魏蔗,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間痹筛,已是汗流浹背莺治。 一陣腳步聲響...
    開封第一講書人閱讀 31,486評(píng)論 1 262
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留帚稠,地道東北人谣旁。 一個(gè)月前我還...
    沈念sama閱讀 45,511評(píng)論 2 354
  • 正文 我出身青樓,卻偏偏與公主長得像滋早,于是被迫代替她去往敵國和親榄审。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,802評(píng)論 2 345

推薦閱讀更多精彩內(nèi)容