最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Java實(shí)現(xiàn)ODT轉(zhuǎn)PDF的常用方案詳解

 更新時(shí)間:2026年04月24日 11:55:26   作者:缺點(diǎn)內(nèi)向  
在?Java?開(kāi)發(fā)中,文檔格式轉(zhuǎn)換是一個(gè)常見(jiàn)的技術(shù)需求,ODT?是基于?XML?的開(kāi)放文檔格式標(biāo)準(zhǔn),下面我們就來(lái)看看如何使用Java實(shí)現(xiàn)ODT轉(zhuǎn)PDF吧

在 Java 開(kāi)發(fā)中,文檔格式轉(zhuǎn)換是一個(gè)常見(jiàn)的技術(shù)需求。ODT(OpenDocument Text)作為 LibreOffice 等開(kāi)源辦公套件的默認(rèn)格式,在跨平臺(tái)協(xié)作中經(jīng)常需要轉(zhuǎn)換為PDF以保證格式一致性。本文將介紹一種基于商業(yè)類庫(kù)的實(shí)現(xiàn)方式。

ODT 格式簡(jiǎn)介

ODT 是基于 XML 的開(kāi)放文檔格式標(biāo)準(zhǔn),由 OASIS(結(jié)構(gòu)化信息標(biāo)準(zhǔn)促進(jìn)組織)制定。它的優(yōu)勢(shì)在于開(kāi)放性和跨平臺(tái)兼容性,但當(dāng)需要與使用 Microsoft Office 或其它辦公軟件的用戶共享文檔時(shí),PDF往往是更穩(wěn)妥的選擇——它能確保文檔在不同設(shè)備、不同操作系統(tǒng)上保持一致的版面呈現(xiàn)。

技術(shù)選型背景

在 Java 生態(tài)中,實(shí)現(xiàn) ODT 轉(zhuǎn) PDF 通常有以下幾種思路:

  • 基于 LibreOffice 命令行調(diào)用:通過(guò) Runtime 執(zhí)行 LibreOffice 的轉(zhuǎn)換命令。這種方式依賴系統(tǒng)安裝LibreOffice,部署復(fù)雜度較高。
  • 基于 Apache OpenOffice SDK:功能強(qiáng)大但 API 較為復(fù)雜,學(xué)習(xí)曲線陡峭。
  • 基于商業(yè)類庫(kù):提供封裝好的 API,集成相對(duì)簡(jiǎn)單。

本文使用的是 Spire.Doc for Java,它在運(yùn)行時(shí)不需要 Microsoft Office 環(huán)境。根據(jù)官方文檔,該庫(kù)支持將 ODT、HTML、RTF、TXT 等多種格式轉(zhuǎn)換為PDF。核心轉(zhuǎn)換步驟為:加載源文件、指定輸出格式、保存。

環(huán)境準(zhǔn)備

Maven依賴配置

在pom.xml中添加以下配置:

<repositories>
    <repository>
        <id>com.e-iceblue</id>
        <name>e-iceblue</name>
        <url>https://repo.e-iceblue.cn/repository/maven-public/</url>
    </repository>
</repositories>
<dependencies>
    <dependency>
        <groupId>e-iceblue</groupId>
        <artifactId>spire.doc</artifactId>
        <version>13.11.2</version>
    </dependency>
</dependencies>

版本說(shuō)明

截至本文撰寫時(shí),該庫(kù)的最新版本為14.x 系列。不同版本在功能和穩(wěn)定性上可能存在差異,建議開(kāi)發(fā)者在選型時(shí)參考最新的版本更新日志,優(yōu)先使用較新的穩(wěn)定版本。

核心代碼實(shí)現(xiàn)

以下是最基礎(chǔ)的 ODT 轉(zhuǎn) PDF 實(shí)現(xiàn):

import com.spire.doc.Document;
import com.spire.doc.FileFormat;

public class ConvertOdtToPdf {
    public static void main(String[] args) {
        // 創(chuàng)建Document實(shí)例
        Document doc = new Document();
        
        // 加載ODT文件
        doc.loadFromFile("Sample.odt");
        
        // 保存為PDF格式
        doc.saveToFile("OdtToPDF.pdf", FileFormat.PDF);
        
        // 釋放資源
        doc.dispose();
    }
}

Document.loadFromFile() 方法會(huì)自動(dòng)識(shí)別源文件格式,無(wú)需手動(dòng)指定;saveToFile() 方法通過(guò)FileFormat.PDF 參數(shù)指定目標(biāo)格式。

進(jìn)階:流式處理

在實(shí)際項(xiàng)目中,可能需要處理上傳文件流或網(wǎng)絡(luò)資源。該庫(kù)同樣支持基于流的操作:

import com.spire.doc.Document;
import com.spire.doc.FileFormat;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.InputStream;
import java.io.OutputStream;

public class ConvertOdtToPdfWithStream {
    public static void main(String[] args) throws Exception {
        // 從輸入流加載ODT文件
        InputStream inputStream = new FileInputStream("Sample.odt");
        Document doc = new Document();
        doc.loadFromStream(inputStream, FileFormat.Auto);
        
        // 保存到輸出流
        OutputStream outputStream = new FileOutputStream("Output.pdf");
        doc.saveToStream(outputStream, FileFormat.PDF);
        
        // 關(guān)閉流并釋放資源
        outputStream.close();
        inputStream.close();
        doc.dispose();
    }
}

FileFormat.Auto 參數(shù)讓組件自動(dòng)檢測(cè)文件格式,這對(duì)處理來(lái)源不確定的文件特別有用。

注意事項(xiàng)與最佳實(shí)踐

格式兼容性

ODT 作為一種開(kāi)放標(biāo)準(zhǔn),不同軟件生成的ODT文件在內(nèi)部結(jié)構(gòu)和元素支持上可能存在細(xì)微差異。如果處理的 ODT 文件包含復(fù)雜元素(如特殊的嵌套表格、自定義樣式等),建議先進(jìn)行充分測(cè)試。當(dāng)遇到兼容性問(wèn)題時(shí),升級(jí)到最新版本通常能覆蓋更多的使用場(chǎng)景。

資源釋放

每次文檔操作完成后,及時(shí)調(diào)用 dispose() 方法釋放資源,避免內(nèi)存泄露。在處理批量轉(zhuǎn)換任務(wù)時(shí)這一點(diǎn)尤為重要。

字體處理

ODT 文件中使用的字體在轉(zhuǎn)換時(shí)需要系統(tǒng)支持。如果 PDF 輸出中出現(xiàn)亂碼或字體顯示異常,通常是因?yàn)榉?wù)器環(huán)境缺少對(duì)應(yīng)字體。解決方案包括在服務(wù)器上安裝所需字體,或通過(guò)字體嵌入相關(guān)設(shè)置來(lái)規(guī)避此問(wèn)題。

批量轉(zhuǎn)換優(yōu)化

對(duì)于大批量文檔轉(zhuǎn)換場(chǎng)景,可以考慮以下策略:

public void batchConvert(List<String> odtFiles, String outputDir) {
    Document doc = new Document();
    for (String filePath : odtFiles) {
        try {
            doc.loadFromFile(filePath);
            String pdfName = getFileName(filePath) + ".pdf";
            doc.saveToFile(outputDir + File.separator + pdfName, FileFormat.PDF);
        } catch (Exception e) {
            // 記錄異常,繼續(xù)處理下一個(gè)文件
            log.error("轉(zhuǎn)換失?。簕}", filePath, e);
        }
    }
    doc.dispose();
}

復(fù)用Document實(shí)例可以減少對(duì)象創(chuàng)建開(kāi)銷,但需要注意每次 loadFromFile() 前是否需要進(jìn)行文檔重置。

適用場(chǎng)景分析

適合使用此方案的場(chǎng)景:

  • 企業(yè)應(yīng)用中的文檔歸檔與標(biāo)準(zhǔn)化
  • Web應(yīng)用中用戶上傳ODT文件的在線預(yù)覽
  • 批量文檔格式遷移項(xiàng)目
  • 需要與現(xiàn)有Java系統(tǒng)集成的場(chǎng)景

需要謹(jǐn)慎評(píng)估的場(chǎng)景:

  • 對(duì)轉(zhuǎn)換質(zhì)量有極致要求的出版級(jí)應(yīng)用(建議輔以人工校驗(yàn))
  • 處理的ODT文件大量使用非常規(guī)元素(需提前充分測(cè)試)
  • 預(yù)算有限且轉(zhuǎn)換量不大的小型項(xiàng)目(可考慮開(kāi)源方案)

方法補(bǔ)充

將 ODT (OpenDocument Text) 文件轉(zhuǎn)換為 PDF 是報(bào)表生成和數(shù)據(jù)交換中的高頻需求。下面我將從選型考量、主流方案入手,為你梳理在 Java 生態(tài)中實(shí)現(xiàn)這一轉(zhuǎn)換的幾種有效路徑。

選型考量:你需要什么樣的轉(zhuǎn)換?

不同場(chǎng)景對(duì)轉(zhuǎn)換方案的側(cè)重點(diǎn)完全不同。在了解具體方案前,可以先從以下維度考慮自己的核心訴求:

  • 成本:項(xiàng)目是否有商業(yè)預(yù)算?能否接受 GPL/AGPL 等嚴(yán)格的開(kāi)源協(xié)議?
  • 環(huán)境:轉(zhuǎn)換服務(wù)部署在什么環(huán)境?是否允許安裝額外的系統(tǒng)軟件?
  • 質(zhì)量:對(duì)轉(zhuǎn)換結(jié)果的保真度要求有多高?是否需要完美支持復(fù)雜的表格和自定義字體?
  • 性能:是單次、小批量轉(zhuǎn)換,還是需要高并發(fā)的服務(wù)化處理?

主流 Java ODT 轉(zhuǎn) PDF 方案全景

方案名稱類型與成本轉(zhuǎn)換質(zhì)量部署依賴核心特點(diǎn)性能與可用性考量
JODConverter開(kāi)源 (LGPL)高 (依賴 LibreOffice 渲染引擎)需獨(dú)立安裝 LibreOffice/OpenOffice社區(qū)首選開(kāi)源方案。封裝了 Java 與 LibreOffice 的通信,支持復(fù)雜排版,API 簡(jiǎn)單,生態(tài)成熟轉(zhuǎn)換性能受后端 LibreOffice 進(jìn)程影響,通常在 1-5 秒/文檔。服務(wù)進(jìn)程需精細(xì)管理,可配置連接池。
Apache ODF Toolkit開(kāi)源 (Apache 2.0)低 (樣式和布局易丟失)無(wú)額外依賴純 Java 解析??勺x寫 ODT 結(jié)構(gòu)文檔,但原生功能有限,復(fù)雜樣式轉(zhuǎn)換效果不理想純 Java 實(shí)現(xiàn)避免了進(jìn)程間通信開(kāi)銷,但轉(zhuǎn)換功能依賴其他庫(kù),處理速度一般。
XDocReport開(kāi)源 (MIT)可選依賴模板引擎與轉(zhuǎn)換的結(jié)合。基于模板數(shù)據(jù)和 ODT 匯報(bào)生成,最終導(dǎo)出 PDF核心在匯報(bào)生成,批量轉(zhuǎn)換場(chǎng)景下性能表現(xiàn)良好。
Spire.Doc for Java商業(yè)付費(fèi)無(wú)輕量級(jí)商業(yè)庫(kù)。API 簡(jiǎn)潔,幾步代碼即可完成,無(wú)需安裝第三方軟件商業(yè)庫(kù)通常優(yōu)化充分,轉(zhuǎn)換速度快,適合集成到商業(yè)產(chǎn)品中。
GroupDocs.Conversion商業(yè)付費(fèi)無(wú)全能文檔轉(zhuǎn)換器。支持超過(guò) 70 種格式,API 統(tǒng)一,文檔詳盡企業(yè)級(jí)高性能轉(zhuǎn)換引擎,適合大規(guī)模、高并發(fā)的文檔處理服務(wù)。
Aspose.Words for Java商業(yè)付費(fèi)極高無(wú)工業(yè)級(jí)方案。號(hào)稱完美的保真度,可精細(xì)控制轉(zhuǎn)換細(xì)節(jié)商業(yè) API 成熟穩(wěn)定,提供高吞吐量的文檔處理能力,適合核心業(yè)務(wù)系統(tǒng)。
LibreOffice 命令行直接調(diào)用需安裝 LibreOffice最直接的方案。通過(guò) Java 的 Runtime.exec 調(diào)用命令行,雖然靈活但管理復(fù)雜性能主要取決于系統(tǒng)調(diào)用和 LibreOffice,啟動(dòng)進(jìn)程開(kāi)銷較大,高并發(fā)下慎用。

方案詳解與代碼實(shí)現(xiàn)

方案一:JODConverter(開(kāi)源首選)

JODConverter 是目前社區(qū)最推薦的免費(fèi)開(kāi)源方案。它的原理是通過(guò) Java API 與你本地安裝的 LibreOffice(或 OpenOffice)進(jìn)程通信,將其作為轉(zhuǎn)換引擎。因此,部署前需要在服務(wù)器上安裝 LibreOffice。

Maven 依賴

<dependency>
    <groupId>org.jodconverter</groupId>
    <artifactId>jodconverter-local-lo</artifactId>
    <version>4.4.8</version>
</dependency>

核心轉(zhuǎn)換代碼下面的示例演示了如何將 ODT 文件轉(zhuǎn)換為 PDF。

import org.jodconverter.LocalConverter;
import org.jodconverter.office.LocalOfficeManager;
import java.io.File;
public class OdtToPdfJodConverter {
    public static void main(String[] args) throws Exception {
        // 1. 啟動(dòng) LibreOffice 服務(wù)
        LocalOfficeManager officeManager = LocalOfficeManager.builder()
                .install()
                .build();
        officeManager.start();
        // 2. 準(zhǔn)備輸入輸出文件
        File inputFile = new File("input.odt");
        File outputFile = new File("output.pdf");
        // 3. 執(zhí)行轉(zhuǎn)換
        LocalConverter.builder()
                .officeManager(officeManager)
                .build()
                .convert(inputFile)
                .to(outputFile)
                .execute();
        System.out.println("轉(zhuǎn)換完成!");
        // 4. 關(guān)閉服務(wù)
        officeManager.stop();
    }
}

運(yùn)維要點(diǎn):LibreOffice 進(jìn)程的管理是生產(chǎn)環(huán)境的關(guān)鍵。JODConverter 4.x 及以上版本提供了更穩(wěn)定的 LocalOfficeManager 管理方式,支持連接池配置,應(yīng)避免在每次轉(zhuǎn)換時(shí)都啟動(dòng)/關(guān)閉 Office,以大幅提升性能。

方案二:Apache ODF Toolkit(純 Java 方案)

Apache ODF Toolkit 是一個(gè)純 Java 庫(kù),可以無(wú)需依賴第三方軟件直接讀取 ODF 文檔。但需要注意的是,其原生功能主要用于操作文檔內(nèi)容,而不包括渲染和轉(zhuǎn)換。

一個(gè)常見(jiàn)的策略是利用它解析 ODT,然后通過(guò) iText 生成 PDF,代碼邏輯會(huì)比較復(fù)雜。同時(shí),它的轉(zhuǎn)換質(zhì)量相對(duì)有限,對(duì)于復(fù)雜文檔,樣式和布局容易丟失。

方案三:XDocReport(模板驅(qū)動(dòng)方案)

如果你的需求是基于 ODT 模板 動(dòng)態(tài)填充數(shù)據(jù)并生成報(bào)告,XDocReport 憑借其集成了模板引擎和轉(zhuǎn)換能力的優(yōu)勢(shì),可能是最適合的選擇。

它在 ODT 轉(zhuǎn) PDF 方面的核心能力源于集成了 iText 或 Apache FOP 作為底層的 PDF 生成器。

核心轉(zhuǎn)換代碼示例XDocReport 項(xiàng)目提供了一個(gè)整合了上述所有內(nèi)容的“一鍵式” PDF 轉(zhuǎn)換器類 PDFViaITextConverter,代碼示例如下:

import fr.opensagres.xdocreport.converter.ConverterTypeTo;
import fr.opensagres.xdocreport.converter.ConverterUrl;
import fr.opensagres.xdocreport.converter.Options;
import fr.opensagres.xdocreport.converter.XDocConverterException;
import fr.opensagres.xdocreport.core.document.DocumentKind;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.InputStream;
import java.io.OutputStream;
public class OdtToPdfXDocReport {
    public static void main(String[] args) {
        try {
            // 1. 準(zhǔn)備輸入和輸出流
            InputStream in = new FileInputStream(new File("input.odt"));
            OutputStream out = new FileOutputStream(new File("output.pdf"));
            // 2. 設(shè)置轉(zhuǎn)換選項(xiàng):源格式 ODT,目標(biāo)格式 PDF
            Options options = Options.getFrom(DocumentKind.ODT)
                    .to(ConverterTypeTo.PDF);
            // 3. 核心轉(zhuǎn)換調(diào)用
            ConverterUrl converter = new ConverterUrl(options);
            converter.convert(in, out, options);
            in.close();
            out.close();
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}

方案四:商業(yè)庫(kù)

如果預(yù)算允許,可以直接用商業(yè)庫(kù),能省去許多底層細(xì)節(jié)的處理。如 Aspose.Words,轉(zhuǎn)換效果近乎完美,且支持精細(xì)配置以保證與源文檔完全一致。

代碼示例 (Aspose.Words)

import com.aspose.words.Document;
import com.aspose.words.PdfSaveOptions;
public class OdtToPdfAspose {
    public static void main(String[] args) throws Exception {
        // 1. 加載 ODT 文檔
        Document doc = new Document("input.odt");
        // 2. (可選)配置轉(zhuǎn)換選項(xiàng)
        PdfSaveOptions options = new PdfSaveOptions();
        options.setEmbedFullFonts(true); // 嵌入完整字體,保證格式一致
        // 3. 保存為 PDF
        doc.save("output.pdf", options);
    }
}

方案五:直接調(diào)用 LibreOffice 命令行

不通過(guò) Java 庫(kù),直接在代碼中調(diào)用 LibreOffice 的命令行工具 soffice 進(jìn)行轉(zhuǎn)換(需安裝并配置好 PATH)。

核心代碼

public class OdtToPdfCommandLine {
    public static void main(String[] args) throws Exception {
        // 構(gòu)建命令
        ProcessBuilder pb = new ProcessBuilder(
            "libreoffice", 
            "--headless",      // 無(wú)界面運(yùn)行模式
            "--convert-to", "pdf",
            "--outdir", ".",
            "input.odt"
        );
        Process process = pb.start();
        int exitCode = process.waitFor();
        if (exitCode == 0) {
            System.out.println("轉(zhuǎn)換成功!");
        } else {
            System.err.println("轉(zhuǎn)換失敗!");
        }
    }
}

小結(jié)

本文介紹了在Java環(huán)境中將 ODT 文檔轉(zhuǎn)換為 PDF 的一種實(shí)現(xiàn)方式。所用類庫(kù)的API設(shè)計(jì)相對(duì)簡(jiǎn)潔,幾行代碼即可完成核心轉(zhuǎn)換邏輯,同時(shí)支持流式處理和批量操作,可以作為企業(yè)應(yīng)用場(chǎng)景中的一種備選方案。在選型時(shí),建議結(jié)合項(xiàng)目的具體需求、預(yù)算和轉(zhuǎn)換質(zhì)量要求進(jìn)行綜合評(píng)估,并通過(guò)小規(guī)模測(cè)試驗(yàn)證兼容性后再做最終決定。

到此這篇關(guān)于Java實(shí)現(xiàn)ODT轉(zhuǎn)PDF的常用方案詳解的文章就介紹到這了,更多相關(guān)Java ODT轉(zhuǎn)PDF內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • 一文帶你了解Spring中Bean名稱加載機(jī)制

    一文帶你了解Spring中Bean名稱加載機(jī)制

    這篇文章主要給大家介紹了Spring Framework如何從使用注解定義的Bean元數(shù)據(jù)中獲取到Bean的名稱,文中通過(guò)代碼示例給大家介紹的非常詳細(xì),具有一定的參考價(jià)值,需要的朋友可以參考下
    2024-01-01
  • spring boot2.0圖片上傳至本地或服務(wù)器并配置虛擬路徑的方法

    spring boot2.0圖片上傳至本地或服務(wù)器并配置虛擬路徑的方法

    最近寫了關(guān)于圖片上傳至本地文件夾或服務(wù)器,上傳路徑到數(shù)據(jù)庫(kù),并在上傳時(shí)預(yù)覽圖片。本文通過(guò)實(shí)例代碼給大家分享spring boot2.0圖片上傳至本地或服務(wù)器并配置虛擬路徑的方法,需要的朋友參考下
    2018-12-12
  • SpringCloud Config統(tǒng)一配置中心問(wèn)題分析解決與客戶端動(dòng)態(tài)刷新實(shí)現(xiàn)

    SpringCloud Config統(tǒng)一配置中心問(wèn)題分析解決與客戶端動(dòng)態(tài)刷新實(shí)現(xiàn)

    springcloud config是一個(gè)解決分布式系統(tǒng)的配置管理方案。它包含了 client和server兩個(gè)部分,server端提供配置文件的存儲(chǔ)、以接口的形式將配置文件的內(nèi)容提供出去,client端通過(guò)接口獲取數(shù)據(jù)、并依據(jù)此數(shù)據(jù)初始化自己的應(yīng)用
    2022-10-10
  • mybatis之BaseTypeHandler用法解讀

    mybatis之BaseTypeHandler用法解讀

    這篇文章主要介紹了mybatis之BaseTypeHandler用法解讀,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-04-04
  • Java拆裝箱深度剖析

    Java拆裝箱深度剖析

    這篇文章主要為大家深度剖析了Java拆箱裝箱的相關(guān)資料,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2016-12-12
  • Java調(diào)用groovy腳本的方式分享

    Java調(diào)用groovy腳本的方式分享

    Groovy?是一種基于?JVM?的動(dòng)態(tài)語(yǔ)言,與?Java?語(yǔ)言緊密集成,可以很方便地在?Java?項(xiàng)目中使用。本文為大家整理了Java調(diào)用groovy腳本的幾種方式,希望對(duì)大家有所幫助
    2023-04-04
  • Servlet系列兩種創(chuàng)建方式

    Servlet系列兩種創(chuàng)建方式

    本文主要介紹了Servlet系列兩種創(chuàng)建方式,包含Servlet2.5之前使用和Servlet3.0后,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2024-02-02
  • 使用@CachePut?更新數(shù)據(jù)庫(kù)和更新緩存

    使用@CachePut?更新數(shù)據(jù)庫(kù)和更新緩存

    這篇文章主要介紹了使用@CachePut?更新數(shù)據(jù)庫(kù)和更新緩存方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2021-12-12
  • 深入了解Java中的反射機(jī)制(reflect)

    深入了解Java中的反射機(jī)制(reflect)

    Java的反射機(jī)制允許我們對(duì)一個(gè)類的加載、實(shí)例化、調(diào)用方法、操作屬性的時(shí)期改為在運(yùn)行期進(jìn)行,這大大提高了代碼的靈活度,本文就來(lái)簡(jiǎn)單講講反射機(jī)制的具體使用方法吧
    2023-05-05
  • 基于springboot微信公眾號(hào)開(kāi)發(fā)(微信自動(dòng)回復(fù))

    基于springboot微信公眾號(hào)開(kāi)發(fā)(微信自動(dòng)回復(fù))

    這篇文章主要介紹了基于springboot微信公眾號(hào)開(kāi)發(fā)(微信自動(dòng)回復(fù)),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2019-11-11

最新評(píng)論

瑞昌市| 普宁市| 桂林市| 宜兴市| 镇康县| 靖江市| 慈利县| 吉安县| 佛学| 彭山县| 阿坝县| 衡阳市| 吐鲁番市| 萨迦县| 舞钢市| 霞浦县| 卢氏县| 锦屏县| 河曲县| 武隆县| 马关县| 东源县| 马山县| 芜湖市| 杭州市| 东乡| 浮山县| 安岳县| 凭祥市| 林周县| 嘉禾县| 定襄县| 厦门市| 梅河口市| 七台河市| 永城市| 毕节市| 新郑市| 金山区| 东莞市| 四川省|