Ghostscript PDF / A 변환이 유효성 검사에 실패했습니다.


5

"종이없는"워크 플로를 개발하고 모든 파일을 PDF / A-1b 형식으로 저장할 계획입니다.

내가 만들거나 PDF / A-1b로받는 PDF 파일을 변환하기위한 간단한 배치 파일을 개발하려고합니다. 이 답변을 시작으로 다음 배치 파일이 있습니다.

gswin32c ^
   -dPDFA ^
   -dNOOUTERSAVE ^
   -sProcessColorModel=DeviceCMYK ^
   -dUseCIEColor ^
   -sDEVICE=pdfwrite ^
   -o %2 ^
   -dPDFACompatibilityPolicy=1 ^
    "C:\Program Files (x86)\gs\gs9.07\mylib\PDFA_def.ps" ^
    %1

PDFA_def.ps에서 필자는 시스템에서 발견 한 것을 포함하여 몇 가지 다른 ICC 프로파일을 시도했습니다.

C:/Windows/System32/spool/drivers/color/CalibratedDisplayProfile-5.icc

sRGB_IEC61966-2-1_no_black_scaling.icc에서 color.org .

내 테스트 입력 파일은 CutePDF 2.8 (Ghostscript 8.15 사용)을 사용하여 Microsoft Outlook 2010에서 인쇄 된 1- 페이지 이메일입니다.

배치 파일과 Ghostscript 9.07을 사용하여 변환 한 후 Adobe Reader는 출력물이 PDF / A라고 생각하지만 pdf-tools.com의 PDF / A-1b 확인은 "키 N 값은 4이지만 3이어야합니다 . "

필자는 이것을 PDF 출력 파일의 다음 구문으로 되돌려 보았습니다.

<</Filter/FlateDecode
/N 4/Length 2595>>stream

내가 변경하는 경우 /N 4/N 3, 메시지 "키 N의 값은"사라집니다. /N이 헤더를 따르는 스트림의 객체 수를 분명히 나타냅니다. 인코딩 된 스트림을 읽는 방법을 모르겠으므로 포함 된 내용을 이해하지 못하고 왜 pdf-tools가 3 개의 객체 만 포함해야한다고 생각하는지 이해할 수 없습니다.

Bullzip을 사용하여 인쇄 된 PDF / A는 Ghostscript도 사용하지만 "N은 4이지만 반드시 3이어야합니다"라는 메시지와 함께 검증에 실패합니다.

이것은 색 공간과 관련이 있습니까? 나는 거기에서 내 깊이 빠져있다. 나는 "평범한"sRGB 공간에 만족할 것이라고 생각한다. Ghostscipt 문서는 PDF / A 인코딩 이 CMYK 여야 한다고 말합니다 . Adobe 는 RGB 또는 CMYK가 PDF / A에서 작동 함을 의미합니다 . 그래서 적절한 .icc 프로파일을 찾는 방법에 대해 잘 모릅니다.

아니면 유효성 검사기가 잘못되어 모든 것이 정상입니까?

답변:


7

버그 보고서 에있는 GhostScript 개발자 덕분에 /N문제 를 해결할 수있었습니다 . 교훈:

  • 내 질문에 언급 된 GhostScript 문서가 오래되었습니다. 현재 문서는 여기에 , ProcessColorModel = DeviceRGB 괜찮 말한다.
  • ICC 프로파일은 색 공간을 설명합니다. 일부 유효한 색상 공간은 회색, RGB 및 CMYK입니다. 무료 ICC 프로파일 검사기를 사용하여 ICC 프로파일의 색상 공간을 확인할 수 있습니다 .
  • 유효성 검사 오류를 일으키는 PDF 파일 섹션 /N에서 색소의 수를 나타냅니다.
  • PDFA_def.ps 파일이 /N값을 내 보냅니다 . Ghostscript 9.07에 포함 된 샘플은 /N 1(ProcessColorModel = DeviceGray의 경우) 또는 /N 4(다른 ProcessColorModel의 경우) 만 방출 합니다.
  • 원래의 테스트에서 ProcessColorModel = DeviceCMYK가 지정 /N 4되었지만 RGB 색상 공간을 설명하는 ICC 프로파일을 사용했습니다. 유효성 검사기는이 불일치를 정확하게 파악했습니다. 나는 4 가지 색상을 약속했지만 3 가지만 설명했습니다.

디스플레이 및 사무용 프린터에서 찾은 대부분의 ICC 프로파일은 RGB 색상 공간을 설명합니다. (CMYK는 고급 인쇄기 및 특정 종류의 용지와 관련이 있습니다.) 제 목적을 위해서는 RGB가 더 좋습니다. 다음 배치 파일은 PDF 파일을 RGB 색상 공간이있는 PDF / A-1b로 변환합니다.

gswin32c ^
   -dPDFA ^
   -dNOOUTERSAVE ^
   -sProcessColorModel=DeviceRGB ^
   -dUseCIEColor ^
   -sDEVICE=pdfwrite ^
   -o %2 ^
   -dPDFACompatibilityPolicy=1 ^
    "C:\Program Files (x86)\gs\gs9.07\mylib\PDFA_def.ps" ^
    %1

PDFA_def.ps에서 RGB 색상 공간을 설명하는 ICC 프로파일을 지정하고 다음과 같이 ICC 프로파일을 정의하기위한 섹션을 변경합니다.

% Define an ICC profile :

[/_objdef {icc_PDFA} /type /stream /OBJ pdfmark
[{icc_PDFA} <</N systemdict /ProcessColorModel get /DeviceGray eq {1} {systemdict /ProcessColorModel get /DeviceRGB eq {3} {4} ifelse} ifelse >> /PUT pdfmark
[{icc_PDFA} ICCProfile (r) file /PUT pdfmark

긴 행에는 ifelseProcessColorModel = DeviceRGB를 감지하고 해당 항목을 내포하는 중첩 된 명령문이 포함되어 /N 3있습니다. 결과 파일은 pdf-tools.com 에서 검증을 통과해야합니다 .

업데이트 : 나는 좀 더 할 수있는 배치 프로그램을 작성하고 블로그 게시물을 게시했습니다 배치는 PDF / A로 PDF로 변환 .


나는 방금 pdf 도구를 사용했으며 유효성 검사 오류는 "N 키의 값은 4이지만 3이어야합니다."라는 오류가있었습니다. 내가 여기서 당신의 상세한 대답을 얼마나 기쁜지 상상할 수 없을 것입니다. 대단히 감사합니다.
Jan-Philip Gehrcke

3

고스트 스크립트 의 최신 버전 9.07 에서 문제를 다시 테스트 해보는 것이 좋습니다 . 문제가 이미 해결 된 경우에 대비하십시오.

이것이 도움이되지 않는다면,이 문제에 대한 답을 얻기 위해서는 진정한 PDF 전문가가 필요합니다. 이 문제는 .ps 파일의 내용과 gswin32c 명령의 매개 변수 사이의 충돌과 관련이 있다고 생각합니다.

그러나 문제가되는 파일은 ghostscript에 의해 생성되므로 ghostscript Bugzilla 페이지 (등록 필요) 에 질문을 게시 할 수있는 권한이 있습니다 . 개발자가 질문에 답변합니다. 유령 스크립트의 버그 인 경우 다음 버전에서 수정 될 가능성이 큽니다.

게시물에있는 문제 설명 외에도 예제 .ps 파일과 결과 .pdf 파일을 첨부해야합니다. 그들의 크기를 최소화하려고 노력하십시오.

과거에 나는 그 포럼에서 의심스러운 고스트 스크립트 버그를보고했고 항상 잘 대답했고 발견 한 실제 버그는 모두 수정되었습니다.


답장을 보내 주셔서 감사합니다. 원본이 GhostScript 8.15를 사용하는 CutePDF 2.8에 의해 만들어 졌음을 언급함으로써 혼란 스러울 수 있습니다. 그러나 디버깅하려는 실제 변환은 GhostScript 9.07에서 수행되었습니다. 나는 PDF / A 변환이 아직 해결되지 않았고 검증 된 것에 놀랐지만 철저한 튜토리얼을 찾지 못했습니다. 고스트 스크립트 포럼을 사용해 볼 수 있습니다.
Mark Berry

이것은 사용자 중심의 포럼이 아니라 버그 리포트 웹 사이트이며 개발자 만이 직접적으로 답변 한 것을 기억하십시오.
harrymc

버그를 제출하기 전에 Adobe Acrobat XI 평가판을 다운로드하기로 결정했습니다. 저의 테스트 문서는 "비행 전"PDF / A-1b 검증을 통과합니다. Ghostscript는 (그리고 다른 사람들도) Adobe의 표준 해석에 기대지는 경향이 있습니까? 그렇다면 버그를 찾아내는 데는 아무런 요점이 없습니다.
Mark Berry,

당신이 말하는 것에 따르면, Ghostscript에 기반한 제품은 this / N이 부적합하다는 것을 찾습니다. Acrobat이이를 감지하지 못하면 Acrobat 검사기의 버그 일 수 있습니다. 내 자신의 PDF 사양을 읽는 중에 FlateDecode의 법적 매개 변수 목록에서 / N을 찾지 못했지만 왜 그것이 모두 방출되는지 잘 모릅니다 (삭제하려고 시도하고 pdf가 여전히 작동하는지 확인할 수 있습니다). ). Ghostscript 개발자에게 잘못된 버그를 제시하는 것에 대해 걱정할 필요가 없습니다. 이미 한 번 이상을 했으므로 언제나 친절하게 대했습니다.
harrymc

나는 bugs.ghostscript.com/show_bug.cgi?id=693830을 만들었 습니다 . 내가 말할 수있는 것처럼, / N은 FlateDecode 매개 변수가 아닙니다. 오히려 "FlateDecode", "N"및 "Length"는 모두 다음 "스트림"이 해석되는 방법을 설명합니다. Acrobat의 "내부 PDF 구조"도구는이 개체가 OutputIntents> 0> DestOutputProfile에 있고 스트림이 ICC 프로필 스트림임을 보여줍니다. 그러나 / N이 의미하는 바에 대해서는 여전히 명확하지 않습니다.
Mark Berry
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.