簡體   English   中英

如何打開 PDF 然后 ZIP 它然后在 ZD7EFA19FBE7D3972FD5ADB602422 中創建 Base64 編碼字符串

[英]How can I open a PDF then ZIP it and then create a Base64 encoded string in C#

我的任務是將從文件系統檢索到的壓縮 PDF 嵌入到 C# 中的 XML 文檔中。 該規范指出:

例如,檢索文件“INV001.pdf”

將其壓縮以獲得“INV001.zip”文件。

2/將每個.zip編碼為Base64格式

目標是將 zip 文件(二進制 object)轉換為文本文件。

文本文件的內容將是一個文本字符串,我們可以將其復制/粘貼到 .xml 文件中

這是我必須使用代碼的地方

string docText = null;
using (FileStream originalFileStream = File.Open(myFilePath, FileMode.Open))
{
    using (FileStream compressedFileStream = File.Create("compressed.gz"))
    {
        using (var compressor = new GZipStream(compressedFileStream, CompressionMode.Compress, true))
        {
            originalFileStream.CopyTo(compressor);
            using (StreamReader sr = new StreamReader(compressor))
            {
                docText = sr.ReadToEnd();
            }
        }
    }
}

代碼拋出異常就行

using (StreamReader sr = new StreamReader(compressor))

“流不可讀”。 我在正確的軌道上嗎? 不需要存儲 ZIP,只需將其作為 Base64 文本粘貼到 XML 文件中。 我發現一些關於 SO 的文章暗示了一些方法,但似乎沒有一個有效! 非常感謝

這似乎有效:

string docText = null;
byte[] data;
using (FileStream originalFileStream = File.Open(myFilePath, FileMode.Open))
{
    using (FileStream compressedFileStream = File.Create("compressed.gz"))
    {
        using (var compressor = new GZipStream(compressedFileStream, CompressionMode.Compress, true))
        {
            originalFileStream.CopyTo(compressor);
            using (MemoryStream ms = new MemoryStream())
            {
                compressor.BaseStream.Seek(0, SeekOrigin.Begin);
                compressor.BaseStream.Position = 0;
                compressor.BaseStream.CopyTo(ms);
                data = ms.ToArray();
                docText = Convert.ToBase64String(data);
            }
        }
    }
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM