C#如何将文件转换为内存流?

C#如何将文件转换为内存流?,c#,memory,stream,aspose,C#,Memory,Stream,Aspose,在我的例子中,我正在学习将PDF转换为BMP,然后将BMP转换为PDF 我确实是由输入和输出的文件组成的。 顺便说一下,我想制作内存流而不是文件,但我想保留“a.pdf”和“a_bmp.pdf”。 我打了(#)。我想在此部分(#)中将文件转换为内存流。这是我的密码。 你能告诉我如何将文件转换成内存流吗 Aspose.Pdf.Document pdfDocument = new Aspose.Pdf.Document("a.pdf"); for (int pageCount = 1; pag

在我的例子中,我正在学习将PDF转换为BMP,然后将BMP转换为PDF

我确实是由输入和输出的文件组成的。 顺便说一下,我想制作内存流而不是文件,但我想保留“a.pdf”和“a_bmp.pdf”。 我打了(#)。我想在此部分(#)中将文件转换为内存流。这是我的密码。 你能告诉我如何将文件转换成内存流吗

 Aspose.Pdf.Document pdfDocument = new Aspose.Pdf.Document("a.pdf");

 for (int pageCount = 1; pageCount <= pdfDocument.Pages.Count; pageCount++)
            {
                string f = String.Format("{0:D2}", pageCount);
                using (FileStream imageStream = new FileStream(#"a_" + f + "_out" + ".bmp", FileMode.Create))
                {                     
                    Resolution resolution = new Resolution(100);                                         
                    BmpDevice bmpDevice = new BmpDevice(resolution);                     
                    bmpDevice.Process(pdfDocument.Pages[pageCount], imageStream);                       
                    imageStream.Close();   
                }
                using (Aspose.Imaging.Image image = Aspose.Imaging.Image.Load(#"a_" + f + "_out" + ".bmp"**))
                {
                    Aspose.Imaging.ImageOptions.BmpOptions Settings = new Aspose.Imaging.ImageOptions.BmpOptions();
                    Settings.BitsPerPixel = 24;

                    image.Save(#"a_" + f + "_out.bmp", Settings);
                }
            }

            Pdf pdf1 = new Pdf();

            foreach (string f in Directory.GetFiles(#"\\", "*_out.bmp"))
            {                   
                FileStream fs = new FileStream(f, FileMode.Open, FileAccess.Read);
                byte[] tmpBytes = new byte[fs.Length];
                fs.Read(tmpBytes, 0, Convert.ToInt32(fs.Length));

                MemoryStream mystream = new MemoryStream(tmpBytes);
                Bitmap b = new Bitmap(mystream);

                Aspose.Pdf.Generator.Section sec1 = new Aspose.Pdf.Generator.Section(pdf1);

                sec1.PageInfo.Margin.Top = 0;
                sec1.PageInfo.Margin.Bottom = 0;
                sec1.PageInfo.Margin.Left = 0;
                sec1.PageInfo.Margin.Right = 0;
                pdf1.Sections.Add(sec1);   

                Aspose.Pdf.Generator.Image image1 = new Aspose.Pdf.Generator.Image(sec1);              
                sec1.Paragraphs.Add(image1);
                image1.ImageInfo.ImageFileType = Aspose.Pdf.Generator.ImageFileType.Bmp;            
                image1.ImageInfo.ImageStream = mystream;
                image1.ImageScale = 1;
            }
            pdf1.Save("a_bmp.pdf");
Aspose.Pdf.Document pdfDocument=new Aspose.Pdf.Document(“a.Pdf”);

对于(int pageCount=1;pageCount请检查以下代码段,以便将图像文件导出到内存流对象中,并将相同的图像从流对象添加到另一个PDF中

Aspose.Pdf.Document document = new Aspose.Pdf.Document(dataDir + @"input.pdf");

var resolution = new Aspose.Pdf.Devices.Resolution(100);
var bmpDevice = new Aspose.Pdf.Devices.BmpDevice(resolution);

// Export image file to stream
MemoryStream bmpStream = new MemoryStream();
bmpDevice.Process(document.Pages[1], bmpStream);


Document doc = new Document();
Page currpage = doc.Pages.Add();
Aspose.Pdf.Image img = new Aspose.Pdf.Image();
img.ImageStream = bmpStream;
img.ImageScale = 1;
currpage.PageInfo.Margin.Top = currpage.PageInfo.Margin.Bottom = currpage.PageInfo.Margin.Right = currpage.PageInfo.Margin.Left = 0;
currpage.Paragraphs.Add(img);

doc.Save(dataDir + "output.pdf");
此外,您可以注意到,我没有使用Aspose.Pdf.Generator方法来实现所需的功能,因为旧的Aspose.Pdf.Generator方法在新版本的API中已被弃用,强烈建议使用新的Aspose.Pdf(DOM)模型


PS:我在Aspose担任技术支持开发人员。

请检查以下代码片段,以便将图像文件导出到内存流对象中,并将相同的图像从流对象添加到另一个PDF中

Aspose.Pdf.Document document = new Aspose.Pdf.Document(dataDir + @"input.pdf");

var resolution = new Aspose.Pdf.Devices.Resolution(100);
var bmpDevice = new Aspose.Pdf.Devices.BmpDevice(resolution);

// Export image file to stream
MemoryStream bmpStream = new MemoryStream();
bmpDevice.Process(document.Pages[1], bmpStream);


Document doc = new Document();
Page currpage = doc.Pages.Add();
Aspose.Pdf.Image img = new Aspose.Pdf.Image();
img.ImageStream = bmpStream;
img.ImageScale = 1;
currpage.PageInfo.Margin.Top = currpage.PageInfo.Margin.Bottom = currpage.PageInfo.Margin.Right = currpage.PageInfo.Margin.Left = 0;
currpage.Paragraphs.Add(img);

doc.Save(dataDir + "output.pdf");
此外,您可以注意到,我没有使用Aspose.Pdf.Generator方法来实现所需的功能,因为旧的Aspose.Pdf.Generator方法在新版本的API中已被弃用,强烈建议使用新的Aspose.Pdf(DOM)模型


PS:我在Aspose担任支持开发人员。

您已经在代码中完成了!为什么要将所有内容都保存在内存中?:)因为速度太快了。我想将文件(扩展名:仅“.bmp”)转换为内存。您已经在代码中进行了转换!?你为什么要把所有的东西都记在记忆里?:)因为速度。我想将文件(扩展名:仅“.bmp”)转换为内存。再次感谢您的回答。我从你的回答中知道了这个问题。上次,我在这里问了我的问题。同时,非常感谢您在Aspose和stackoverflow中的回答。再次感谢您的回答。我从你的回答中知道了这个问题。上次,我在这里问了我的问题。同时,非常感谢您在Aspose和stackoverflow中的回答。