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 (将#修改为@)