I am trying to crop the pages of a document using the RA SDK. Here is the code I have so far...
const int pageWidth = 2550;
const int pageHeight = 3300;
DocumentInfo doc = Document.GetDocumentInfo(entryId, session);
for (int pageNumber = 1; pageNumber <= doc.PageCount; pageNumber++)
{
var repositoryPage = doc.GetPageInfo(pageNumber);
if (repositoryPage.ImageWidth > pageWidth || repositoryPage.ImageHeight > pageHeight)
{
using (var reader = repositoryPage.ReadPagePart(PagePart.Image))
{
// Move to stream so FromStream will recognize it as a TIFF image
using (MemoryStream mstream = new MemoryStream())
{
reader.CopyTo(mstream);
// Resize Image
Rectangle cropRect = new Rectangle(0, 0, pageWidth, pageHeight);
Bitmap src = Image.FromStream(mstream) as Bitmap;
Bitmap target = new Bitmap(cropRect.Width, cropRect.Height);
Bitmap bmpImage = new Bitmap(src);
var dest = bmpImage.Clone(cropRect, src.PixelFormat);
// Save resized document as a TIFF
using (MemoryStream memoryStream = new MemoryStream())
{
dest.Save(memoryStream, ImageFormat.Tiff);
// Write page back to Laserfiche document
using (Stream writer = repositoryPage.WritePagePart(PagePart.Image, (int)memoryStream.Length))
{
byte[] buffer = new byte[0x8000];
int count;
while ((count = memoryStream.Read(buffer, 0, buffer.Length)) > 0)
writer.Write(buffer, 0, count);
}
}
}
}
}
}
First off, this code does not work. When I look at the page size of the document after this code runs it has not changed.
Secondly, it seems there should be an easier way to do this.
I am using version 10.2
Any help would be greatly appreciated.