2017-08-30 9 views
0

qpdfは、pdfを線形化pdf(Webファーストビュープロパティ)に変換できます。私はコマンドラインを使用することができます: qpdf - 線形化input.pdf output.pdf pdfを線形化pdfに変換する。asp.netアプリケーションでqpdfを使用する方法

どうすればasp.netプログラムで使用できますか?

私のコードは、asp.netでQpdfを使用するために、他の解決策があることが

private void LaunchCommandLineApp() 
    { 
     // For the example 
     string ex4 = @"C:\Program Files\qpdf-7.0.b1\bin\qpdf.exe"; 

     // Use ProcessStartInfo class 
     ProcessStartInfo startInfo = new ProcessStartInfo(); 
     startInfo.CreateNoWindow = false; 
     startInfo.UseShellExecute = false; 
     startInfo.RedirectStandardInput = true; 
     startInfo.RedirectStandardError = true; 
     startInfo.RedirectStandardOutput = true; 
     startInfo.FileName = ex4; 
     startInfo.WindowStyle = ProcessWindowStyle.Hidden; 
     startInfo.Arguments = " --linearize input.pdf output.pdf"; 

     try 
     { 
      // Start the process with the info we specified. 
      // Call WaitForExit and then the using statement will close. 
      using (Process exeProcess = Process.Start(startInfo)) 
      { 
       if (exeProcess != null) 
       { 
        string op = exeProcess.StandardOutput.ReadToEnd(); 
        exeProcess.WaitForExit(); 
        Console.WriteLine(op); 
       } 
      } 
     } 
     catch (Exception ex) 
     { 
      // Log error. 
     } 
    } 

のようなものですか?どうもありがとう!

答えて

0

最後にqpdf.exeを使用して、次のコードとして動作させます。

private void RunQpdfExe(string output) 
    { 
     string QPDFPath = @"C:\Program Files\qpdf-5.1.2\bin\"; 
     string newfile = ExportFilePath + "Lin.pdf"; 

     try 
     { 
      // Use ProcessStartInfo class 
      ProcessStartInfo startInfo = new ProcessStartInfo(); 
      startInfo.CreateNoWindow = false; 
      startInfo.UseShellExecute = false; 
      startInfo.RedirectStandardInput = true; 
      startInfo.RedirectStandardError = true; 
      startInfo.RedirectStandardOutput = true; 
      startInfo.FileName = QPDFPath + "qpdf.exe"; 
      startInfo.Verb = "runas"; 
      startInfo.WindowStyle = ProcessWindowStyle.Hidden; 
      //startInfo.Arguments = " --check " + output; 
      startInfo.WorkingDirectory = Path.GetDirectoryName(QPDFPath); 
      startInfo.Arguments = " --linearize " + output + " " + newfile; 

      // Start the process with the info we specified. 
      // Call WaitForExit and then the using statement will close. 
      using (Process exeProcess = Process.Start(startInfo)) 
      { 
       if (exeProcess != null) 
       { 
        string op = exeProcess.StandardOutput.ReadToEnd(); 
        exeProcess.WaitForExit(); 
       } 
      } 

      //Rename the output file back 
      File.Delete(output); 
      File.Copy(newfile, output); 
      File.Delete(newfile); 

     } 
     catch (Exception) 
     { 
      // Log error. 
     } 
    } 

また、出力フォルダにもasp.netユーザーロールに「書き込み」権限が追加されました。それが役に立てば幸い。

関連する問題