В начале хочу сказать, что я новичок в C #, так что наберитесь терпения :)
У меня есть массив байтов. Один элемент представляет страницу файла PDF. Теперь мне нужно объединить эти массивы в один. Я надеюсь, что этот новый массив покажет две страницы одна над другой. В этом случае:
Page1 (из позиций [0])
Страница2 (из Элементов [1.])
Это хорошая идея? Мне нужно это, чтобы прикрепить PDF как изображения к службам отчетов без использования базы данных.
<Ч />
EDIT:
Вот мой код:
System.Collections.ArrayList items = new System.Collections.ArrayList();
System.IO.FileStream fs = new System.IO.FileStream("C://1.pdf", System.IO.FileMode.Open, System.IO.FileAccess.Read);
byte[] pdf = new byte[fs.Length];
fs.Read(pdf, 0, (int)fs.Length);
PDFParser.Parse parser = new PDFParser.Parse();
System.Collections.Generic.List<System.Drawing.Image> images = parser.Split(pdf);
object dataByte = null;
for (int i = 0; i < images.Count; i++)
{
System.IO.MemoryStream ms = new System.IO.MemoryStream();
images[i].Save(ms, System.Drawing.Imaging.ImageFormat.Png);
items.Add(ms.ToArray());
}
и метод из PDFParser.dll:
public class Parse
{
public List<Image> Split(byte[] document)
{
System.IO.MemoryStream ms = new System.IO.MemoryStream(document);
Document pdfDoc = new Document(new BinaryReader(ms));
Page page = null;
List<Image> returnVal = new List<Image>();
float resolution = 100;
float scale = resolution / 72f;
int bmpW = (int) (scale * pdfDoc.Pages[0].Width);
int bmpH = (int) (scale * pdfDoc.Pages[0].Height);
for (int i = 0; i < pdfDoc.Pages.Count; i++)
{
page = pdfDoc.Pages[i];
using (Bitmap bitmap = new Bitmap(bmpW, bmpH))
{
Graphics graphics = Graphics.FromImage(bitmap);
graphics.ScaleTransform(scale, scale);
graphics.SmoothingMode = System.Drawing.Drawing2D.SmoothingMode.AntiAlias;
page.Draw(graphics);
returnVal.Add((Image)bitmap.Clone());
}
}
return returnVal;
}
}
Программа третьей стороны, которую я использовал:
http://www.tallcomponents.com/pdfrasterizer3.aspx