我正在尝试使用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;
}
请帮我修复代码中的问题或建议我做出更改。
提前感谢您的帮助。
答案 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并将其保存在其他位置。