IM使用TWAIN扫描仪& gdiplus.dll的。
我扫描了文件,并可以保存为* .jpg,* .bmp
等图像格式但不允许以PDF格式保存。显示错误未知格式图片。
这是代码,
public static bool SaveDIBAs(string picname,IntPtr bminfo,IntPtr pixdat) {
SaveFileDialog sd = new SaveFileDialog();
sd.FileName = picname;
sd.Title = "Save bitmap as...";
sd.Filter = "PDF (*.pdf)|*.pdf";
sd.Filter = "Bitmap file (*.bmp)|*.bmp|TIFF file (*.tif)|*.tif|JPEG file (*.jpg)|*.jpg|PNG file (*.png)|*.png|PDF file (*.pdf)|*.pdf|All files (*.*)|*.*";
sd.FilterIndex = 1;
if (sd.ShowDialog() == DialogResult.OK)
return false;
Guid clsid;
if (!GetCodecClsid(sd.FileName, out clsid))
{
//MessageBox.Show("Unknown picture format for extension " + Path.GetExtension(sd.FileName),
"Image Codec", MessageBoxButtons.OK, MessageBoxIcon.Information);
return false;
}
IntPtr img = IntPtr.Zero;
int st = GdipCreateBitmapFromGdiDib( bminfo, pixdat, ref img );
if( (st != 0) || (img == IntPtr.Zero) )
return false;
st = GdipSaveImageToFile(img, sd.FileName, ref clsid, IntPtr.Zero);
GdipDisposeImage(img);
return st == 0;
}
[DllImport("gdiplus.dll", ExactSpelling=true)]
internal static extern int GdipCreateBitmapFromGdiDib( IntPtr bminfo, IntPtr pixdat, ref IntPtr image );
[DllImport("gdiplus.dll", ExactSpelling=true, CharSet=CharSet.Unicode)]
internal static extern int GdipSaveImageToFile( IntPtr image, string filename, [In] ref Guid clsid, IntPtr encparams );
[DllImport("gdiplus.dll", ExactSpelling=true)]
internal static extern int GdipDisposeImage( IntPtr image );
}
****The above code doesnt allow to save as in PDF format.****
答案 0 :(得分:3)
答案 1 :(得分:1)
不完全确定你在说什么,但是这个库:http://sourceforge.net/projects/pdflibrary/非常适合保存PDF。
对于扫描(来自TWAIN扫描仪?),请查看http://www.codeproject.com/KB/dotnet/twaindotnet.aspx之前已经完成的操作,它看起来效果很好。
答案 2 :(得分:1)
它根本不会保存为PDF,因为Microsoft的GDI库没有PDF设施,最好的方法是将文件首先保存为临时文件中的JPEG文件。然后使用iTextSharp库或PDFSharp库从JPEG创建PDF,您可以使用这两个库将JPG / Bitmap任意类型的文件嵌入到PDF中。
答案 3 :(得分:0)
如果你正在使用GDI。直接打印到PDF打印机(我自己使用bullzip pdf因为它是免费的并且具有静音打印功能)