طباعة PDF موجود(أو ملفات أخرى) في C#




مشاكل طباعة ملف pdf (5)

ستحتاج إلى Acrobat أو أي تطبيق آخر يمكنه طباعة PDF. من هناك يمكنك P / Invoke إلى ShellExecute لطباعة المستند.

من التطبيق الذي أقوم بإنشائه ، أحتاج إلى طباعة ملفات PDF الموجودة (تم إنشاؤها بواسطة تطبيق آخر). كيف يمكنني القيام بذلك في C # وتوفير آلية بحيث يمكن للمستخدم تحديد طابعة مختلفة أو خصائص أخرى.

لقد نظرت إلى PrintDialog ولكن لست متأكدا ما هو الملف الذي تحاول طباعته ، إن وجدت ، ب / ج المخرج دائما صفحة فارغة. ربما أفتقد شيء ما هناك.

هل أحتاج إلى استخدام "iTextSharp" (كما هو موضح في مكان آخر)؟ يبدو ذلك غريباً بالنسبة لي لأنني أستطيع "إرسال الملف إلى الطابعة" ، ليس لدي أي مربع حوار لطيف قبل توزيع الطابعة وما إلى ذلك ، ولا أريد كتابة مربع حوار طباعة من الألف إلى الياء ولكن يبدو أن الكثير من الأمثلة التي عثرت عليها من خلال البحث فعلت ذلك.

أي نصيحة أو أمثلة أو رمز عينة سيكون رائعا!

إذا كان PDF أيضًا هو المشكلة ، فيمكن إنشاء الملفات بواسطة التطبيق الآخر بتنسيق مختلف مثل الصورة النقطية أو png إذا كان ذلك يسهل الأمور.


عرض مربع حوار صغير مع combobox يحتوي على عناصر به مجموعة إلى مجموعة السلسلة التي تم إرجاعها بواسطة PrinterSettings.InstalledPrinters .

إذا GSView جعل GSView مثبتًا على الجهاز ، فيمكنك طباعة PDF بصمت. انها بطيئة قليلا والدوار ولكن على الأقل لم يكن لديك لظهور البهلوانات.

إليك بعض التعليمات البرمجية التي أستخدمها لطباعة بعض ملفات PDF التي أعيدها من خدمة UPS Web:

    private void PrintFormPdfData(byte[] formPdfData)
    {
        string tempFile;

        tempFile = Path.GetTempFileName();

        using (FileStream fs = new FileStream(tempFile, FileMode.Create))
        {
            fs.Write(formPdfData, 0, formPdfData.Length);
            fs.Flush();
        }

        try
        {
            string gsArguments;
            string gsLocation;
            ProcessStartInfo gsProcessInfo;
            Process gsProcess;

            gsArguments = string.Format("-grey -noquery -printer \"HP LaserJet 5M\" \"{0}\"", tempFile);
            gsLocation = @"C:\Program Files\Ghostgum\gsview\gsprint.exe";

            gsProcessInfo = new ProcessStartInfo();
            gsProcessInfo.WindowStyle = ProcessWindowStyle.Hidden;
            gsProcessInfo.FileName = gsLocation;
            gsProcessInfo.Arguments = gsArguments;

            gsProcess = Process.Start(gsProcessInfo);
            gsProcess.WaitForExit();
        }
        finally
        {
            File.Delete(tempFile);
        }
    }

كما ترى ، فإنه يأخذ بيانات PDF كمصفوفة بايت ، ويكتبها إلى ملف مؤقت ، ويطلق gsprint.exe لطباعة الملف بصمت إلى الطابعة المسماة ("HP Laserjet 5M"). يمكنك استبدال اسم الطابعة بكل ما يختاره المستخدم في مربع الحوار الخاص بك.

قد تكون طباعة PNG أو GIF أسهل بكثير - فقط قم بتوسيع فئة PrintDocument واستخدم مربع حوار الطباعة العادي الذي توفره Windows Forms.

حظا طيبا وفقك الله!


أفعل الشيء نفسه لمشروعي وعمل لي

معرفة ما إذا كان يمكن أن تساعدك ...

Process p = new Process();
p.EnableRaisingEvents = true; //Important line of code
p.StartInfo = new ProcessStartInfo()
{
    CreateNoWindow = true,
    Verb = "print",
    FileName = file,
    Arguments = "/d:"+printDialog1.PrinterSettings.PrinterName
};   
try
{
    p.Start();
} 
catch 
{ 
    /* your fallback code */ 
}

يمكنك أيضا اللعب مع خيارات مختلفة من النوافذ

أمر PRINT للحصول على الناتج المرغوب ... Reference link


يمكنك أيضًا استخدام PDFsharp - إنها مكتبة مفتوحة المصدر لإنشاء ملفات PDF ومعالجتها. http://www.pdfsharp.net/


بعد الكثير من البحث و googling حول هذه المهمة ، قامت Microsoft بإصدار KB رائع لطباعة pdf بدون أي تطبيقات أخرى ضرورية. لا حاجة لاستدعاء adobe أو ghostprint. يمكن أن يطبع دون حفظ ملف على القرص يجعل الحياة سهلة للغاية.

http://support2.microsoft.com/?kbid=322091







printing