0

我正在尝试使用 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;
}

请帮助我解决代码中的问题或建议我进行更改。

在此先感谢您的帮助。

4

3 回答 3

0

你可以参考下面的链接。

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

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

于 2012-07-25T12:18:40.553 回答
0

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

于 2012-07-25T13:27:35.227 回答
0

Bitmiracle 不是库,它是软件公司的名称,您尝试使用的是 libtiff 吗?也许您可以联系 Bitmiracle 以获取有关您正在处理的任务的支持。

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

如果要将 PDF 文件转换为 TIFF 图像,我建议您使用允许您呈现 PDF 文件的库。搜索使用 C# 将 PDF 转换为图像以获取更多详细信息。

如果您只想从 PDF 文件中提取已压缩为 TIFF 的图像,那么您确实可以提取二进制数据并将其保存在其他地方。

于 2012-07-25T14:11:26.940 回答