When we convert the attached word document to PDF using Aspose Words old way of converting to PDF and new way of converting to PDF, the size of the PDF as well as the output of the PDF are different.
First Issue: SaveToPDF generates twice the size of using Aspose PDF
Second Issue: Aspose PDF merges few words into one eating few spaces between words. You will see that in the first paragraph of the outcome.
OLD CODE:
MemoryStream msDocument = null;
// Create Document instance
var docWord = new Document(@"c:\a1.doc");
docWord.Range.UpdateFields();
// Opening the Memory Stream
msDocument = new MemoryStream();
docWord.SaveOptions.PdfExportImagesFolder = @"c:\";
docWord.SaveOptions.HtmlExportImagesFolderAlias = @"c:\";
docWord.Save(msDocument, SaveFormat.AsposePdf);
// Seek to the beginning so it can be read by XmlDocument.
msDocument.Seek(0, SeekOrigin.Begin);
// Creating the XML Document using Memory Stream
var xmlDoc = new XmlDocument();
xmlDoc.Load(msDocument);
var generatedPdf = new Pdf();
generatedPdf.BindXML(xmlDoc, null);
generatedPdf.IsImagesInXmlDeleteNeeded = true;
generatedPdf.IsTruetypeFontMapCached = true;
generatedPdf.TruetypeFontMapPath = Path.GetTempPath();
generatedPdf.PageSetup.PageHeight = PageSize.A4Height;
generatedPdf.PageSetup.PageWidth = PageSize.A4Width;
// Adding privileges to PDF Document generatedPdf.Security = new Security
{
IsAnnotationsModifyingAllowed = false,
IsContentsModifyingAllowed = false,
IsCopyingAllowed = false,
IsPrintingAllowed = true,
IsFormFillingAllowed = false
};
generatedPdf.Save(@"c:\hb23.pdf");
NEW CODE
// Open the document.
var doc = new Document(@"c:\a1.doc");
// Get all shapes in the document.
NodeCollection shapes = doc.GetChildNodes(NodeType.Shape, true);
// Loop through all shapes.
foreach(Shape shape in shapes)
{
// If shape contains a vector image, convert it to raster image.
if (shape.HasImage && (shape.ImageData.ImageType == ImageType.Wmf || shape.ImageData.ImageType == ImageType.Emf))
{
using(var vectorImageStream = new MemoryStream(shape.ImageData.ImageBytes))
{
using(Image image = Image.FromStream(vectorImageStream))
{
using(var rasterImageStream = new MemoryStream())
{
image.Save(rasterImageStream, ImageFormat.Jpeg);
shape.ImageData.SetImage(rasterImageStream);
}
}
}
}
}
var opt = new PdfOptions
{
JpegQuality = 75
};
doc.SaveToPdf(0, doc.PageCount, @"c:\newway.pdf", opt);
var fileSecurity = new Aspose.Pdf.Kit.PdfFileSecurity(@"c:\newway.pdf", @"c:\newwaysecured.pdf");
fileSecurity.SetPrivilege(Aspose.Pdf.Kit.PdfPrivilege.Assembly | Aspose.Pdf.Kit.PdfPrivilege.ScreenReaders);
doc = null;