PDFKit 및 wkhtmltopdf로 네트워크 오류 해결

오늘의 #10stips(10초 안에 코딩 문제를 해결하는 방법을 배우는 곳)에서는 사랑스러운PDFKit gem에 대해 이야기합니다.

어렸을 때부터 사용하고 있습니다. 일반 기존 HTML+CSS를 사용하여 PDF를 생성합니다.

PDFKit에는 Webkit을 사용하여 HTML을 렌더링하는 라이브러리wkhtmltopdf가 필요합니다.

이제 Webkit은 렌더링 엔진이며 시스템 구성에 따라 특히 이미지가 많은 HTML 페이지가 있는 경우 리소스를 로드하는 호환성 문제 또는 사용자를 미치게 할 수 있는 원치 않는 네트워크 오류를 발견할 수 있습니다.

PDFKit::ImproperWkhtmltopdfExitStatus UnknownNetworkError
Exit with code 1 due to network error: UnknownNetworkError
Exit with code 1 due to network error: ContentNotFoundError
Warning Failed to load


기본적으로 wkhtmltopdf는 CSS, JS 또는 IMG 파일을 로드하지 못합니다.

역할을 하는 몇 가지 요인이 있습니다...
  • PDFkit 0.13은 작동하는 것 같지만 0.12.5는 작동하지 않습니다.
  • TLSv1을 사용하여 웹 서버에서 이미지를 로드하면 작동합니다.
  • TLS 1.2가 있는 최신 서버에서 중단되지만 모든 리소스에 대해 중단되는 것은 아닙니다.
  • 상대 경로 대신 절대 경로를 사용하는 것이 좋습니다
  • .
  • 누가 알아, 누가 신경써!?!?!?!

  • 그래서 빠르고 최종적인 해결책을 제시합니다.

    준비가 된?

    컴퓨터를 끄고 하이킹을 가십시오. 진지하게, 그것은 당신의 정신적, 육체적 건강에 도움이 됩니다.

    그러나 여전히 문제 해결에 관심이 있다면 이것이 내가 제안하는 것입니다 ...
  • 가능하면 wkhtmltopdf를 최신 버전
  • 으로 업데이트하십시오.
  • HTML의 외부 리소스가 TLSv1 또는 TLSv2 서버에서 오는지 확인하십시오(새 버전의 wkhtmltopdf는 TLSv2에서 가장 잘 작동함).
  • URL을 HTTPS에서 HTTP로(또는 그 반대로) 전환하려고 합니다
  • .
  • PDFKit.configure 블록에서 config.default_options[:ignore_load_errors] = true 설정

  • 분명히 HTTP와 HTTPS를 사용하면 보안 문제가 발생합니다. 불행하게도 우리에게는 선택권이 거의 없으며 저는 버그 수정보다 온전함을 우선시하는 사람입니다.

    버그가 기능인 것처럼 가장해도 되는 경우가 있다는 점을 기억하세요.



    원하는 경우 엄지 손가락을 올리고 의견을 말하십시오.

    좋은 웹페이지 즐겨찾기