4步学会用Aspose在ASP.NET中将文档合并为PDF( 三 )

_logger;private readonly string _storageRootFolder;public MergeController(ILogger logger, IWebHostEnvironment env){_logger = logger;_storageRootFolder = Path.Combine(env.WebRootPath, "files");//var license = new License();//license.SetLicense(@"");}// POST: /api/merge[HttpPost]public IActionResult PostMergeFiles(IEnumerable list){//TODO: Implement Image to PDF conversionthrow new NotImplementedException();}}}如您所见 , 我们的控制器调用HTTP-Post方法来合并文档 。 现在我们实现此方法 。 我们合并的想法是将所有页面从一个文档添加到另一个文档 。 这很简单 , 因为我们知道Document类包含一个Pages集合 , 而最后一个具有Add方法 。
// POST: /api/merge[HttpPost]public IActionResult PostMergeFiles(IEnumerable list){var document = new Document();foreach (var item in list){var filePath = Path.Combine(_storageRootFolder, item);var pdfDocument = Path.GetExtension(item) switch{".jpg" => ConvertFromImage(filePath),".jpeg" => ConvertFromImage(filePath),".png" => ConvertFromImage(filePath),".oxps" => new Document(filePath, new XpsLoadOptions()),_ => new Document(filePath)};document.Pages.Add(pdfDocument.Pages);pdfDocument.Dispose();}var guid = Guid.NewGuid();document.Save(Path.Combine(_storageRootFolder, $"{guid}.pdf"));_logger.LogInformation($"The merge result saved as: {guid}");return Ok(new { filename = guid.ToString() });}private Document ConvertFromImage(string filePath){var docStream = new MemoryStream();var doc = new Document();var page = doc.Pages.Add();var image = new Aspose.Pdf.Image{ImageStream = new FileStream(filePath, FileMode.Open, FileAccess.Read)};page.PageInfo.Margin.Bottom = 0;page.PageInfo.Margin.Top = 0;page.PageInfo.Margin.Left = 0;page.PageInfo.Margin.Right = 0;var imageSize = System.Drawing.Image.FromStream(image.ImageStream).Size;page.PageInfo.Width = imageSize.Width;page.PageInfo.Height = imageSize.Height;page.Paragraphs.Add(image);doc.Save(docStream);return doc;}}步骤2:实现用于将图像转换为PDF的辅助方法
private Document ConvertFromImage(string filePath){var docStream = new MemoryStream();var doc = new Document();var page = doc.Pages.Add();var image = new Aspose.Pdf.Image{ImageStream = new FileStream(filePath, FileMode.Open, FileAccess.Read)};page.PageInfo.Margin.Bottom = 0;page.PageInfo.Margin.Top = 0;page.PageInfo.Margin.Left = 0;page.PageInfo.Margin.Right = 0;var imageSize = System.Drawing.Image.FromStream(image.ImageStream).Size;page.PageInfo.Width = imageSize.Width;page.PageInfo.Height = imageSize.Height;page.Paragraphs.Add(image);doc.Save(docStream);return doc;}本文示例演示了Aspose.PDF库在ASP.NET Core环境中的正常运行 。 该应用程序的目的是展示使用.NET Core的Aspose.PDF合并任何文档并将其保存为PDF格式的可能性 , 并且可能需要对其进行改进 。 例如 , 此程序不考虑保存具有相同名称的文件 。 该问题的可能解决方案是使用具有生成名称的文件夹上载每个文档或使用数据库存储文件 。
【4步学会用Aspose在ASP.NET中将文档合并为PDF】如果您有任何疑问或需求 , 请随时加入Aspose技术交流群(642018183) , 我们很高兴为您提供查询和咨询 。