Pdf.js: DPUScan pdf에 검은색 화면이 ν‘œμ‹œλ¨

에 λ§Œλ“  2018λ…„ 09μ›” 01일  Β·  14μ½”λ©˜νŠΈ  Β·  좜처: mozilla/pdf.js

여기에 PDF νŒŒμΌμ„ 첨뢀(ꢌμž₯)ν•˜κ±°λ‚˜ 링크:
μ œν•œ λ•Œλ¬Έμ— 곡식 λ¬Έμ„œλ₯Ό 얻을 수 μ—†μŠ΅λ‹ˆλ‹€. ν•˜μ§€λ§Œ μŠ€ν¬λ¦°μƒ·μ„ μ²¨λΆ€ν–ˆμŠ΅λ‹ˆλ‹€. 이 λ¬Έμ œλŠ” pdf 1.5의 λͺ¨λ“  DPUScan λ¬Έμ„œμ—μ„œ λ°œμƒν•˜λŠ” 것 κ°™μŠ΅λ‹ˆλ‹€.
img-20180831-wa0006

ꡬ성:

  • μ›Ή λΈŒλΌμš°μ € 및 ν•΄λ‹Ή 버전: Firefox 45. Firefox 52μ—μ„œλ„ ν…ŒμŠ€νŠΈλ¨
  • 운영 체제 및 버전: Windows 7
  • PDF.js 버전: 2.0.55.0 및 1.10.100μ—μ„œ ν…ŒμŠ€νŠΈλ¨
  • λΈŒλΌμš°μ € ν™•μž₯자: μ•„λ‹ˆμš”

문제λ₯Ό μž¬ν˜„ν•˜λŠ” 단계:

  1. pdf.jsλ₯Ό 톡해 DPUScan pdf 1.5 버전 λ¬Έμ„œλ₯Ό λ Œλ”λ§ν•˜λ©΄ 검은색 화면이 λ‚˜νƒ€λ‚©λ‹ˆλ‹€. λ‚˜λŠ” λ˜ν•œ 온라인 λ·°μ–΄λ₯Ό 톡해 λ™μΌν•œ λ¬Έμ„œλ₯Ό μ—΄λ €κ³  μ‹œλ„ν–ˆμ§€λ§Œ 검은 ν™”λ©΄μœΌλ‘œ λλ‚¬μŠ΅λ‹ˆλ‹€.
  2. 문제의 μŠ€ν¬λ¦°μƒ·μ„ μ²¨λΆ€ν–ˆμŠ΅λ‹ˆλ‹€.

μ˜ˆμƒλ˜λŠ” λ™μž‘μ€ λ¬΄μ—‡μž…λ‹ˆκΉŒ? (μŠ€ν¬λ¦°μƒ· μΆ”κ°€)
PDFκ°€ μ˜¬λ°”λ₯΄κ²Œ λ Œλ”λ§λ˜μ–΄μ•Ό ν•©λ‹ˆλ‹€.

무엇이 잘λͺ»λ˜μ—ˆλ‚˜μš”? (μŠ€ν¬λ¦°μƒ· μΆ”κ°€)
검은 화면이 ν‘œμ‹œλ¨

λ·°μ–΄ 링크(mozilla.github.io/pdf.jsκ°€ μ•„λ‹Œ λ‹€λ₯Έ μ‚¬μ΄νŠΈ λ˜λŠ” Firefox/Chrome ν™•μž₯으둜 ν˜ΈμŠ€νŒ…λ˜λŠ” 경우):

1-core 3-pdf-broken

κ°€μž₯ μœ μš©ν•œ λŒ“κΈ€

λ‚˜λŠ” μ•½κ°„μ˜ 디버깅을 ν–ˆκ³  jpx_stream.jsλ₯Ό λ³΄μ•˜λ‹€. jpxImage.parse() 후에 κ°μ²΄μ—λŠ” 0인 타일이 1개 μžˆμŠ΅λ‹ˆλ‹€. ν¬κΈ°λŠ” μ •ν™•ν•©λ‹ˆλ‹€(예: 2496 x 3512 = 8765952).

(λ‚΄κ°€ μ²¨λΆ€ν•œ λ‹€λ₯Έ 파일의 경우 λ””μ½”λ”©λœ λ°”μ΄νŠΈλŠ” λͺ¨λ‘ 255μ˜€μŠ΅λ‹ˆλ‹€)

λ”°λΌμ„œ 이것은 λ¬Έμ œκ°€ PDFBox와 같은 색상 곡간이 μ•„λ‹ˆλΌ JPEG2000 디코더에 μžˆμŒμ„ λ‚˜νƒ€λƒ…λ‹ˆλ‹€.

@rafaelcaviquioli 이것은 μ˜€ν”ˆ μ†ŒμŠ€ ν”„λ‘œμ νŠΈμ΄λ©° μ‹œκ°„μ΄ μžˆκ±°λ‚˜ 없을 μˆ˜λ„ μžˆλŠ” μžμ› λ΄‰μ‚¬μžκ°€ μš΄μ˜ν•©λ‹ˆλ‹€. "이 μ†”λ£¨μ…˜μ— 따라 λ‚΄ 머리": κ·Έλ ‡λ‹€λ©΄ λ©°μΉ  λ™μ•ˆ νŒ€μ˜ λˆ„κ΅°κ°€ λ˜λŠ” μ—¬λŸ¬ μ‚¬λžŒμ„ ν’€μ–΄μ£Όκ³  JPEG2000 디코더λ₯Ό λ””λ²„κ·Έν•˜λ„λ‘ ν•˜μ‹­μ‹œμ˜€. μ‡ΌλŠ” μ—μ„œ μΌμ–΄λ‚œλ‹€
https://github.com/mozilla/pdf.js/blob/master/src/core/jpx.js
"μΌ€μ΄μŠ€ 0xFF93:" 근처.
JPEG2000 μ‚¬μ–‘μ—μ„œ μΌμ–΄λ‚˜λŠ” 일을 λΉ„κ΅ν•˜κ±°λ‚˜(https://jpeg.org/jpeg2000/ μ°Έμ‘°) μž‘λ™ 쀑인 JPEG2000 디코더(예: Java의 디코더)μ—μ„œ μΌμ–΄λ‚˜λŠ” 일을 λΉ„κ΅ν•˜μ‹­μ‹œμ˜€.
https://github.com/jai-imageio/jai-imageio-jpeg2000/

λͺ¨λ“  14 λŒ“κΈ€

https://github.com/mozilla/pdf.js/blob/master/.github/CONTRIBUTING.md μ—μ„œ:

λ¬Έμ œκ°€ νŠΉμ • PDFμ—μ„œ μƒμ„±λœ 였λ₯˜μ™€ κ΄€λ ¨λœ 경우 κΈ°μ—¬μžκ°€ λ‹€μš΄λ‘œλ“œν•  수 μžˆλŠ” URL을 μ œκ³΅ν•˜μ—¬ 항상 PDFλ₯Ό ν¬ν•¨ν•˜μ‹­μ‹œμ˜€. μž¬μƒμ‚°μš© PDFκ°€ μ—†μœΌλ©΄ μ΄λŸ¬ν•œ λ¬Έμ œκ°€ μ’…λ£Œλ©λ‹ˆλ‹€.

예제 PDF 파일 μ—†μ΄λŠ” ν•  수 μžˆλŠ” 일이 μ—†κΈ° λ•Œλ¬Έμ— λ‹«μŠ΅λ‹ˆλ‹€. 같은 도ꡬλ₯Ό μ‚¬μš©ν•˜μ—¬ λΆ„λ₯˜λ˜μ§€ μ•Šμ€ PDF νŒŒμΌμ„ λ§Œλ“€μ–΄ μ—¬κΈ°μ—μ„œ κ³΅μœ ν•  수 μžˆμŠ΅λ‹ˆλ‹€. 그런 λ‹€μŒ λ‹€μ‹œ μ—΄ 수 μžˆμŠ΅λ‹ˆλ‹€.

μ—¬κΈ°μ—μ„œ pdf νŒŒμΌμ„ κ³΅μœ ν•  수 μ—†μŠ΅λ‹ˆλ‹€. 개인 이메일 IDλ₯Ό μ•Œ 수 μžˆμŠ΅λ‹ˆκΉŒ? λ¬Έμ„œλ₯Ό κ³΅μœ ν•©λ‹ˆλ‹€.

λ§ˆμΉ¨λ‚΄ λΆ„λ₯˜λ˜μ§€ μ•Šμ€ pdf νŒŒμΌμ„ 얻을 수 μžˆμ—ˆμŠ΅λ‹ˆλ‹€. 여기에 같은 것을 μ²¨λΆ€ν–ˆμŠ΅λ‹ˆλ‹€. λˆ„κ΅°κ°€κ°€ λ³Ό 수 μžˆμŠ΅λ‹ˆκΉŒ?
ν…ŒμŠ€νŠΈ.pdf

νŒŒμΌμ€ PDFBoxμ—μ„œλ„ μ‹€νŒ¨ν•©λ‹ˆλ‹€... μžλ°”μ—μ„œλŠ” 이미지에 RGB icc 색상 곡간이 μžˆμ§€λ§Œ λž˜μŠ€ν„°μ—μ„œλŠ” 1λΉ„νŠΈ 픽셀이 μžˆλŠ” 1개의 λ°΄λ“œλ§Œ μžˆμŠ΅λ‹ˆλ‹€. μ–΄λ–€ 메타 데이터가 μ‹€μ œλ‘œ μ‘΄μž¬ν•˜λŠ”μ§€ μ•Œλ €μ£ΌλŠ” 쒋은 λ„κ΅¬λ‘œ JPEG2000 이미지λ₯Ό 뢄석해야 ν•©λ‹ˆλ‹€.
PDFJS-10026-image.zip

pdf νŒŒμΌμ„ λ Œλ”λ§ν•˜κΈ° μœ„ν•΄ pdf.js μΈ‘μ—μ„œ κ΅¬ν˜„ν•  수 μžˆλŠ” μ—…λ°μ΄νŠΈκ°€ μžˆμŠ΅λ‹ˆκΉŒ?

PDFBox에 λŒ€ν•œ 문제:
https://issues.apache.org/jira/browse/PDFBOX-4326

λ‹€μŒμ€ PDF.js둜 λ Œλ”λ§ν•  수 μ—†λŠ” JPEG2000 이미지가 ν¬ν•¨λœ 또 λ‹€λ₯Έ 이ꡭ적인 PDF νŒŒμΌμž…λ‹ˆλ‹€(11νŽ˜μ΄μ§€, 였λ₯Έμͺ½ ν•˜λ‹¨). JPEG2000 μ΄λ―Έμ§€μ—λŠ” ν”½μ…€λ‹Ή 4λΉ„νŠΈκ°€ μžˆμŠ΅λ‹ˆλ‹€.
https://issues.apache.org/jira/secure/attachment/12655396/PDFBOX-2204-012411.pdf

이 pdfλ₯Ό λ Œλ”λ§ν•˜κΈ° μœ„ν•΄ pdf.js μ½”λ“œμ— μ μš©ν•  수 μžˆλŠ” μž„μ‹œ μˆ˜μ • 사항이 μžˆμŠ΅λ‹ˆκΉŒ? μ œμ•ˆν•΄μ£Όμ„Έμš”.

μ•ˆλ…•ν•˜μ„Έμš”, μ—…λ°μ΄νŠΈλ₯Ό μ œκ³΅ν•  수 μžˆμŠ΅λ‹ˆκΉŒ?

μ—¬λ³΄μ„Έμš”! λ‚˜λŠ” 같은 λ¬Έμ œκ°€ μžˆμŠ΅λ‹ˆλ‹€ :/

이것 μ’€ λ΄μ£Όμ‹œκ² μ–΄μš”? μ—¬κΈ°μ„œλ„ 같은 문제!

사싀 이것에 따라 νŒ€ 전체가

같은 문제 : /

λ‚˜λŠ” μ•½κ°„μ˜ 디버깅을 ν–ˆκ³  jpx_stream.jsλ₯Ό λ³΄μ•˜λ‹€. jpxImage.parse() 후에 κ°μ²΄μ—λŠ” 0인 타일이 1개 μžˆμŠ΅λ‹ˆλ‹€. ν¬κΈ°λŠ” μ •ν™•ν•©λ‹ˆλ‹€(예: 2496 x 3512 = 8765952).

(λ‚΄κ°€ μ²¨λΆ€ν•œ λ‹€λ₯Έ 파일의 경우 λ””μ½”λ”©λœ λ°”μ΄νŠΈλŠ” λͺ¨λ‘ 255μ˜€μŠ΅λ‹ˆλ‹€)

λ”°λΌμ„œ 이것은 λ¬Έμ œκ°€ PDFBox와 같은 색상 곡간이 μ•„λ‹ˆλΌ JPEG2000 디코더에 μžˆμŒμ„ λ‚˜νƒ€λƒ…λ‹ˆλ‹€.

@rafaelcaviquioli 이것은 μ˜€ν”ˆ μ†ŒμŠ€ ν”„λ‘œμ νŠΈμ΄λ©° μ‹œκ°„μ΄ μžˆκ±°λ‚˜ 없을 μˆ˜λ„ μžˆλŠ” μžμ› λ΄‰μ‚¬μžκ°€ μš΄μ˜ν•©λ‹ˆλ‹€. "이 μ†”λ£¨μ…˜μ— 따라 λ‚΄ 머리": κ·Έλ ‡λ‹€λ©΄ λ©°μΉ  λ™μ•ˆ νŒ€μ˜ λˆ„κ΅°κ°€ λ˜λŠ” μ—¬λŸ¬ μ‚¬λžŒμ„ ν’€μ–΄μ£Όκ³  JPEG2000 디코더λ₯Ό λ””λ²„κ·Έν•˜λ„λ‘ ν•˜μ‹­μ‹œμ˜€. μ‡ΌλŠ” μ—μ„œ μΌμ–΄λ‚œλ‹€
https://github.com/mozilla/pdf.js/blob/master/src/core/jpx.js
"μΌ€μ΄μŠ€ 0xFF93:" 근처.
JPEG2000 μ‚¬μ–‘μ—μ„œ μΌμ–΄λ‚˜λŠ” 일을 λΉ„κ΅ν•˜κ±°λ‚˜(https://jpeg.org/jpeg2000/ μ°Έμ‘°) μž‘λ™ 쀑인 JPEG2000 디코더(예: Java의 디코더)μ—μ„œ μΌμ–΄λ‚˜λŠ” 일을 λΉ„κ΅ν•˜μ‹­μ‹œμ˜€.
https://github.com/jai-imageio/jai-imageio-jpeg2000/

이 νŽ˜μ΄μ§€κ°€ 도움이 λ˜μ—ˆλ‚˜μš”?
0 / 5 - 0 λ“±κΈ‰