JSL721 Ответов: 1

C# как конвертировать файлы в потоки памяти?


В моем случае я учусь конвертировать 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");

1 Ответов

Рейтинг:
2

Lockwood

Что-то вроде этого?

IO.FileStream fs = new IO.FileStream(myFile, IO.FileMode.Open, IO.FileAccess.Read);
IO.MemoryStream ms = new IO.MemoryStream();
fs.CopyTo(ms);


Pete O'Hanlon

Прежде чем кто - нибудь спросит- мое обновление одобряло это из очереди модерации :)