сканировать и сохранять в формате PDF в c # - PullRequest
1 голос
/ 18 сентября 2009

IM с использованием TWAIN Scanner & gdiplus.dll.

Я отсканировал файл и могу сохранить его в формате изображения, например * .jpg, * .bmp

но не позволяет сохранить как в формате PDF. Отображение ошибки неизвестного формата изображения.

это код,


public static bool SaveDIBA (строковое имя, 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 ]

3 голосов
/ 18 сентября 2009

сначала вам нужно получить изображение, используя TWAIN или WIA , а затем, как только вы захватили это изображение, вам нужно преобразовать его в PDF, используя что-то вроде ABCpdf

1 голос
/ 18 сентября 2009

Он вообще не будет сохраняться как PDF, поскольку библиотека GDI от Microsoft не имеет возможности PDF, лучший способ сделать это - сначала сохранить файл в формате JPEG во временном файле. А затем с помощью библиотеки iTextSharp или библиотеки PDFSharp для создания PDF из JPEG вы можете встроить JPG / растровое изображение любого типа в файл PDF, используя эти две библиотеки.

1 голос
/ 18 сентября 2009

Не совсем уверен, о чем вы говорите, но эта библиотека: http://sourceforge.net/projects/pdflibrary/ отлично подходит для сохранения PDF.

Для сканирования (с TWAIN-сканера?) Посмотрите http://www.codeproject.com/KB/dotnet/twaindotnet.aspx Я уже делал это раньше, и, похоже, он работает довольно хорошо.

0 голосов
/ 18 сентября 2009

если вы используете GDI. Печатайте напрямую на PDF-принтере (я использую bullzip pdf , потому что он бесплатный и имеет функцию тихой печати)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...