如何打开PDF,然后将其压缩,然后用C#创建一个Base64编码的字符串



我的任务是将从文件系统检索到的Zipped PDF嵌入到C#中的XML文档中。规范规定:

例如,检索文件"INV001.pdf">

压缩它以获得一个"INV001.zip"文件。

2/将每个.zip编码为Base64格式

目标是将zip文件(一个二进制对象(转换为文本文件。

文本文件的内容将是一个文本字符串,我们将能够复制/粘贴到.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);
}
}
}
}

相关内容

  • 没有找到相关文章

最新更新