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

news2024/9/23 17:16:36

使用 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 main

import (
	"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 编码,并保存到文件中。

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

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

相关文章

Ubuntu安装mysql 以及远程连接mysql Windows—适合初学者的讲解(详细)

目录 准备工作 一.Xshell中操作 &#xff08;1&#xff09;在虚拟机中安装mysql &#xff08;2&#xff09;连接Windows数据库 &#xff08;3&#xff09;进入linux数据库。 &#xff08;4&#xff09;修改mysql配置文件 二.Windows命令窗口操作 需要软件虚拟机&#xff0c;Xsh…

idea付费插件,哪个比较好用?

以下idea付费插件你们都用过哪些呢&#xff1f; 获取链接&#xff1a;https://web.52shizhan.cn

JUC3-共享模型之管程

共享带来的问题 分析 两个线程对初始值为 0 的静态变量一个做自增&#xff0c;一个做自减&#xff0c;各做 5000 次&#xff0c;结果是 0 吗&#xff1f; 分析&#xff1a; 以上的结果可能是正数、负数、零 因为Java中对静态变量的自增、自减并不是原子操作&#xff0c;需要…

三级_网络技术_29_网络安全技术

1.下列关于RAID的描述中&#xff0c;错误的是()。 服务器需要外加一个RAID卡才能实现RAID功能 RAID10是RAID0和RAID1的组合 些RAID卡可以提供SATA接口 RAID卡可以提供多个磁盘接口通道 2.下列关于RAID的描述中&#xff0c;错误的是()。 RAID5可靠性优于RAID1 些RAID卡可…

【Java 并发编程】(三) 从CPU缓存开始聊 volatile 底层原理

并发编程 三大问题 在并发编程中&#xff0c;原子性、有序性和可见性是三个重要的问题&#xff0c;解决这三个问题是保证多线程程序正确性的基础。原子性: 指的是一个操作不可分割, 要么全部执行完成, 要么不执行, 不存在执行一部分的情况.有序性: 有序性是指程序的执行顺序与…

Arco Chatter - 改变 Chatter Panel 交互体验的插件

关于 Chatter Panel Arco Chatter 插件是一款专门为 odoo 系统 Chatter Panel 设计的实用工具&#xff0c;它具有改变 Chatter Panel 展开/收起状态和调整 Chatter Panel 宽度的功能。 Arco Chatter 插件主要用于优化用户在 odoo 系统中的操作体验。通过插件功能&#xff0c;用…

【iOS】—— JSONModel

JSONModel源码 1. JSONModel介绍2. JSONModel的其他用法2.1 转换属性名称2.2 自定义错误 3. 源码分析3.1 - (id)initWithDictionary:(NSDictionary*)dict error:(NSError**)err3.2 JSONModel持有的数据3.3 load3.4 JSONModel的init方法3.5 __inspectProperties方法3.6 JSONMode…

动态创建 Delphi 按钮的完整指南:基于配置文件的 `TGridPanel` 实现

在 Delphi 开发中&#xff0c;我们经常需要根据不同的配置动态生成 UI 元素。本文将带你通过一个完整的示例&#xff0c;演示如何根据配置文件动态创建按钮&#xff0c;并将它们排列在一个 TGridPanel 中。每个按钮的标题、链接、颜色和大小都将从配置文件中读取。 “C:\myApp\…

基于YOLOv8-pose的手部关键点检测(1)- 手部关键点数据集获取(数据集下载、数据清洗、处理与增强)

前言 手部姿态估计、手势识别和手部动作识别等任务时&#xff0c;可以转化为对手部关键点的分布状态和运动状态的估计问题。本文主要给出手部关键点数据集获取的方式。 总共获取三个数据集&#xff1a; handpose_v2&#xff1a;训练集35W张&#xff0c;验证集2.85W张&#xff1…

vim - vim模式及部分操作

文章目录 一、vim 基本介绍二、vim 的简单使用三、几种常用模式切换四、命令模式和底行模式的操作汇总 一、vim 基本介绍 vim 是一款多模式的编辑器。vim 中有很多子命令来进行代码的编写操作。 同时&#xff0c;vim 提供了不同的模式供我们选择。 在vim下的底行模式下通过:he…

如何查询婚姻状况信息?

1.使用在线查询工具&#xff1a;‌ 现在&#xff0c;‌也有一些在线查询工具&#xff0c;‌如“天远查”“全能查”等微信小程序&#xff0c;‌提供了婚姻状态查询服务。‌这些工具通常需要你提供一些基本信息&#xff0c;‌并可能收取一定的费用。‌在使用这些工具时&#xff…

WebRTC为何成为视频开发领域的首选技术? EasyCVR视频转码助力无缝视频通信

随着互联网的飞速发展&#xff0c;视频通信已成为日常生活和工作中不可或缺的一部分。从在线教育、视频会议到远程医疗、在线直播&#xff0c;视频开发的需求日益增长。在这些应用场景中&#xff0c;选择何种技术来构建视频系统至关重要。 目前&#xff0c;在很多视频业务的开…

文本纠错实现定位与标记

一、基于讯飞文本纠错实现前端标记定位&#xff0c;点击可以联动&#xff01;

VM下kali设置桥接网络

一、查看主机ip 1.winr输入cmd 2.进入终端输入ipconfig 3.查看ip 二、虚拟机网络设置 1.进入vm的虚拟网络编辑器 2.桥接网卡自己选&#xff0c;1是有线网卡2是无线网卡&#xff0c;选择记得点应用 3.虚拟机的网络适配器也要选择桥接模式 三、kali网络配置 1.打开kali终端编辑文…

基于Spring Boot的库存管理系统

TOC springboot265基于Spring Boot的库存管理系统 绪论 1.1 选题动因 在现在社会&#xff0c;对于信息处理方面&#xff0c;是有很高的要求的&#xff0c;因为信息的产生是无时无刻的&#xff0c;并且信息产生的数量是呈几何形式的增加&#xff0c;而增加的信息如何存储以及…

linux下QOS:理论篇

关于qos &#xff0c;也是linux下面必备功能之一&#xff0c;一般只需要结合iptables/etables/iproute2 和tc配合即可实现大部分功能. 网上讲这么方面的资料很多&#xff0c;大部分都讲tc命令的应用.这里就先从理论入手. QoS&#xff08;Quality of Service&#xff09;服务质…

WSL2 使用usbipd工具 连接USB设备

Connect USB devices | Microsoft Learn 使用开源工具usbipd&#xff0c;可以让usb设备连接WSL https://github.com/dorssel/usbipd-win usbipd list 可以查看连接到win上的设备。 把USB设备从win转移到WSL需要执行下面两个指令。 usbipd bind --busid <BUSID> usb…

Shiro-721 分析

前言 shiro-550漏洞的产生源自硬编码问题&#xff0c;在 1.2.4之前&#xff0c;密钥在代码中是固定的 而在1.2.5 < Apache Shiro < 1.4.1&#xff0c;我们再看AbstractRememberMeManager类&#xff0c;已经修改为生成随机的密钥 在本篇文章中&#xff0c;分析着重于代…

电子电气架构---EEA的发展趋势

我是穿拖鞋的汉子&#xff0c;魔都中坚持长期主义的汽车电子工程师。 老规矩&#xff0c;分享一段喜欢的文字&#xff0c;避免自己成为高知识低文化的工程师&#xff1a; 屏蔽力是信息过载时代一个人的特殊竞争力&#xff0c;任何消耗你的人和事&#xff0c;多看一眼都是你的不…

RPA自动化流程机器人在财税管理中的作用

随着科技的飞速发展&#xff0c;人工智能和自动化技术正在改变市场竞争的格局&#xff0c;企业对于提高工作效率和准确性的要求日益提高。财税管理作为企业运营管理的核心环节之一&#xff0c;其数字化程度决定了企业发展的速度、广度和深度。因此&#xff0c;财税数字化成为各…