微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

PDFium - 从图像流创建 PDF 文档,而无需在 C# 中转换为位图

如何解决PDFium - 从图像流创建 PDF 文档,而无需在 C# 中转换为位图

我正在使用 PDFium c# 工具从 PNG 图像流创建 PDF 文档。

我有一个获取多个图像流对象的 API,我应该组合图像流并创建一个 PDF 文档和 PDF 流。我需要点击另一个 API 来保存这个文档。

我经历了 PDFium documentation 但是,示例显示了如何从图像而不是从流加载 PDF

我们需要从 Stream 创建一个图像来加载 PDF 还是有其他替代方法

非常感谢任何帮助

提前谢谢

我根据文档创建的示例代码

public void GeneratePdfFromimagestream(List<Stream> imagestreams,String pdfSaveLocation = null)
    {
        int pageIndex = 0;
        //Initialize C# PDF Library
        PdfCommon.Initialize();
        //Create a PDF document
        using (var doc = PdfDocument.CreateNew())
        {

            foreach (var imagestream in imagestreams)
            {

                //I am creating a Bitmap image here,is there a way I can achevie the same withrout creating the image 
                 var image = System.Drawing.Bitmap.FromStream(imagestream,true) as System.Drawing.Bitmap;

                //Create empty PdfBitmap
                using (PdfBitmap pdfBitmap = new PdfBitmap(image.Width,image.Height,true))
                {
                    using (var g = system.drawing.graphics.FromImage(pdfBitmap.Image))
                    {
                        //Draw image to PdfBitmap
                        g.DrawImage(image,image.Width,image.Height);
                    }
                    //Create Image object
                    var imageObject = PdfImageObject.Create(doc,pdfBitmap,0);
                    //Calculate size of image in PDF points
                    var size = CalculateSize(pdfBitmap.Width,pdfBitmap.Height,image.HorizontalResolution,image.VerticalResolution);
                    //Add empty page to PDF document
                    doc.Pages.InsertPageAt(pageIndex,size);
                    //Insert image to newly created page
                    doc.Pages[pageIndex].PageObjects.Add(imageObject);
                    //set image matrix
                    imageObject.Matrix = new FS_MATRIX(size.Width,size.Height,0);
                    //Generate PDF page content to content stream
                    doc.Pages[pageIndex].GenerateContent();
                    pageIndex++;
                }
            }
            // Save  PDF document as "saved.pdf" in no incremental mode
            if (string.IsNullOrWhiteSpace(pdfSaveLocation))
                doc.Save($"saved_{Guid.NewGuid().ToString()}.pdf",SaveFlags.NoIncremental);
        }

    }

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。