c# - iText7 & C# 从存储在 MSSQL DB 中的 PDF 中提取页面
问题描述
我有一个 PDF 文档已经存储在数据库中。它存储为“图像”数据类型(我别无选择)。我正在使用 iText 7 在 C# .NET 中工作,并且数据库是 MSSQL。我想将该数据库数据解析为该文件的较小部分。我没有原始 PDF 文件,只有存储在数据库中的图像。
我想将原始 PDF 数据(图像)分成页面。也就是说,如果我们有原始文件,我想将该大文件按每 2 页拆分为新文件(例如,10 页 PDF 将变为 5 个文件,每个 2 页)。然后我想将那些较小的“PDF”也存储到数据库中。
有没有办法完全在代码中做到这一点?还是我需要在文件系统中创建一个 PDF 文件,然后基于该文件创建新文件,然后将单个文件导入回数据库?
谢谢您的帮助。
解决方案
阅读 MemoryStream,它可以在不创建文件的情况下保存您的数据。例子,
// database part here
SqlDataReader dr = cmd.ExecuteReader();
if (dr.Read())
{
byte[] pdf = (byte[])dr["image_pdf"];
MemoryStream ms = new MemoryStream(picarr);
ms.Seek(0, SeekOrigin.Begin);
// PDF part here
Document doc = new Document();
PdfWriter writer = PdfWriter.GetInstance(doc, ms);
doc.Open();
...
推荐阅读
- javascript - 我如何编写一种方法来“退格”文本文档中的一行
- reactjs - 导出 react-scrollmagic 时的问题
- android - 如何在 androidStudio 中为组应用样式
- sql - 如何在表格中加入分组和过滤字段?
- javascript - package.json 是否应该包含在 .prettierignore 文件中?
- angular - 如何将外部 html 和 js 脚本添加到 Angular 9 视图中
- c# - 如何使用 System.Text.Json 将 json 数组转换为集合;
- java - 如何解决android权限授予问题?
- mysql - 将项目添加到 MySQL 数据库的问题
- java - Java KeyStore jceks.key.serialFilter 或 jdk.serialFilter 异常