1

J'utilise ce code pour imprimer le fichier myDocument.pdf du lecteur D: qui fonctionne.Imprimer le fichier pdf à partir d'un chemin virtuel

Process proc = new Process(); 
    proc.StartInfo.Verb = "PrinTo"; 
    proc.StartInfo.FileName = @"C:\Program Files\Adobe\Reader 11.0\Reader\AcroRd32.exe"; 
    proc.StartInfo.Arguments = @"/p /h D:myDocument.pdf"; 
    proc.StartInfo.UseShellExecute = false; 
    proc.StartInfo.CreateNoWindow = true; 
    proc.StartInfo.WindowStyle = ProcessWindowStyle.Hidden; 
    proc.Start(); 

    proc.WaitForInputIdle(); 
    System.Threading.Thread.Sleep(1000); 
    if (false == proc.CloseMainWindow()) 
    proc.Kill(); 

Mais je veux imprimer un fichier à partir du dossier dans mon projet qui est contenu/rapport/MonDocument.pdf. J'ai essayé de changer 'proc.StartInfo.Arguments = @ "/ p/h D: monDocument.pdf";' à:

proc.StartInfo.Arguments = Server.MapPath("~/Content/report/myDocument.pdf"); 
proc.StartInfo.Arguments = @"Content/report/myDocument.pdf"; 
proc.StartInfo.Arguments "C:\Users\User\Documents\Visual Studio 2012\Projects\PDF\PDF\Content\report\myDocument.pdf"; 

Tout cela ne fonctionne pas et adobe reader indique que le fichier est introuvable. J'ai supprimé "/ p/h" qui est la commande pour imprimer et minimiser adobe reader juste pour essayer si Adobe Reader trouvera le fichier myDocument.pdf.

Qu'est-ce qui ne va pas dans mes chemins? Merci d'avance.

+0

Oh désolé c'est C# –

Répondre

1

Avez-vous essayé d'inclure le nom de fichier entre guillemets?

proc.StartInfo.Arguments = @"""C:\Users\User\Documents\Visual Studio 2012\Projects\PDF\PDF\Content\report\Voucher.pdf"""; 

Comme le nom de fichier contient des espaces, il peut être que Acrobat Reader tente de charger un fichier appelé C:\Users\User\Documents\Visual, que je suppose n'existe pas.

Si vous voulez réintroduire les /p et /h commutateurs, essayez

proc.StartInfo.Arguments = @"/p /h ""C:\Users\User\Documents\Visual Studio 2012\Projects\PDF\PDF\Content\report\Voucher.pdf"""; 

Si vous souhaitez utiliser un fichier par rapport au chemin virtuel d'une application Web, puis essayez

string filePath = Server.MapPath("~/Content/report/Voucher.pdf"); 
proc.StartInfo.Arguments = string.Format(@"/p /h ""{0}""", filePath); 

Remarque Toutefois, cela imprime à partir de la machine sur laquelle vous exécutez l'application Web. Si vous l'exécutez sur Visual Studio sur votre ordinateur, il sera imprimé à partir de votre ordinateur. Si toutefois vous avez publié votre application Web sur IIS sur un serveur et que vous consultez votre application Web à partir d'un autre ordinateur, le fichier PDF tente d'imprimer à partir du serveur et non de votre ordinateur.

+0

Ça marche! merci @Luke Woodward, j'ai une autre question monsieur parce que c'est le chemin où le projet visual studio 2012 est. Comment l'implémenter à l'aide de Server.MapPath ("~/Content/report/Voucher.pdf"? –

+1

@JohnLouieDelaCruz: J'ai mis à jour ma réponse pour traiter votre question supplémentaire, mais gardez à l'esprit mes commentaires sur la gestion de votre site web application sur IIS sur une autre machine –

+0

merci pour votre aide. –