Image ABCPdf-图像格式不合适

Image ABCPdf-图像格式不合适,image,asp.net-core,abcpdf,Image,Asp.net Core,Abcpdf,最后,我的目标是从前端发送原始图像数据,然后将该图像拆分为任意多个页面,最后将该pdf发送回前端供下载 但每次我使用theDoc.addImageFile时,它都会告诉我图像的格式不合适。我将此作为参考: 为了排除故障,我认为图像可能无法正确渲染,因此我添加了一个File.writealBytes来查看渲染图像,这正是我想要的,但仍然没有添加到PDF中。我还尝试发送先前渲染图像的实际路径,认为新图像可能尚未完全创建,但它也给了我相同的错误。最后,我认为PNG可能有问题,并改为JPG,但它不起作用

最后,我的目标是从前端发送原始图像数据,然后将该图像拆分为任意多个页面,最后将该pdf发送回前端供下载

但每次我使用theDoc.addImageFile时,它都会告诉我图像的格式不合适。我将此作为参考:

为了排除故障,我认为图像可能无法正确渲染,因此我添加了一个File.writealBytes来查看渲染图像,这正是我想要的,但仍然没有添加到PDF中。我还尝试发送先前渲染图像的实际路径,认为新图像可能尚未完全创建,但它也给了我相同的错误。最后,我认为PNG可能有问题,并改为JPG,但它不起作用

代码如下:

[HttpPost]
public IActionResult PrintToPDF(string imageString)
{
    // Converts dataUri to bytes
    var base64Data = Regex.Match(imageString, @"data:image/(?<type>.+?),(?<data>.+)").Groups["data"].Value;
    var binData = Convert.FromBase64String(base64Data);

    /* Ultimately will be removed, but used for debugging image */
    string path = Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments);
    string imgName= "Test.jpg";
    string filename = Path.Combine(path, imgName);

    System.IO.File.WriteAllBytes(filename, binData);
    /***********************************************************/

    using (Doc theDoc = new Doc())
    {
        // Using explicit path
        theDoc.AddImageFile(@"C:\Users\User\Documents\Test.jpg", 1);
        // Using variable
        //theDoc.AddImageFile(filename, 1);
        // What I really want
        //theDoc.AddImageFile(binData , 1);

        theDoc.Page = theDoc.AddPage();
        theDoc.AddText("Thanks");
        Response.Headers.Clear();
        Response.Headers.Add("content-disposition", "attachment; filename=test.pdf");
        return new FileStreamResult(theDoc.GetStream(), "application/pdf");
    }
}

尝试以下未经测试但已从我自己的代码中清理的内容:

    public int AddImageFile(Doc doc, byte[] data, int insertBeforePageID)
    {
        int pageid;

        using (var img = new XImage())
        {
            img.SetData(data);

            doc.Page = doc.AddPage(insertBeforePageID);
            pageid = doc.Page;
            doc.AddImage(img);
            img.Clear();
        }
        return pageid;
    }

要从字节数组添加JPEG,需要Doc.AddImageData而不是Doc.AddImageFile。请注意,AddImageFile/AddImageData不支持PNG,因此您肯定需要使用XImage。文档具有当前支持的图像格式。

您使用的是哪一版本的ABCpdf?@PGTips我们一直使用DinkToPDF来呈现PDF,但看看我的提交,我们使用的是ABCpdfCORE版本。11.2.3由于我们选择了不同的解决方案DinkToPDF,因此无法对此进行测试。我看看有没有时间能回到那个分支。但是根据我的尝试,将图像包装到using块中是我没有尝试过的,所以这可能会奏效。我认为更重要的是使用XImage将其添加到文档中。我使用此代码将TIFF扫描转换为PDF。