试图从PDF创建Tif。变坏图像

时间:2012-07-25 12:09:42

标签: c# pdf image-processing itextsharp tiff

我正在尝试使用Itextsharp和Bitmiracle从pdf文件创建tif图像。

首先,我尝试使用iTextsharp获取pdf文件每页的字节详细信息。

string bpp = pd.Get(PdfName.BITSPERCOMPONENT).ToString();
PixelFormat pixelFormat;
switch (bpp)
{
    case "1":
        pixelFormat = PixelFormat.Format1bppIndexed;
        break;
    case "8":
        pixelFormat = PixelFormat.Format24bppRgb;
        break;
    default:
        throw new Exception(String.Format("Unknown pixel format {0}.", bpp));
}

之后使用bitmiracle我以tiff格式保存该图像。但图像不可见。

string filter = PDFStremObj.Get(PdfName.FILTER).ToString();
switch (filter)
{
    case "/FlateDecode":

    byte[] arr = PdfReader.GetStreamBytes((PRStream)PDFStremObj);

    Bitmap bmp = new Bitmap(Int32.Parse(width), Int32.Parse(height), PixelFormat.Format24bppRgb);
    BitmapData bmd = bmp.LockBits(new System.Drawing.Rectangle(0, 0, Int32.Parse(width), Int32.Parse(height)), ImageLockMode.WriteOnly,
            PixelFormat.Format24bppRgb);
    Marshal.Copy(arr, 0, bmd.Scan0, arr.Length);
    bmp.UnlockBits(bmd);
    bmp.Save(strFileNewName, System.Drawing.Imaging.ImageFormat.Tiff);
    bmp.Dispose();
    page++;
    break;
}

请帮我修复代码中的问题或建议我做出更改。

提前感谢您的帮助。

3 个答案:

答案 0 :(得分:0)

您可以参考以下链接。

http://www.codeproject.com/Articles/37458/PDF-Viewer-Control-Without-Acrobat-Reader-Installe

从这里可以选择将pdf转换为tiff文件或其他文件。

答案 1 :(得分:0)

我不认为可以将数组复制到位图数据。步幅可能不同,位深度可能不同,字节顺序可能不同等。 Lajja Thaker发布了其中一种方法。 另请注意,在Windows XP下,不支持某些彩色tiff。

答案 2 :(得分:0)

Bitmiracle不是一个库,it is a name of a software company,你试图使用的是libtiff吗?也许您可以联系Bitmiracle获取您正在处理的任务的支持。

只能通过从中提取二进制数据并将其转储到位图对象中,无法从PDF创建tiff图像。这就像试图通过挤压苹果来制作橙汁。

如果您想将PDF文件转换为TIFF图像,我建议您使用允许您渲染PDF文件的库。搜索PDF to Image conversion with C#了解更多详情。

如果您只想从PDF文件中提取已压缩为TIFF的图像,那么您确实可以extract the binary data并将其保存在其他位置。