- Home
- Forum
- Xamarin.Forms
- Total PDF Megabite size too large from images
Total PDF Megabite size too large from images
I had this problem writing in Xcode, there are 7 pages to the PDF with 8 JPG's photos, the problem is the images add too much to the file size, I need to add some compression to the code below
The PDF is 20MB, I need to get it down to under 5MB
var exists = await ApplicationData.Current.LocalFolder.TryGetItemAsync("appFiles\\peopleImage1.jpg") as IStorageFile;
byte[] fileBytes = null;
if (exists != null)
{
using (IRandomAccessStreamWithContentType stream = await exists.OpenReadAsync())
{
fileBytes = new byte[stream.Size];
using (DataReader reader = new DataReader(stream))
{
await reader.LoadAsync((uint)stream.Size);
reader.ReadBytes(fileBytes);
}
}
Stream imageStreamPeople1 = new MemoryStream(fileBytes);
PdfBitmap imagePeople1 = new PdfBitmap(imageStreamPeople1);
graphics.DrawImage(imagePeople1, 20, 575, 230, 160);
}
byte[] fileBytes = null;
if (exists != null)
{
using (IRandomAccessStreamWithContentType stream = await exists.OpenReadAsync())
{
fileBytes = new byte[stream.Size];
using (DataReader reader = new DataReader(stream))
{
await reader.LoadAsync((uint)stream.Size);
reader.ReadBytes(fileBytes);
}
}
Stream imageStreamPeople1 = new MemoryStream(fileBytes);
PdfBitmap imagePeople1 = new PdfBitmap(imageStreamPeople1);
graphics.DrawImage(imagePeople1, 20, 575, 230, 160);
}
This is the Xcode snippet with compression in the " UIImage *imageR = [UIImage imageWithData:UIImageJPEGRepresentation(image, 0.02)];" line
NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
NSData *ImageDataFly1 = [defaults objectForKey:@"photoCP1"];
self.photoCurrysPeople1.image = [UIImage imageWithData:ImageDataFly1];
CGRect imageRect = CGRectMake(80, 890, 280, 180);
UIImage *image = [UIImage imageWithData:ImageDataFly1];
UIImage *imageR = [UIImage imageWithData:UIImageJPEGRepresentation(image, 0.02)];
[imageR drawInRect:imageRect];
SIGN IN To post a reply.
6 Replies
CP
Corey Powell
November 8, 2016 02:24 PM UTC
Thought I had found the answer with the snippet below, but I get the error "PdfBitmap does not contain a definition for "Quality" should there be an additional assemblie reference for this method in "UWP" on top of these two "using Syncfusion.Pdf; using Syncfusion.Pdf.Graphics;"
PdfBitmap img = new PdfBitmap("Input.jpg");
//Reduces the quality of the image
img.Quality = 50;
//Reduces the quality of the image
img.Quality = 50;
SK
Sasi Kumar Sekar
Syncfusion Team
November 9, 2016 03:34 PM UTC
Hi Corey,
Thank you for your update,
In UWP platform we don’t have property called “Quality” in PdfBitmap class, so It is not visible in UWP . However we are trying creating a sample to reduce the image size in UWP and we will update you once we completed the sample. Meanwhile can you please confirm whether you are using UWP or Xamarin platform.
Regards,
Sasi kumar S.
CP
Corey Powell
February 1, 2017 10:03 AM UTC
Hi I am back onto trying to resolve this issue, I am using UWP
SK
Sasi Kumar Sekar
Syncfusion Team
February 2, 2017 02:06 PM UTC
Hi Corey,
Thank you for your update,
Currently, we do not have support for reducing the Quality of the image through Quality property. We have created the work around sample to reduce the quality of the image, by decoding and scaling the image. This reduces the output PDF size considerably. Please find the size comparison in the below table.
The input Image size: 170KB
| PDF size without compression | PDF size after compressing the images |
| 147KB | 33KB |
Sample:
Please try the attached sample and let us know if this satisfies your requirement.
Regards,
Sasi Kumar S.
CP
Corey Powell
February 7, 2017 08:26 AM UTC
Worked great, Thank you
SK
Sasi Kumar Sekar
Syncfusion Team
February 8, 2017 05:42 AM UTC
Hi Corey,
Thank you for your update. Please let us know if you need further assistance, we are happy to assist you always.
Regards,
Sasi Kumar S.
SIGN IN To post a reply.
- 6 Replies
- 2 Participants
-
CP Corey Powell
- Nov 8, 2016 01:27 PM UTC
- Feb 8, 2017 05:42 AM UTC