[英]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.