iText7 & C# 从存储在 MSSQL DB 中的 PDF 中提取页面

Posted

技术标签:

【中文标题】iText7 & C# 从存储在 MSSQL DB 中的 PDF 中提取页面【英文标题】:iText7 & C# extract pages from PDF stored in MSSQL DB 【发布时间】:2020-08-03 11:51:42 【问题描述】:

我有一个已存储在数据库中的 PDF 文档。它存储为“图像”数据类型(我别无选择)。我正在使用 iText 7 在 C# .NET 中工作,数据库是 MSSQL。我想将该数据库数据解析为该文件的较小部分。我没有原始的 PDF 文件,只有存储在数据库中的图像。

我想将原始 PDF 数据(图像)分成页面。也就是说,如果我们有原始文件,我想将该大文件按每 2 页拆分为新文件(例如,10 页 PDF 将变为 5 个文件,每个 2 页)。然后我想将那些较小的“PDF”也存储到数据库中。

有没有办法完全在代码中做到这一点?或者我需要在文件系统中创建一个PDF文件,然后基于该文件创建新文件,然后将单个文件导入回数据库中?

感谢您的帮助。

【问题讨论】:

【参考方案1】:

了解 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();
    ...

【讨论】:

以上是关于iText7 & C# 从存储在 MSSQL DB 中的 PDF 中提取页面的主要内容,如果未能解决你的问题,请参考以下文章

有没有办法使用 iText7 使第一个字符变成不同的颜色?

iText7 图像质量优化器不能作为文档工作

iText7在新的pdf文档上合并pdf注释

itext 7 c#中的多行页脚

C# & ASP.NET MVC 5 - 从按钮单击执行存储过程,没有返回值

将 XML 从 C# 传递到 SQL Server