簡體   English   中英

打印 pdf 而不在 c 中預覽

[英]Printing pdf without preview in c #

我正在嘗試在 windows 應用程序中使用 C# 打印.pdf 和 .tif 文件。

打印成功完成,但我的問題是 Adobe 閱讀器正在后台打開 pdf 文件和 windows 打印對話框為 tif 文件打開。

實際上我將使用服務運行我的方法,所以這些過程應該靜默發生。 我能做些什么來避免這種情況?

這是我的代碼

public void PrintDocument(string filepath)
        {

            //PrintDialog pd = new PrintDialog();            
            printProcess.StartInfo.FileName = filepath; 
            //Also tried usecellexcecution=false;
            //Redirect=true; something like this
            printProcess.StartInfo.WindowStyle = ProcessWindowStyle.Hidden;
            printProcess.StartInfo.Verb = "Print";
            printProcess.StartInfo.CreateNoWindow = true;
            PrinterSettings setting = new PrinterSettings();
            setting.DefaultPageSettings.Landscape = true; 
            printProcess.Start();
            printProcess.CloseMainWindow(); 
        }

我曾嘗試使用 MSDN 中建議的RawprinterHelper ,但它會打印垃圾字符。

如果您的打印機在網絡上並且您知道它是 IP 地址,則可以使用 TcpClient 將文件直接發送到打印機。 我已經讓這個適用於我的打印機,但只對 PDF 進行了嘗試,所以我不知道它對其他打印機/文件類型的效果如何。

您必須更改您的打印機設置,以便它使用 tcp 端口(在設備和打印機 select 您的打印機(單擊),然后單擊打印服務器屬性,在打開的向導中您可以添加一個新的 ZB136EF15F6A06D86367 端口)。 您還必須將打印機設置為 raw 而不是 lpc設置

然后我使用了類似於以下方法的東西;

        public void SilentPrint(string filePath, string printerIPAddress)
    {
        byte[] bytes = System.IO.File.ReadAllBytes(filePath);

        var client = new TcpClient(printerIPAddress, 9100);//9100 is the default print port for raw data

        using (var stream = client.GetStream())
        {
            stream.Write(bytes, 0, bytes.Length);
            stream.Close();
        }
    }

獲取pdf進程的window句柄,然后將其隱藏或使用進程類的windowstyle將其最小化。

是的,它會啟動,因為您使用的是 Process.Start。

嘗試“PrintTo”作為您的動詞。 這應該禁用“打印預覽”階段。

如果您想靜默打印 PDF,那么您需要使用正確的工具來完成這項工作。 在這種情況下,它不是 Adobe Reader,因為它總是會啟動應用程序 window,它不會在靜默模式下加載。

找到一個 PDF 庫,它可以讓您靜默打印 PDF。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM