Java轻松转换Markdown文件到Word和PDF文档

news2025/3/17 18:17:29

Markdown 凭借其简洁易用的特性,成为创建和编辑纯文本文档的常用选择。但某些时候我们需要更加精致的展示效果,例如在专业分享文档或打印成离线使用的纸质版时,就需要将Markdown文件以其他固定的文档格式呈现。通过将 Markdown 转换为 Word 和 PDF 格式,可以得到更多的格式设置,确保跨平台的兼容性,并能够创建出专业的文档。本文将探讨如何使用 Java 将 Markdown 格式转换为 Word 和 PDF 格式

  • 使用 Java 将 Markdown 文件转换为 Word 文档
  • 使用 Java 将 Markdown 文件转换为 PDF 文件
  • 自定义生成文档的页面设置

本文采用的方法需要 Spire.Doc for Java 库的支持。

使用 Java 将 Markdown 文件转换为 Word 文档

Markdown 格式转换为 Word 或 PDF 文档格式,可以通过调用 Document.loadFromFile(String: fileName, FileFormat.Markdown) 方法加载 Markdown 文件,以及使用 Document.saveToFile(String: fileName, FileFormat: fileFormat) 方法保存为 Word 或 PDF 文档来简单完成。需要注意的是,由于 Markdown 文件中的图片是以链接形式存储的,如果希望在转换后保留图片,还需进行额外处理。
Markdown 文件转换为 Word 文档的具体步骤如下:

  1. 导入必要的模块。
  2. 创建 Document 类的实例。
  3. 使用 Document.loadFromFile(String: fileName, FileFormat.Markdown) 方法加载 Markdown 文件。
  4. 通过 Document.saveToFile(String: fileName, FileFormat.Docx) 方法将 Markdown 文件保存为 Word 文档。
  5. 释放资源。

代码示例:

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

public class MarkdownToWord {
    public static void main(String[] args) {
        // 创建一个 Document 实例
        Document doc = new Document();

        // 加载 Markdown 文件
        doc.loadFromFile("示例.md", FileFormat.Markdown);

        // 将 Markdown 文件保存为 Word 文档
        doc.saveToFile("output/Markdown转Word.docx", FileFormat.Docx);
        doc.dispose();
    }
}

原Markdown文件:
Java 将 Markdown 文件转换为 Word 文档

转换结果:
Java 将 Markdown 文件转换为 Word 文档

使用 Java 将 Markdown 文件转换为 PDF 文件

只需在 Document.saveToFile() 方法的格式参数中使用 FileFormat.PDF 枚举,即可直接将 Markdown 文件转换为 PDF 文档。
Markdown 文件转换为 PDF 文档的步骤如下:

  1. 导入必要的模块。
  2. 创建 Document 类的实例。
  3. 使用 Document.loadFromFile(String: fileName, FileFormat.Markdown) 方法加载 Markdown 文件。
  4. 利用 Document.saveToFile(String: fileName, FileFormat.PDF) 方法将 Markdown 文件保存为 PDF 文档。
  5. 释放资源。

代码示例:

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

public class MarkdownToPDF {
    public static void main(String[] args) {
        // 创建一个 Document 实例
        Document doc = new Document();

        // 加载 Markdown 文件
        doc.loadFromFile("示例.md");

        // 将 Markdown 文件保存为 PDF 文件
        doc.saveToFile("output/Markdown转PDF.pdf", FileFormat.PDF);
        doc.dispose();
    }
}

转换结果:
Java 将 Markdown 文件转换为 PDF 文件

自定义生成文档的页面设置

除了默认样式转换外,我们还可以在转换前利用 PageSetup 类下的方法进行页面设置,从而控制生成文档的页面边距、页面大小等属性。
自定义生成文档页面设置的步骤如下:

  1. 导入必要的模块。
  2. 创建 Document 类的实例。
  3. 使用 Document.loadFromFile(String: fileName, FileFormat.Markdown) 方法加载 Markdown 文件。
  4. 通过 Document.getSections().get(0) 方法获取第一章节。
  5. 使用 PageSetup 类下的方法设定页面大小、方向及边距。
  6. 通过 Document.saveToFile(String: fileName, FileFormat.PDF) 方法将 Markdown 文件保存为 PDF 文档。
  7. 释放资源。

代码示例:

import com.spire.doc.Document;
import com.spire.doc.FileFormat;
import com.spire.doc.PageSetup;
import com.spire.doc.Section;
import com.spire.doc.documents.MarginsF;
import com.spire.doc.documents.PageOrientation;
import com.spire.doc.documents.PageSize;

public class PageSettingMarkdown {
    public static void main(String[] args) {
        // 创建一个 Document 实例
        Document doc = new Document();

        // 加载 Markdown 文件
        doc.loadFromFile("示例.md");

        // 获取第一个节
        Section section = doc.getSections().get(0);

        // 设置页面尺寸、方向和边距
        PageSetup pageSetup = section.getPageSetup();
        pageSetup.setPageSize(PageSize.Letter);
        pageSetup.setOrientation(PageOrientation.Landscape);
        pageSetup.setMargins(new MarginsF(100, 100, 100, 100));

        // 将 Markdown 文件保存为 PDF 文件
        doc.saveToFile("output/Markdown转PDF.pdf", FileFormat.PDF);
        doc.dispose();
    }
}

转换结果:
自定义生成文档的页面设置

本文通过分步指南及代码示例展示了如何将 Markdown 文件转换为 Word 文档和 PDF 文件。

欲了解更多文档处理与转换技巧,请前往 Spire.Doc for Java 教程。

申请免费License

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1694681.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

PostgreSQL用户与角色简述

简述 PostgreSQL通过角色(role)来控制数据库的访问权限。角色可以拥有数据库对象(比如表、函数等),并允许将这些对象的权限授予其他角色,从而实现对象访问的控制。角色(role)包含了…

llama3-8b-instruct-262k微调过程的问题笔记(场景为llama论文审稿)

目录 一、环境配置 1.1、模型 1.2、微调环境 1.3、微调数据 二、发现的问题 2.1、过拟合问题 2.2、Qlora zero3 保存模型时OOM问题(已解决) 一、环境配置 1.1、模型 llama3-8b-instruct-262k (英文) 1.2、微调环境 Package Version ------------------…

军队仓库管理系统|DW-S301系统特点

部队仓库管理系统DW-S301系统通过数据采集、互联网和物联网技术,实现数字化智能管控,以提高军用物资的仓储准确率和流转率,缩短周转时间,降低库存成本,也有助于消除生产过程中的不确定性。 系统功能:通过部…

ComfyUI完全入门:图生图局部重绘

大家好,我是每天分享AI应用的萤火君! 这篇文章的主题和美女有关,不过并不是教大家生产美女视频,而是讲解 ComfyUI 的图生图局部重绘,其中将会以美女图片为例,来展示局部重绘的强大威力。 先看看效果&…

STM32学习和实践笔记(30):窗口看门狗(WWDG)实验

1.WWDG介绍 1.1 WWDG简介 上一章我们已经介绍了IWDG,知道它的工作原理就是一个12位递减计数器不断递减计数,当减到0之前还未进行喂狗的话,产生一个MCU复位。 窗口看门狗WWDG其实和独立看门狗类似,它是一个7位递减计数器不断的往…

网络模型-策略路由配置

在实际网络应用中,策略路由也是一种重要的技术手段。尽管在考试并不注重策略路由,但是实际上应用较多建议考生除了掌握基本的静态路由协议IP route-static,动态路由协议RIP、还要掌握如何配置策略路由。策略路由的基本原理:根据ACL定义的不同…

基于高通公司AI Hub Models的On-Device AI学习:Introduction to On-Device AI

Introduction to On-Device AI 本文是学习 https://www.deeplearning.ai/short-courses/introduction-to-on-device-ai/这门课的学习笔记。 What you’ll learn in this course As AI moves beyond the cloud, on-device inference is rapidly expanding to smartphones, IoT…

前端-移动端布局

如何在PC端模拟移动端设备 可以在浏览器里打开检查 点击一下移动端按钮 然后选择一下对应的手机型号可以切换到对应的手机端 响应式布局实现方法 Viewport Flex 弹性盒子 Flex容器属性 flex-direction flex-wrap justify-content align-items align-content 进阶学习建议 Vu…

Point-Nerf 理论笔记和理解

文章目录 什么是point nerf 和Nerf 有什么区别Point Nerf 核心结构有哪些?什么是point-based radiance field? 点云位置以及置信度是怎么来Point pruning 和 Point Growing 什么是point nerf 和Nerf 有什么区别 基本的nerf 是通过过拟合MLP来完成任意视角场景的重…

Express 的 req 和 res 对象

新建 learn-express文件夹,执行命令行 npm init -y npm install express 新建 index.js const express require(express); const app express();app.get(/, (req, res, next) > {res.json(return get) })app.post(/, (req, res, next) > {res.json(retur…

在 Ubuntu 22 上深入了解和搭建 Minikube

在 Ubuntu 22 上深入了解和搭建 Minikube Minikube 是一个开源工具,使开发者能够在本地计算机上运行单节点的 Kubernetes 集群,非常适合于开发、测试和学习 Kubernetes 的基础知识。在这篇文章中,我们将深入了解 Minikube 的工作原理&#x…

【vue echart】完成一个简单echart图表+自适应

实现效果&#xff1a; html&#xff1a; <divref"echartOne"id"echartOne"style"width: 100%; height: 100%" ></div> js: getEchartOne() {let chart this.$echarts.init(this.$refs.echartOne);chart.setOption({title: {text:…

【全部更新完毕】2024电工杯A题数学建模详细思路代码文章分享

A 题&#xff1a;园区微电网风光储协调优化配置 摘要 在全球范围内&#xff0c;气候变化和环境污染问题日益严重&#xff0c;减少碳排放和实现可持续发展成为各国的共同目标。新能源&#xff0c;尤其是风能和光伏发电&#xff0c;因其清洁、可再生的特性&#xff0c;正在全球范…

Python vscode debug: Error while enumerating installed packages.解决

记录一个vscode python debug时出现的错误&#xff1a; 具体错误如下&#xff1a; E00000.030: Error while enumerating installed packages. Traceback (most recent call last): File “/root/.vscode-server/extensions/ms-python.debugpy-2024.0.0-linux-x64/bundled/lib…

【C++11】lambda匿名函数和包装器

目录 一&#xff0c;lambda匿名函数 1-1&#xff0c;lambda的引入 1-2&#xff0c;lambda表达式书写格式 1-3&#xff0c;lambda函数的名称 1-4&#xff0c;lambda捕获列表的使用 1-5&#xff0c;函数对象与lambda表达式 二&#xff0c;包装器 2-1&#xff0c;function…

逻辑这回事(一)----编码规范

说明&#xff1a;优先级是M的规则为强制项&#xff0c;优先级为R的规则为建议项。 通用约束 应有全局观念。 优先级&#xff1a;M 说明&#xff1a;你所编写的代码在成为最终硅片上的一部分之前&#xff0c;需要经过许多设计者利用各种各样的工具进行各种各样的处理。有时&…

【编译原理】LL(1)预测分析法

一、实验目的 LL(1)的含义&#xff1a;第一个L表明自顶向下分析是从左向右扫描输入串&#xff0c;第2个L表明分析过程中将使用最左推导&#xff0c;1表明只需向右看一个符号便可决定如何推导&#xff0c;即选择哪个产生式进行推导。 LL(1) 预测分析方法是确定的自顶向下的语…

[保姆式教程]使用目标检测模型YOLO V8 OBB进行旋转目标的检测:训练自己的数据集(基于卫星和无人机的农业大棚数据集)

最近需要做基于卫星和无人机的农业大棚的旋转目标检测&#xff0c;基于YOLO V8 OBB的原因是因为尝试的第二个模型就是YOLO V8&#xff0c;后面会基于YOLO V9模型做农业大棚的旋转目标检测。YOLO V9目前还不能进行旋转目标的检测&#xff0c;需要修改代码 PS:欢迎大家分享农业大…

Capture One Studio for Mac:打造完美影像的利器

对于摄影师而言&#xff0c;每一次按下快门都是一次对完美影像的追求。而Capture One Studio for Mac正是这样一款能够帮助你实现这一追求的利器。 Capture One Studio for Mac v16.4.2.1中文直装版下载 首先&#xff0c;Capture One Studio for Mac拥有出色的图像处理能力。它…

网络初识 二

一、TCP/IP五层协议 -> 应用层 : 传输的数据在应用程序中如何使用 -> 传输层 : 关注的是通信的起点终点 -> 网络层 : 关注的是通信中的路线规划 -> 数据链路层 : 关注的是相邻节点之间的通信细节 -> 物理层 : 网络通信的基础设施 说是五层,实际上下面…