gpt4 book ai didi

pdf - 具有透明度的 iTextSharp 图像提取

转载 作者:行者123 更新时间:2023-12-04 06:32:05 25 4
gpt4 key购买 nike

我正在使用 iTextSharp 并尝试从 PDF 中提取具有透明度的图像。当我提取图像时,透明度变成纯黑色并且丢失了。我发现了多个图像提取示例,但它们似乎都有相同的问题。我正在使用的代码如下

另一个示例来自 itextpdf.com/examples/iia.php?id=284。此示例包括顶部“结果”部分中的图像。如果单击 Img7.png您会在图像中看到黑色边框,但是在页面底部有指向原始图像的链接 info.png这显示了它应该看起来的透明度。这正是我遇到的问题。任何帮助或想法将不胜感激

public void ExtractImage(string pdfFile)
{
const int pageNumber = 1; //Page number to extract the image from
PdfReader pdf = new PdfReader(pdfFile);
PdfDictionary pg = pdf.GetPageN(pageNumber);
PdfDictionary res = (PdfDictionary)PdfReader.GetPdfObject(pg.Get(PdfName.RESOURCES));
PdfDictionary xobj = (PdfDictionary)PdfReader.GetPdfObject(res.Get(PdfName.XOBJECT));
foreach (PdfName name in xobj.Keys)
{
PdfObject obj = xobj.Get(name);
if (obj.IsIndirect())
{
PdfDictionary tg = (PdfDictionary)PdfReader.GetPdfObject(obj);
string width = tg.Get(PdfName.WIDTH).ToString();
string height = tg.Get(PdfName.HEIGHT).ToString();
ImageRenderInfo imgRI =
ImageRenderInfo.CreateForXObject(new Matrix(float.Parse(width), float.Parse(height)),
(PRIndirectReference)obj, tg);

var fileType= imgRI.GetImage().GetFileType();
RenderImage(imgRI, imgPath + +imgRI.GetRef().Number + "_" + imgRI.GetRef().Generation + "test." + fileType);
}
}
pdf.Close();
}

private void RenderImage(ImageRenderInfo renderInfo, string saveImageLocation)
{
PdfImageObject image = renderInfo.GetImage();

using (var dotnetImg = image.GetDrawingImage())
{
if (dotnetImg != null)
{
dotnetImg.Save(saveImageLocation);
}
}
}

最佳答案

请阅读 PDF 规范 (ISO-32000-1)。您正在假设,例如,透明 PNG 可以作为透明 PNG 存储在 PDF 中。这个假设是错误的。

PDF 不支持图像类型 PNG。将透明 PNG 添加到 PDF 文档时,它会转换为两个压缩位图。一个位图是您所指的图像:据称​​失去透明度的图像。另一个位图,一张您没有告诉我们任何信息但 存在的图像,是该图像的掩码。当您检查 Image XObject 时,您会注意到它有一个对此掩码的引用。这在我的 book 中有解释。在标题为“屏蔽图像”的 10.3.2 节中。

您关于在 PDF 文档中存储了透明图像的说法是错误的。相反,您有两个不透明图像,其中一个图像是另一个图像的 mask ,以实现透明度。您不能将这些图像提取为单个透明图像。您需要提取两个不透明图像并将它们合并为一个透明图像。这超出了 iText(Sharp) 的范围。

关于pdf - 具有透明度的 iTextSharp 图像提取,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20805428/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com