c# - واحده - مشاكل طباعة ملف pdf




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

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

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

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

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

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


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

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

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


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

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


على الرغم من أن هذا هو VB يمكنك بسهولة ترجمة ذلك. بالمناسبة ، لا تنبثق Adobe ، فإنها تطبع ملف pdf فقط ثم تختفي.

''' <summary>
''' Start Adobe Process to print document
''' </summary>
''' <param name="p"></param>
''' <remarks></remarks>
Private Function printDoc(ByVal p As PrintObj) As PrintObj
    Dim myProcess As New Process()
    Dim myProcessStartInfo As New ProcessStartInfo(adobePath)
    Dim errMsg As String = String.Empty
    Dim outFile As String = String.Empty
    myProcessStartInfo.UseShellExecute = False
    myProcessStartInfo.RedirectStandardOutput = True
    myProcessStartInfo.RedirectStandardError = True

    Try

        If canIprintFile(p.sourceFolder & p.sourceFileName) Then
            isAdobeRunning(p)'Make sure Adobe is not running; wait till it's done
            Try
                myProcessStartInfo.Arguments = " /t " & """" & p.sourceFolder & p.sourceFileName & """" & " " & """" & p.destination & """"
                myProcess.StartInfo = myProcessStartInfo
                myProcess.Start()
                myProcess.CloseMainWindow()
                isAdobeRunning(p)
                myProcess.Dispose()
            Catch ex As Exception
            End Try
            p.result = "OK"
        Else
            p.result = "The file that the Document Printer is tryng to print is missing."
            sendMailNotification("The file that the Document Printer is tryng to print" & vbCrLf & _
            "is missing. The file in question is: " & vbCrLf & _
            p.sourceFolder & p.sourceFileName, p)
        End If
    Catch ex As Exception
        p.result = ex.Message
        sendMailNotification(ex.Message, p)
    Finally
        myProcess.Dispose()
    End Try
    Return p
End Function

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





printing