2016-10-20 3 views
1

여러 URL을 전달하여 wkhtmltopdf를 사용하여 ASP.Net 응용 프로그램에서 여러 페이지 PDF 문서를 생성하려고합니다.wkhtmltopdf 다중 페이지 PDF 생성 프로세스가 중단됩니다.

Public Shared Function WKHtmlToPdf(ByVal url As String, ByVal OutputDir As String, ByVal OutputFileName As String) As Boolean 

    Dim blnReturn As Boolean = False 
    Dim wkhtml As String = HttpContext.Current.Server.MapPath("~/resources/wkhtmltopdf/wkhtmltopdf.exe") 
    Dim p As New Process() 

    p.StartInfo.CreateNoWindow = True 
    p.StartInfo.RedirectStandardOutput = True 
    p.StartInfo.RedirectStandardError = True 
    p.StartInfo.RedirectStandardInput = True 
    p.StartInfo.UseShellExecute = False 
    p.StartInfo.FileName = wkhtml 
    p.StartInfo.WorkingDirectory = OutputDir 

    p.StartInfo.Arguments = url & " " & OutputFileName 
    p.Start() 
    p.WaitForExit(60000) 

    Dim returnCode As Integer = p.ExitCode 
    p.Close() 

    If returnCode = 0 Then 
     blnReturn = True 
    End If 

    Return blnReturn 

End Function 

지금 나는 데 문제가 오류입니다 다음과 같은 오류 메시지가

p.WaitForExit(60000) 

에서 - 여기

가 호출되는 코드입니다.

Process must exit before requested information can be determined. 

그러나이 오류는 내가 이상 4 개 또는 5의 URL에서 통과 할 때 발생하는 것 같습니다, 그것보다 때로는 그 이하 때때로 무작위로 보인다. 이로 인해 프로세스가 PDF를 생성하는 데 오랜 시간이 걸리므로 p.WaitForExit에서 오류가 발생합니다 ...

요청 제한이 발생했는지 궁금합니다. 명령 프롬프트를 직접 사용할 때 필요한만큼의 URL로 PDF를 생성 할 수 있습니다.

답변

2

문제는 프로세스가 정상적인 설정 (60 초)으로 반환되지 않는 종료 코드를 기다리고 있다는 것입니다.

최신 버전을 사용하는 경우 'quiet'매개 변수를 지원하므로 종료 코드를 올바르게 반환 할 수 있습니다.

https://wkhtmltopdf.org/usage/wkhtmltopdf.txt

--disable-javascript --quiet --disable-smart-shrinking --print-media-type --margin-top 10mm --margin-bottom 10mm --margin-right 10mm --margin-left 10mm --page-size A4 "https://www.google.com" google.pdf