扫描&在c#中保存为PDF

时间:2009-09-18 02:43:57

标签: c# pdf

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.****

4 个答案:

答案 0 :(得分:3)

首先,您需要使用TWAINWIA获取图片,然后在捕获该图片后,您需要使用abcPDF <等内容将其转换为PDF / p>

答案 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因为它是免费的并且具有静音打印功能)