Tüm yorumlar için teşekkürler. Ne yazık ki bu "php başlangıç printjob" şey, çünkü bugün iptal edildi daha büyük bir projenin parçası olduğunu, iyi ... Ben ... biliyorum siyasi nedenleri yok. Proje oldukça fazla ölü olduğunu tahmin.
Her neyse, ben son günlerde kendimi bir kaç kez daha denedim ve IIS ile çalışmak için alamadım. Ben hayata ve zaten test Benim çözüm: ile çalışan yerel bir apache ve PHP ile bir XAMPP veya WAMPP paketini yüklemek, IIS kaldırmak admin access rights.
Bu hile yaptı. I-.exe
başlar ve böylece PDF bitene kadar PHP beklemek etmediğini amacıyla PHP pclose(popen('...command...', 'r'));
kullanılır. Tüm harika çalıştı.
İşte Acrobat Reader kullanarak yazdırma işi başlatır benim C # kodu
public void Print(string pathname, string acrobatDirectory)
{
var proc = new Process
{
StartInfo =
{
Arguments = String.Format("/t \"{0}\"", pathname),
FileName = acrobatDirectory,
UseShellExecute = false,
CreateNoWindow = true,
RedirectStandardOutput = false,
RedirectStandardError = false,
}
};
proc.Start();
}
İlk argüman basılmış olmalıdır PDF yolu, ikinci parametre AcroRd32.exe
için mutlak yoludur.
Kalan tek sorun, AcroRd32.exe
, başladı basılmış ve tekrar kapalı var asla idi. Böylece her printjob (I Acrobat Reader 9.0 kullanıyorum) AcroRd32.exe
yeni bir örneğini başladı. Eğer 10 kez basılmış Yani, 10 acrobat reader örnekleri oluşturuldu.
Ne yazıcı bitmiş olduğunu umarak, daha sonra X saniye bekliyor, yazdırma işini başlayan ve daha sonra tüm AcroRd32.exe
örneklerini öldürüyordu ki:
public void Print(string pathname, string acrobatDirectory)
{
Debug.WriteLine("Printing...");
Printer.Print(pathname, acrobatDirectory);
Thread.Sleep(30000);
try
{
Debug.WriteLine("Trying to kill runnung AcroRd32.exe's ");
FindAndKillProcess("AcroRd32");
}
catch (Exception)
{
Debug.WriteLine("AcroRd32.exe could not be killed...");
}
}
private bool FindAndKillProcess(string name)
{
foreach (Process clsProcess in Process.GetProcesses())
{
if (clsProcess.ProcessName.StartsWith(name))
{
clsProcess.Kill();
return true;
}
}
return false;
}
Bu oldukça iyi çalıştı.
Not üzerinde (tüm AcroRd32.exe
öldürme ve yönetici ayrıcalıklar ile PHP çalışan) sadece yapılabilir çünkü: The whole thing is only used by one user at a time and has a very limited area of use.
Bu müşteriler POS konuşlandırılmış bir dokunmatik uygulama kullanılmalıdır. Bir satıcı bir ürünü yapılandırmak için PHP uygulaması kullanmak istiyorum, ve sonra PHP oluşturmak ve arka planda bir PDF basacaktır benim. Exe çağırır. Basılı belge daha sonra müşteriye teslim edilir. So security etc. was not really a concern in this case.
If anyone has a solution in order to use it with IIS, I am still willing to accept it as an answer.