当前位置: 首页 > news >正文

使用Go语言将PDF文件转换为Base64编码

使用 Go 语言将 Base64 编码转换为 PDF 文件-CSDN博客本文介绍了如何使用 Go 语言将 Base64 编码转换为 PDF 文件,并保存到指定路径。https://blog.csdn.net/qq_45519030/article/details/141225772

在现代编程中,数据转换和编码是常见的需求。本文将介绍如何使用 Go 语言将 PDF 文件转换为 Base64 编码,并将结果保存到文件中。下面将详细讲解代码的实现过程,并探讨其应用场景和优势。

背景

Base64 编码是一种常见的数据编码方式,广泛应用于数据传输和存储。将 PDF 文件转换为 Base64 编码可以简化文件的传输和存储,特别是在网络传输和数据库存储中。

代码解析

  1. 导入必要的包

    import ("encoding/base64""fmt""io/ioutil""os"
    )
    

    • encoding/base64:用于 Base64 编码和解码。
    • fmt:用于格式化输出。
    • io/ioutil:用于读取和写入文件。
    • os:用于处理命令行参数和文件操作。
  2. 检查命令行参数

    if len(os.Args) < 2 {fmt.Println("请提供PDF文件的绝对路径")return
    }
    

    这段代码检查用户是否提供了 PDF 文件的绝对路径。如果没有提供,程序将输出提示信息并退出。

  3. 读取PDF文件

    pdfPath := os.Args[1]
    data, err := ioutil.ReadFile(pdfPath)
    if err != nil {fmt.Printf("读取PDF文件失败: %v\n", err)return
    }
    

    使用 ioutil.ReadFile 函数读取指定路径的 PDF 文件内容。如果读取失败,程序将输出错误信息并退出。

  4. Base64编码

    base64Encoded := base64.StdEncoding.EncodeToString(data)
    

    使用 base64.StdEncoding.EncodeToString 函数将读取的文件内容编码为 Base64 字符串。

  5. 保存 Base64 编码到文件

    outputPath := "base64.txt"
    err = ioutil.WriteFile(outputPath, []byte(base64Encoded), 0644)
    if err != nil {fmt.Printf("写入base64文件失败: %v\n", err)return
    }
    

    使用 ioutil.WriteFile 函数将 Base64 编码的字符串写入到 base64.txt 文件中。如果写入失败,程序将输出错误信息并退出。

  6. 输出成功信息

    fmt.Println("PDF文件已成功转换为base64编码并保存到base64.txt")
    

    如果一切顺利,程序将输出成功信息。

使用方法

  1. 将上述代码保存为一个 .go 文件,例如 pdfToBase64.go
  2. 在命令行中运行该程序,并提供 PDF 文件的绝对路径作为参数。例如:
    go run pdfToBase64.go /absolute/path/to/your/file.pdf
    

 代码实现

以下是一个完整的 Go 语言程序,它可以将指定路径的 PDF 文件转换为 Base64 编码,并将结果保存到程序同级目录下的 base64.txt 文件中。

package mainimport ("encoding/base64""fmt""io/ioutil""os"
)func main() {if len(os.Args) < 2 {fmt.Println("请提供PDF文件的绝对路径")return}pdfPath := os.Args[1]data, err := ioutil.ReadFile(pdfPath)if err != nil {fmt.Printf("读取PDF文件失败: %v\n", err)return}base64Encoded := base64.StdEncoding.EncodeToString(data)outputPath := "base64.txt"err = ioutil.WriteFile(outputPath, []byte(base64Encoded), 0644)if err != nil {fmt.Printf("写入base64文件失败: %v\n", err)return}fmt.Println("PDF文件已成功转换为base64编码并保存到base64.txt")
}

应用场景

  • 网络传输:在网络传输中,Base64 编码可以简化文件的传输,避免二进制文件传输中的问题。
  • 数据库存储:在数据库中存储文件时,Base64 编码可以将文件内容转换为字符串,便于存储和管理。
  • 数据交换:在不同系统或平台之间交换数据时,Base64 编码可以确保数据的完整性和兼容性。

总结

本文介绍了如何使用 Go 语言将 PDF 文件转换为 Base64 编码,并保存到文件中。

相关文章:

使用Go语言将PDF文件转换为Base64编码

使用 Go 语言将 Base64 编码转换为 PDF 文件-CSDN博客本文介绍了如何使用 Go 语言将 Base64 编码转换为 PDF 文件&#xff0c;并保存到指定路径。https://blog.csdn.net/qq_45519030/article/details/141225772 在现代编程中&#xff0c;数据转换和编码是常见的需求。本文将介绍…...

XSS Game

关卡网址&#xff1a;XSS Game - Learning XSS Made Simple! | Created by PwnFunction 1.Ma Spaghet! 见源代码分析得&#xff0c;somebody接收参数&#xff0c;输入somebody111查看所在位置 使用input标签 <input onmouseoveralert(1337)> 2.Jefff jeff接收参数,在ev…...

???牛客周赛55:虫洞操纵者

题目描述 \,\,\,\,\,\,\,\,\,\,你需要在一个可以上下左右移动的 nnn\times nnn 棋盘上解开一个迷宫&#xff1a;棋盘四周都是墙&#xff1b;每个方格要么是可以通过的空方格 ′0′\sf 0′0′ &#xff0c;要么是不可通过的墙方格 ′1′\sf 1′1′ &#xff1b;你可以沿着空方格…...

Unity3D开发之OnCollisionXXX触发条件

A和B碰撞触发OnCollision函数条件如下&#xff1a; 1.A和B都要有collider。&#xff08;子物体有也可以&#xff09; 2.A和B至少有一个刚体&#xff08;Rigidbody&#xff09;组件&#xff0c;且刚体的isKinematic为false。如果为true不会触发。 3.挂载脚本的物体必须有刚体…...

spfa()算法(求最短路)

spfa算法是对bellman_ford算法的优化&#xff0c;大部分求最短路问题都可以用spaf算法来求。 注意&#xff1a; &#xff08;1&#xff09;如若图中有负权回路&#xff0c;不能用spfa算法&#xff0c;要用bellman_ford算法&#xff1b;若只有负权边&#xff0c;则可以用 spf…...

聊聊国产数据库的生态系统建设

生态系统是指在自然界中&#xff0c;生物与环境构成统一的整体&#xff0c;之间相互影响相互制约&#xff0c;并在一定时期内处于相对稳定的动态平衡状态。所谓数据库的生态系统&#xff0c;从用户的角度看&#xff0c;就是充分打通产品使用过程中上下游的关联&#xff0c;使其…...

JDK源码解析:LinkedList

1、背景 我们咨询一下腾讯混元大模型&#xff0c;什么是“LinkedList”。 以下是混元大模型的回答&#xff1a; LinkedList 是 Java 集合框架中的一种数据结构&#xff0c;它实现了 List 和 Deque 接口。LinkedList 是一个双向链表&#xff0c;这意味着每个元素都包含对前一个和…...

drawio的问题

drawio的问题 先给出drawio的链接https://app.diagrams.net/ 我在用overleaf写论文的过程中&#xff0c;发现了一个问题&#xff0c;就是使用drawio画好图之后&#xff0c;只能保存以下几个选项&#xff1a; 但是不管是什么类型&#xff0c;在overleaf上面图片都不显示。如果…...

零基础学习Redis(3) -- Redis常用命令

Redis是一个 客户端-服务器 结构的程序&#xff0c;Redis客户端和服务器可以在同一台主机上&#xff0c;也可以在不同主机上&#xff0c;客户端和服务器之间通过网络进行通信。服务器端负责存储和管理数据。客户端则可以通过命名对服务端的数据进行操作。 Redis客户端有多种&a…...

响应式Web设计:纯HTML和CSS的实现技巧-1

响应式Web设计&#xff08;Responsive Web Design, RWD&#xff09;是一种旨在确保网站在不同设备和屏幕尺寸下都能良好运行的网页设计策略。通过纯HTML和CSS实现响应式设计&#xff0c;主要依赖于媒体查询&#xff08;Media Queries&#xff09;、灵活的布局、可伸缩的图片和字…...

FrereRTOS事件组

文章目录 一、事件组概念与操作1、事件组的概念2、事件组的操作 二、事件组函数1、创建2、删除3、设置事件4、等待事件5、同步点 三、示例&#xff1a;广播四、示例&#xff1a;等待一个任意事件五、示例: 等待多个事件都发生 学校组织秋游&#xff0c;组长在等待&#xff1a; …...

【经典算法】BFS_最短路问题

目录 1. 最短路问题介绍2. 算法原理和代码实现(含题目链接)1926.迷宫中离入口最近的出口433.最小基因变化127.单词接龙675.为高尔夫比赛砍树 3. 算法总结 1. 最短路问题介绍 最短路径问题是图论中的一类十分重要的问题。本篇文章只介绍边权为1(或边权相同)的最简单的最短路径问…...

【题目/训练】:双指针

引言 我们已经在这篇博客【算法/学习】双指针-CSDN博客里面讲了双指针、二分等的相关知识。 现在我们来做一些训练吧 经典例题 1. 移动零 思路&#xff1a; 使用 0 当做这个中间点&#xff0c;把不等于 0(注意题目没说不能有负数)的放到中间点的左边&#xff0c;等于 0 的…...

LLVM - 编译器后端-指令选择

一&#xff1a;概述 任何后端的核心都是指令选择。LLVM 实现了几种方法&#xff1b;在本篇文章中&#xff0c;我们将通过选择有向无环图&#xff08;DAG&#xff09;和全局指令选择来实现指令选择。 在本篇文章中&#xff0c;我们将学习以下主题&#xff1a; • 定义调…...

ES+FileBeat+Kibana日志采集搭建体验

1.环境准备 需要linux操作系统&#xff0c;并安装了docker环境 此处使用虚拟机演示。&#xff08;虚拟机和docker看参考我之前写的文章&#xff09; VirtualBox安装Oracle Linux 7.9全流程-CSDN博客 VirtualBox上的Oracle Linux虚拟机安装Docker全流程-CSDN博客 简单演示搭建ES…...

Dockerfile常用指令详解

Dockerfile 是一个用于定义 Docker 镜像构建过程的脚本文件&#xff0c;其中包含了一系列指令&#xff0c;用于指定如何构建和配置镜像。以下是一些常用的 Dockerfile 指令及其示例用法&#xff1a; 1. FROM 指定基础镜像&#xff0c;Dockerfile 必须以该指令开始。 示例&am…...

【vue】浏览器兼容相关

Vue.js 是一个流行的前端 JavaScript 框架&#xff0c;它支持构建单页应用和复杂的用户界面。Vue.js 的核心库本身对浏览器的支持情况如下&#xff1a; Vue.js 2.x 最低支持版本&#xff1a;IE9 及以上版本。特性支持&#xff1a;ES5。兼容性&#xff1a;Vue 2.x 在发布时就考…...

【区块链+金融服务】基于区块链的区域股权金融综合服务平台 | FISCO BCOS应用案例

区域性股权市场是我国资本市场的重要组成部分&#xff0c;是多层次资本市场体系的基石。区块链技术与区域性股权市场 分散特征天然匹配&#xff0c;从新型金融基础设施层面为场外参与各方提供公共的可信服务&#xff0c;以技术手段完善市场基础条 件&#xff0c;弥补区域性短板…...

string字符串和json对象相互转换问题

//响应体String responseStr EntityUtils.toString(response.getEntity());log.debug("下单响应码:{},响应体:{}",statusCode,responseStr);if(statusCode HttpStatus.OK.value()){JSONObject jsonObject JSONObject.parseObject(responseStr);if(jsonObject.cont…...

【生成式人工智能-十一一个不修改模型就能加速语言模型生成的方法】

一个加速语言模型生成的方法 现在语言模型的一个弊端speculative decoding预言家预测的问题 speculative decoding 模块的实现方法NAT Non-autoregressive模型压缩使用搜索引擎 一些更复杂些的speculative decoding 实现方式 speculative decoding 是一个适用于目前生成模型的加…...

nlp_gte_sentence-embedding_chinese-large实战案例:客服工单自动归类与聚类分析

nlp_gte_sentence-embedding_chinese-large实战案例&#xff1a;客服工单自动归类与聚类分析 1. 引言&#xff1a;客服工单处理的痛点与解决方案 每天处理成千上万的客服工单是什么体验&#xff1f;想象一下这样的场景&#xff1a;客服团队每天收到大量用户反馈&#xff0c;从…...

2026年企业AI HR选型实用手册

导读&#xff1a;这份2026年企业AI HR选型实用手册由eRoad易路出品&#xff0c;核心围绕AI技术与人力资源管理的深度融合&#xff0c;提出以“搭子”方法论打造企业落地AI HR的最短路径&#xff0c;展现了从技术应用到产业落地的HR智能化进化方向。关注公众号&#xff1a;【互联…...

码农专用,轻松拥有小金库

作为天天和代码、BUG、项目进度死磕的程序员&#xff0c;咱们这辈子靠理性思维、逻辑推演解决了无数技术难题&#xff0c;可一碰到理财这件事&#xff0c;几乎全员踩坑&#xff1a;要么没时间研究&#xff0c;要么怕风险不敢下手&#xff0c;最后只能把辛苦攒下的工资、年终奖丢…...

SLAM算法评测神器evo:从安装到实战的完整避坑指南

SLAM算法评测神器evo&#xff1a;从安装到实战的完整避坑指南 在机器人定位与建图&#xff08;SLAM&#xff09;领域&#xff0c;算法性能评测是验证研究成果可靠性的关键环节。而evo作为一款轻量级、模块化的评测工具&#xff0c;凭借其强大的可视化能力和丰富的指标计算功能…...

多维时序预测应用 Transformer-BILSTM

【Transformer-BILSTM多维时序预测】Transformer-BILSTM多变量时间序列预测&#xff0c;基于Transformer-BILSTM多变量输入模型。 matlab代码&#xff0c;2023b及其以上。 评价指标包括:R2、MAE、MSE、RMSE和MAPE等&#xff0c;代码质量极高&#xff0c;方便学习和替换数据。 参…...

摆脱论文困扰!高效论文写作全流程AI论文平台推荐(2026 最新)

论文写作全流程可拆解为文献调研→选题/开题→大纲/初稿→文献综述→降重/去AI味→润色/格式→查重/投稿七大环节&#xff0c;2026年AI论文平台按环节精准匹配&#xff0c;兼顾中文适配、降重能力、去AI痕迹、学术合规四大核心需求&#xff0c;覆盖免费/付费、通用/垂直场景。一…...

SEO_2024年最新SEO策略与趋势介绍(274 )

<h1 id"2024seo">2024年最新SEO策略与趋势介绍</h1> <p>在数字营销的大背景下&#xff0c;搜索引擎优化&#xff08;SEO&#xff09;始终是提升网站流量和品牌知名度的关键因素。2024年&#xff0c;随着互联网技术的不断进步&#xff0c;SEO策略和…...

Node.js实战:破解淘宝、天猫商品数据采集中的_m_h5_tk令牌与sign签名验证机制(2023最新版)

1. 淘宝天猫H5端的安全验证机制解析 淘宝和天猫作为国内头部电商平台&#xff0c;在H5端采用了独特的安全验证机制来保护商品数据。这套机制的核心就是**_m_h5_tk令牌和sign签名**的双重验证。我刚开始研究这个机制时踩了不少坑&#xff0c;后来才发现它的设计确实很巧妙。 与…...

游戏外挂开发实战:用C#和Cheat Engine读取内存实现自动补血(附完整代码)

游戏内存数据解析与自动化操作的技术实现 在数字娱乐领域&#xff0c;游戏开发与逆向工程一直是两个相互促进的技术方向。了解游戏内部数据结构和运行机制&#xff0c;不仅有助于开发者优化产品&#xff0c;也能帮助技术爱好者深入理解计算机系统的工作原理。本文将探讨一种通过…...

BERT文本分割-中文-通用领域开发者指南:源码路径/usr/local/bin/webui.py解析

BERT文本分割-中文-通用领域开发者指南&#xff1a;源码路径/usr/local/bin/webui.py解析 1. 项目简介 随着在线教学、远程会议等应用的普及&#xff0c;口语化文档的数量正在快速增长。这些文档通常以会议记录、讲座内容、采访稿等形式存在。但通过自动语音识别系统生成的文…...