نمایش نتایج 1 تا 8 از 8

نام تاپیک: چرا کلاس RawPrinterHelper پیوست شده فارسی را چاپ نمیکند ؟

  1. #1

    چرا کلاس RawPrinterHelper پیوست شده فارسی را چاپ نمیکند ؟


    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    using System.Drawing;
    using System.Drawing.Printing;
    using System.Windows.Forms;
    using System.Runtime.InteropServices;
    using System.IO;
    namespace AAA
    {
    public class RawPrinterHelperString
    {
    [StructLayout(LayoutKind.Sequential, CharSet = CharSet.Unicode , Size= 4) ]
    public struct DOCINFOW
    {
    [MarshalAs(UnmanagedType.LPWStr)]
    public string pDocName;
    [MarshalAs(UnmanagedType.LPWStr)]
    public string pOutputFile;
    [MarshalAs(UnmanagedType.LPWStr)]
    public string pDataType;
    }
    [DllImport("winspool.Drv", EntryPoint = "OpenPrinterA", CallingConvention = CallingConvention.StdCall, CharSet = CharSet.Unicode, SetLastError = true, ExactSpelling = true)]
    public static extern bool OpenPrinter(string src, ref IntPtr hPrinter, int pd);

    [DllImport("winspool.Drv", CallingConvention = CallingConvention.StdCall, CharSet = CharSet.Unicode, SetLastError = true, ExactSpelling = true)]
    public static extern bool ClosePrinter(IntPtr hPrinter);

    [DllImport("winspool.Drv", EntryPoint = "StartDocPrinterA", CallingConvention = CallingConvention.StdCall, CharSet = CharSet.Unicode, SetLastError = true, ExactSpelling = true)]
    public static extern bool StartDocPrinter(IntPtr hPrinter, int level, ref AAA.RawPrinterHelperString.DOCINFOW pDI);

    [DllImport("winspool.Drv", EntryPoint = "EndDocPrinter", SetLastError = true, CharSet = CharSet.Unicode, ExactSpelling = true, CallingConvention = CallingConvention.StdCall)]
    public static extern bool EndDocPrinter(IntPtr hPrinter);

    [DllImport("winspool.Drv", EntryPoint = "StartPagePrinter", SetLastError = true, CharSet = CharSet.Unicode, ExactSpelling = true, CallingConvention = CallingConvention.StdCall)]
    public static extern bool StartPagePrinter(IntPtr hPrinter);

    [DllImport("winspool.Drv", EntryPoint = "EndPagePrinter", SetLastError = true, CharSet = CharSet.Unicode, ExactSpelling = true, CallingConvention = CallingConvention.StdCall)]
    public static extern bool EndPagePrinter(IntPtr hPrinter);

    [DllImport("winspool.Drv", CallingConvention = CallingConvention.StdCall, CharSet = CharSet.Unicode, SetLastError = true, ExactSpelling = true)]
    public static extern bool WritePrinter(IntPtr hPrinter, IntPtr pBytes, int dwCount, ref int dwWritten);

    public static bool SendBytesToPrinter(string szPrinterName, IntPtr pBytes, Int32 dwCount)
    {
    IntPtr hPrinter = System.IntPtr.Zero;
    Int32 dwError;
    DOCINFOW di = new DOCINFOW();
    Int32 dwWritten = 0;
    bool bSuccess;

    di.pDocName = "Raw print document";
    di.pDataType = "XPS_PASS";
    bSuccess = false;
    if (OpenPrinter(szPrinterName, ref hPrinter, (int)0))
    {
    if (StartDocPrinter(hPrinter, 1, ref di))
    {
    if (StartPagePrinter(hPrinter))
    {
    //MessageBox.Show(hPrinter.ToString() + "----" + pBytes + "----" + dwCount + "----" + dwWritten);
    bSuccess = WritePrinter(hPrinter, pBytes, dwCount, ref dwWritten);
    EndPagePrinter(hPrinter);
    }
    EndDocPrinter(hPrinter);
    }
    ClosePrinter(hPrinter);
    }
    if (bSuccess == false)
    {
    dwError = Marshal.GetLastWin32Error();
    }
    return bSuccess;
    }
    public static bool SendFileToPrinter(string szPrinterName, string szFileName)
    {
    FileStream stream1 = new FileStream(szFileName, FileMode.Open);
    BinaryReader reader1 = new BinaryReader(stream1);
    byte[] buffer1 = new byte[((int)stream1.Length) + 1];
    buffer1 = reader1.ReadBytes((int)stream1.Length);
    IntPtr ptr1 = Marshal.AllocCoTaskMem((int)stream1.Length);
    Marshal.Copy(buffer1, 0, ptr1, (int)stream1.Length);
    bool flag1 = RawPrinterHelper.SendBytesToPrinter(szPrinterName, ptr1, (int)stream1.Length);
    Marshal.FreeCoTaskMem(ptr1);
    return flag1;
    }
    public static void SendStringToPrinter(string szPrinterName, string szString)
    {
    IntPtr pBytes;
    Int32 dwCount;
    dwCount = szString.Length;
    pBytes = Marshal.StringToCoTaskMemUni(szString);
    SendBytesToPrinter(szPrinterName, pBytes, dwCount);
    Marshal.FreeCoTaskMem(pBytes);
    }
    }
    آخرین ویرایش به وسیله Mahmoud.Afrad : سه شنبه 10 فروردین 1395 در 08:47 صبح

  2. #2
    کاربر تازه وارد آواتار shahryars
    تاریخ عضویت
    فروردین 1395
    محل زندگی
    Rio
    پست
    69

    نقل قول: باسلام . میخواهم بدانم چرا کلاس RawPrinterHelper پیوست شده فارسی را چاپ نمیکند ؟

    باید رشته شما utf-8 باشه

  3. #3

    نقل قول: باسلام . میخواهم بدانم چرا کلاس RawPrinterHelper پیوست شده فارسی را چاپ نمیکند ؟

    باسلام . من یک فایلی را utf-8 است را به این کلاس برای پرینت ارسال میکنم ولی فقط اعداد را چاپ میکند و حروف فارسی را بصورت نامفهوم چاپ میکند که فارسی نیست .


    باتشکر

  4. #4

    نقل قول: باسلام . میخواهم بدانم چرا کلاس RawPrinterHelper پیوست شده فارسی را چاپ نمیکند ؟

    نقل قول نوشته شده توسط soleim_ah مشاهده تاپیک
    باسلام . من یک فایلی را utf-8 است را به این کلاس برای پرینت ارسال میکنم ولی فقط اعداد را چاپ میکند و حروف فارسی را بصورت نامفهوم چاپ میکند که فارسی نیست .


    باتشکر
    لطفا هر چه زودتر مشکل این کلاس را برایم بفرستید خیلی ضروری است .

  5. #5
    کاربر تازه وارد آواتار shahryars
    تاریخ عضویت
    فروردین 1395
    محل زندگی
    Rio
    پست
    69

    نقل قول: باسلام . میخواهم بدانم چرا کلاس RawPrinterHelper پیوست شده فارسی را چاپ نمیکند ؟

    نوت پد پلاس رو باز کنید و فایل رو باهاش باز کنید
    از تب Encoding
    Character sets رو انتخاب کنید
    بعد Arabic
    بعد windows 1256

  6. #6

    نقل قول: باسلام . میخواهم بدانم چرا کلاس RawPrinterHelper پیوست شده فارسی را چاپ نمیکند ؟

    نقل قول نوشته شده توسط shahryars مشاهده تاپیک
    نوت پد پلاس رو باز کنید و فایل رو باهاش باز کنید
    از تب Encoding
    Character sets رو انتخاب کنید
    بعد Arabic
    بعد windows 1256

    باسلام

    با تشکر از توجه شما ، من فایل را در NOTEPAD ++ باز کردم و سپس مراحل را انجام دادم (ENCODING ->ARABIC-> WINDOWS-1256->SAVE)ولی هنوز این کلاس فایل را به فارسی چاپ نمیکند چرا لطفا راهنمایی فرمایید . خیلی ضروری است ..............

  7. #7

    نقل قول: باسلام . میخواهم بدانم چرا کلاس RawPrinterHelper پیوست شده فارسی را چاپ نمیکند ؟

    نقل قول نوشته شده توسط soleim_ah مشاهده تاپیک
    باسلام

    با تشکر از توجه شما ، من فایل را در NOTEPAD ++ باز کردم و سپس مراحل را انجام دادم (ENCODING ->ARABIC-> WINDOWS-1256->SAVE)ولی هنوز این کلاس فایل را به فارسی چاپ نمیکند چرا لطفا راهنمایی فرمایید . خیلی ضروری است ..............

    باسلام با تغییر di.pDataType از "Raw" به "Text" در کلاس RawPrinterHelperمشکل فارسی به شیوه بالا حل میشود ولی فونت سایز و فونت بصورت خیلی درشت چاپ میشود لطفا بفرمایید چگونه مشکل فونت و تغییر سایز را حل کنم . باتشکر فراوان

  8. #8
    کاربر تازه وارد آواتار shahryars
    تاریخ عضویت
    فروردین 1395
    محل زندگی
    Rio
    پست
    69

    نقل قول: چرا کلاس RawPrinterHelper پیوست شده فارسی را چاپ نمیکند ؟

    ببخشید چون من در این زمینه کار نکردم نمیدونم این جواب میده یا نه؟
    Font font1 = new Font(Font name,font size);

    توجه: font size به صورت float و font name به صورت string

    برای تبدیل string به float هم باید از این دستور استفاده کنید
    float.Parse(String);


    بعد هم میتونید رشته ای که میخواید چاپ کنید رو به این صورت به فونت نسبت بدید.
    string a="";
    a.Font=font1;

تاپیک های مشابه

  1. سوال: چرا در کریستال ریپورت مقادیر فیلد فارسی را با علامت سوال نشان می دهد؟
    نوشته شده توسط mandana13679 در بخش گزارش سازی با Crystal Report
    پاسخ: 0
    آخرین پست: یک شنبه 10 آذر 1392, 22:45 عصر
  2. چرا این تمپلیت به محض فارسی شدن منو را نمایش نمیده؟
    نوشته شده توسط the Dead در بخش طراحی وب (Web Design)
    پاسخ: 4
    آخرین پست: یک شنبه 30 تیر 1392, 05:55 صبح
  3. چرا IE صفحات طراحی شده با ASP.net با #c را نمایش نمی دهد?
    نوشته شده توسط taze kar 1 در بخش ASP.NET Web Forms
    پاسخ: 15
    آخرین پست: یک شنبه 26 شهریور 1391, 04:12 صبح
  4. سوال: چرا گوشه هاي گرد شده box را صاف نشان مي دهد؟
    نوشته شده توسط leila_safa در بخش گزارش سازی با Crystal Report
    پاسخ: 0
    آخرین پست: یک شنبه 15 دی 1387, 21:57 عصر
  5. پاسخ: 2
    آخرین پست: پنج شنبه 24 شهریور 1384, 15:40 عصر

قوانین ایجاد تاپیک در تالار

  • شما نمی توانید تاپیک جدید ایجاد کنید
  • شما نمی توانید به تاپیک ها پاسخ دهید
  • شما نمی توانید ضمیمه ارسال کنید
  • شما نمی توانید پاسخ هایتان را ویرایش کنید
  •