首页 > 解决方案 > iText7 & C# 从存储在 MSSQL DB 中的 PDF 中提取页面

问题描述

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

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

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

谢谢您的帮助。

标签: c#.netpdfitextitext7

解决方案


阅读 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();
    ...

推荐阅读