教程:使用C#实现PDF文件和字节数组的相互转换

2023-11-18

字节数组有助于存储或传输数据。同样,PDF文件格式因其功能和兼容性而广受欢迎。可以使用C#语言将PDF文件转换为字节数组,也可以将字节数组转换为PDF文件。这可以帮助更有效地在数据库中存储和归档PDF文件,还可以通过使用字节数组来序列化数据。让我们探讨这些格式的互转换性。(点击下载

  • 使用C#将PDF文件转换为字节数组
  • 使用C#将字节数组转换为PDF文件

使用C#将PDF文件转换为字节数组

可以将PDF转换为字节数组,以便传输或存储它以进行进一步处理。例如,您可能需要序列化PDF文档,然后将其转换为字节数组会有所帮助。您需要按照以下步骤将PDF转换为字节数组:

  • 加载输入PDF文件
  • 初始化字节数组
  • 初始化FileStream对象
  • 将文件内容加载到字节数组中

以下代码显示了如何使用C#将PDF文件转换为字节数组,其中将所得的ByteArray传递给将输入文件转换为图像的方法:

dataDir = @"D:\Test\";

// Load input PDF file
string inputFile = dataDir + @"testpdf.pdf";

// Initialize a byte array
byte[] buff = null;

// Initialize FileStream object
FileStream fs = new FileStream(inputFile, FileMode.Open, FileAccess.Read);
BinaryReader br = new BinaryReader(fs);
long numBytes = new FileInfo(inputFile).Length;

// Load the file contents in the byte array
buff = br.ReadBytes((int) numBytes);
fs.Close();

// Work with the PDF file in byte array
ConvertPDFToJPEG(buff, 300, dataDir);


public static void ConvertPDFToJPEG(Byte[] PDFBlob, int resolution, string dataDir)
{
    // Open document
    using (MemoryStream InputStream = new MemoryStream(PDFBlob))
    {
        Aspose.Pdf.Document pdfDocument = new Aspose.Pdf.Document(InputStream);

        for (int pageCount = 1; pageCount <= pdfDocument.Pages.Count; pageCount++) { using (FileStream imageStream = new FileStream(dataDir + "image" + pageCount + "_out" + ".jpg", FileMode.Create)) { // Create JPEG device with specified attributes // Width, Height, Resolution, Quality // Quality [0-100], 100 is Maximum // Create Resolution object Aspose.Pdf.Devices.Resolution res = new Aspose.Pdf.Devices.Resolution(resolution); // JpegDevice jpegDevice = new JpegDevice(500, 700, resolution, 100); // added the following to determine if landscape or not Int32 height, width = 0; PdfFileInfo info = new PdfFileInfo(pdfDocument); width = Convert.ToInt32(info.GetPageWidth(pdfDocument.Pages[pageCount].Number)); height = Convert.ToInt32(info.GetPageHeight(pdfDocument.Pages[pageCount].Number)); Aspose.Pdf.Devices.JpegDevice jpegDevice = //new Aspose.Pdf.Devices.JpegDevice(Aspose.Pdf.PageSize.A4, res, 100); new Aspose.Pdf.Devices.JpegDevice(width, height, res, 100); // Convert a particular page and save the image to stream //Aspose.Pdf.PageSize.A4.IsLandscape = true; jpegDevice.Process(pdfDocument.Pages[pageCount], imageStream); // Close stream imageStream.Close(); } } } }

使用C#将字节数组转换为PDF文件

让我们进一步进行下一步,可以将字节数组转换为PDF文件。让我们通过将图像作为字节数组转换为PDF文件的示例来学习这一点。您需要按照以下步骤将字节数组转换为PDF文件。

  • 加载输入文件
  • 初始化字节数组
  • 将输入图像加载到字节数组中
  • 初始化Document类的实例
  • 在PDF页面上添加图像
  • 保存输出PDF文件

以下代码说明了如何使用C#以编程方式将字节数组转换为PDF文件:

// Load input file
string inputFile = dataDir + @"Test.PNG";

// Initialize byte array
byte[] buff = null;
FileStream fs = new FileStream(inputFile, FileMode.Open, FileAccess.Read);
BinaryReader br = new BinaryReader(fs);
long numBytes = new FileInfo(inputFile).Length;

// Load input image into Byte Array
buff = br.ReadBytes((int)numBytes);


Document doc = new Document();
// Add a page to pages collection of document
Page page = doc.Pages.Add();
// Load the source image file to Stream object
MemoryStream outstream = new MemoryStream();
MemoryStream mystream = new MemoryStream(buff);
// Instantiate BitMap object with loaded image stream
Bitmap b = new Bitmap(mystream);

// Set margins so image will fit, etc.
page.PageInfo.Margin.Bottom = 0;
page.PageInfo.Margin.Top = 0;
page.PageInfo.Margin.Left = 0;
page.PageInfo.Margin.Right = 0;

page.CropBox = new Aspose.Pdf.Rectangle(0, 0, b.Width, b.Height);
// Create an image object
Aspose.Pdf.Image image1 = new Aspose.Pdf.Image();
// Add the image into paragraphs collection of the section
page.Paragraphs.Add(image1);
// Set the image file stream
image1.ImageStream = mystream;

// Save resultant PDF file
doc.Save(outstream, SaveFormat.Pdf);
//doc.Save(dataDir + "outstream.pdf", SaveFormat.Pdf);

// Close memoryStream object
mystream.Close();

如果您有任何疑问或需求,请随时加入Aspose技术交流群(761297826),我们很高兴为您提供查询和咨询。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

教程:使用C#实现PDF文件和字节数组的相互转换 的相关文章

  • Java版PPT处理控件Aspose.Slides迎来v19.12升级!轻松创建旭日图并调整样式

    Aspose Slides for Java是独特的演示处理API 使应用程序能够读取 编写 修改和转换PowerPoint演示文稿 作为独立的API 它提供了管理PowerPoint关键功能的功能 例如管理文本 形状 表格和动画 向幻灯片
  • 无需MS Office!使用Aspose在C ++中以编程方式将 DOCX 转换为 DOC

    Microsoft Word 文档有两种格式 DOC 和 DOCX DOC 是一种较旧的格式 而 DOCX 是它的继任者 可以将 DOCX 文件转换为 DOC 格式 反之亦然 在本文中 将学习如何将 DOCX 文件转换为 DOC 格式以及如
  • 全面文档格式处理工具Aspose最新中文教程指南请查收!

    Aspose Total是一个完整的文档管理工具包 可让您创建 操作和转换各种Microsoft Office文档格式 PDF Web和图像格式 同时还使您可以处理电子邮件 OCR 3D和条形码等等 不仅如此 Aspose Total适用于
  • 孟言与郭安定畅谈office开发

    孟言与郭安定畅谈office开发 孟言 CSDN的观众朋友大家下午好 今天我特别高兴的邀请到我们飞升两岸的office开发专 家郭安定 老师来到我们演播室 郭 老师你好 郭安定 恩 孟言你好 CSDN观众朋友好 真的是在百忙之中 我们平常的
  • 如何在Java中将STL转换为PDF或PNG图像?试试这个

    STL文件用于显示3D曲面的几何形状 但是 只有少数与CAD相关的应用程序支持查看或使用STL文件 因此 您可能需要将STL文件转换为PDF或PNG图像 因为它广泛支持PDF或图像文件格式 所以它使您可以在许多操作系统和环境中概述文件 让我
  • 支持图文转换!PSD文档处理工具Aspose全新升级

    Aspose PSD是高级PSD和入门级AI文件格式操作API 允许创建和编辑Photoshop文件 并提供更新图层属性 添加水印 执行图形操作或将一种文件格式转换为另一种文件的功能 没有任何Adobe Photoshop或Adobe Il
  • 想在Android应用程序中将XLS文件转换为PDF吗?看完这篇教程就懂了

    在各种情况下 您可能需要通过Internet共享Excel文件 为避免篡改 最佳做法是在共享之前将这些文件转换为PDF格式 因此 在本文中 将学习如何在Android应用程序中将Excel XLSX或XLS文件转换为PDF 另外 还将讨论E
  • 如何使用Java以编程方式在Excel中创建数据透视表?

    Excel电子表格中的数据透视表用于以交互方式汇总数据 假设在工作表中有许多发票的数据 在这种情况下 可以使用数据透视表汇总按客户或产品分组的发票 在本文中 将学习如何以编程方式处理Excel中的数据透视表 特别是 将了解如何在Java中创
  • aspose文档格式转换

    文章目录 Word转Pdf html转pdf pdf转word Word转Pdf public static void main String args throws Exception Document doc new Document
  • 如何在 C# 中以编程方式将 IGS/IGES 文件转换为 PDF?

    计算机辅助设计应用程序使用 IGS 文件 因为它们包含设计信息 您可以将 IGS 文件转换为 PDF 格式的文档 以便在多个操作系统和环境中查看内容 使用 C 以编程方式将 IGS 或 IGES 文件转换为 PDF 使用高级选项将 IGES
  • 在WPF中将数据从数据库导出到Excel的快速解决方案

    Spire XLS一种专业且功能强大的Excel API 使开发人员 程序员可以使用其应用程序操作Excel文件 没有Microsoft Automation Spire XLS可使编程变得更加简单 免费下载 本文将介绍一种将数据从数据库导
  • 如何用Java将DWG和DXF文件转换为PDF?看了这篇就懂了

    CAD文件格式是设计师或建筑师在建筑 汽车 五金等各行各业制作图纸时使用的 DWG和DXF是最广泛使用的CAD格式 然而 你需要一个专门的软件来查看DWG和DXF文件中的内容 为了解决这个限制 你可以将CAD图纸转换为PDF格式 Aspos
  • excel转换pdf方法 (aspose.cells亲测有效)

    AsposeUtils java package com lmp test utils import com aspose cells License import com aspose cells PdfSaveOptions impor
  • 项目开发中开发文档出现的问题及其对策

    在常规项目开发管理中 很多项目专家都提出要用各种各样规范的文档对开发工作进行管理 但是在日常工作中 由于这些文档的编写的管理工作都是相当繁重的 以致让一线员工不能主动积极使用 更新这些文档 长期下来 这些管理型的 设计型的文档所发挥的作用就
  • 只需6行代码教你使用Spire.Doc在Java中将 Word 转为 Tiff

    Spire Doc for Java 是一款专业的Java Word组件 开发人员使用它可以轻松地将Word文档创建 读取 编辑 转换和打印等功能集成到自己的Java应用程序中 本文介绍如何使用Spire Doc for Java将Word
  • 教程:使用C#实现PDF文件和字节数组的相互转换

    字节数组有助于存储或传输数据 同样 PDF文件格式因其功能和兼容性而广受欢迎 可以使用C 语言将PDF文件转换为字节数组 也可以将字节数组转换为PDF文件 这可以帮助更有效地在数据库中存储和归档PDF文件 还可以通过使用字节数组来序列化数据
  • 使用Aspose在Java中将Excel文件转换为HTML

    Excel电子表格可让您以表格形式存储和组织数据 也可以执行计算以及生成不同类型的图形和图表以分析数据 但是 在各种情况下 可能需要执行Excel到HTML的转换才能将工作表转换为HTML页面 例如 将电子表格的内容嵌入到网页中时 因此 本
  • OpenXML SDK 2.0 与 Aspose 在 .NET 中生成服务器端 Word 2007 文档

    我将在 Net 中启动一个服务器端办公自动化项目 以下是计划的主要活动 创建一个word文档 使用现有的包含封面 页眉 页脚 目录的 Word 文档模板 保存存档 嵌入文件并调整大小 HTML 图像 Word Excel TOC 生成和格式
  • 将 HTML 转换为 doc(x) 和/或 PDF [关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 我必须将 html 转换为 doc x 和 pdf 格式 我找到了 aspose 但是这个工具可以完成比我需要的更多的工作 这就是为什么它
  • 安全方法为无安全性,但不允许页面提取和文档组装

    我有一个非常奇怪的问题 我不确定问题出在哪里 我正在创建 PDF 但未设置任何安全限制或密码 当我在 Adob e Reader DC 中打开 PDF 并获取属性时 它确实将安全方法显示为 无安全 但是 文档组装和页面提取设置为不允许 PD

随机推荐

  • 一键生成微信小程序的制作工具-小程序切片工具

    微信小程序前端开发者工具 小程序切片 是一款根据效果图像画画一样来设计微信小程序 自动生成导出前端页面的快速开发工具 可以很方便 快速地生成小程序的wxml wcss js文件 可以大大提高您的工作效率 减少前端布局的编写工作 功能如下 1
  • Node(4)

    文章目录 express跨域解决 路由传参 静态资源渲染 serve static MVC 1 新建文件夹 routers 路由管理utils工具类 2 新建文件夹 controller 请求处理 3 新建文件夹 model service
  • TensorRT学习(实战-自定义算子)

    YOLOv4进行TensorRT推理的时候会使用Mish激活函数 而使用到的mish激活函数没有在TensorRT进行实现 故需要进行实现对应TensorRT插件 故需要进行Mish激活函数的实现 Mish激活函数定义 def mish f
  • Arduino - 字符判断函数

    Arduino 字符判断函数 字符判断函数 虽然在实际编程中可能很少使用到 但是可以作为知识储备 有必要了解一些 这些函数包含在ctype h当中 Arduino IDE路径 C Program Files x86 Arduino hard
  • Python入门教程完整版,Python所有方向学习体系,学完即可就业

    今天给大家带来了干货 Python入门教程完整版 完整版啊 完整版 言归正传 小编该给大家介绍一下这套教程了 希望每个小伙伴都沉迷学习 无法自拔 本套教程学习时间15天 1 3天内容 为Linux基础命令 4 13天内容 为Python基础
  • 导入 导出 jeesite框架封装

    为什么80 的码农都做不了架构师 gt gt gt JeeSite的Excel导入 导出 支持大数据量 使用annotation最小化配置 介绍 对Apache POI 3 9的简单封装 实现Excel的导出导入功能 使用Annotatio
  • 数据库 --- 约束

    一 什么是约束 常见的约束有那些 约束是在创建表的时候 可以给表的字段添加相应的约束 添加约束的目的是为了保证表中数据的合法性 有效性 完整性 常见的约束有 非空约束 not null 唯一约束 unique 主键约束 primary ke
  • Some Tips in Life

    How to Find Digital Books 1 http so baiduyun me 百度云搜索 2 http www zhaofile com 找文件 3 http www cnepub com 掌上书苑 4 http vdis
  • java定义时钟类clock_Java 编程题,定义一个时钟类(Clock)

    题目 Java 编程题 定义一个时钟类 Clock 要求如下 1 存储时钟的时hour 0 23 分minute 0 59 秒second 0 59 2 创建新对象时默认为0时0分0秒 3 设置时钟为指定的时间 4 使时钟前进1秒钟的功能i
  • jstat 命令

    NAME jstat Monitors Java Virtual Machine JVM statistics This command is experimental and unsupported SYNOPSIS jstat Opti
  • mongoDB数据库----简介

    目录 目录 一 NoSQL 1 关系型数据库遵循ACID规则 2 分布式系统 3 分布式计算的优点 4 分布式计算的缺点 5 什么是NoSQL 6 NoSQL 简史 7 NoSQL的优点 缺点 8 NoSQL 数据库分类 二 MongoDB
  • 你知道ChatGPT有哪些商业价值吗?不知道,那没意思

    这段时间 热度zui大的是什么 答案是 ChatGPT 去年11月底上线 当时仅在AI和科技圈内小火了一把 没想到在今年春节后 火爆出圈 ChatGPT的爆火 对商家和品牌方 还有投资创业者来说 是个机遇 普通人虽然很难参与到这些高科技的投
  • Python 求两个正整数的最大公约数

    辗转相除法 思路 1 将两整数求余 a b x 2 如果x 0 则b为最大公约数 3 如果x 0 则 a b b x 继续从1开始执行 4 也就是说该循环的是否继续的判断条件就是x是否为0 代码如下 def main a int input
  • javascript经典代码推荐

  • 基于Matlab的高精度轨道传播器模拟

    基于Matlab的高精度轨道传播器模拟 传播器模拟是一种常见的工程方法 用于预测和分析卫星 火箭或其他天体在轨道上的运动 在这篇文章中 我们将使用Matlab编写一个高精度轨道传播器模拟器 并提供相应的源代码 轨道传播器模拟器的主要目标是根
  • FRP服务器搭建成功后,配置多个客户端使用

    FRP内网穿透服务器搭建成功后 在服务器后台启动FRP 然后还需要两步 第一 在域名购买的网站 比如阿里云 配置一条所有子域名到服务器IP的规则 第二 配置多个客户端 A电脑的配置信息如下 common server addr 服务器IP
  • 前端八股文系列(四)4 JavaScript

    文章目录 前端八股文系列 四 4 JavaScript JS中的8种数据类型及区别 JS中的数据类型检测方案 1 typeof 2 instanceof 3 Object prototype toString call instanceof
  • LeetCode-1781. 所有子字符串美丽值之和【哈希表,字符串,计数】

    LeetCode 1781 所有子字符串美丽值之和 哈希表 字符串 计数 题目描述 解题思路一 简单暴力 双层循环 重点是分别记录子字符串 i j 的最大最小频率 注意这里当i变的时候 所有字符出现的频率就清理 否则在原来的基础上加就行 解
  • 栈的应用一之括号匹配问题

    括号匹配问题 给一个类似这样的字符串 char a abc 检测三种括号的左右括号是否匹配 分析 先取出一个字符 并判断是不是括号 任意括号 1 不是括号 取下一个字符 2 是括号 1 是左括号 压栈 2 是右括号 和栈顶元素比较 栈空 前
  • 教程:使用C#实现PDF文件和字节数组的相互转换

    字节数组有助于存储或传输数据 同样 PDF文件格式因其功能和兼容性而广受欢迎 可以使用C 语言将PDF文件转换为字节数组 也可以将字节数组转换为PDF文件 这可以帮助更有效地在数据库中存储和归档PDF文件 还可以通过使用字节数组来序列化数据