>

PDF 파일이 있는데 PS 파일로 변환하고 다음 명령을 실행합니다

# file d00137-001
/var/spool/cups/d00137-001: PDF document, version 1.4
# gs -dBATCH -dNOPAUSE -q -sDEVICE=ps2write -sOutputFile=d00130 d00137-001

그러면 많은 오류 출력이 나타납니다 :

**** Error: File has an unbalanced >> (close dictionary).
            Output may be incorrect.
**** Error: obj definition followed by multiple tokens, attempting to recover.
           Output may be incorrect.
**** Error: obj definition followed by multiple tokens, attempting to recover.
......    /* Skip 11 lines of the same output */
**** Error: Tf refers to a resource key with an invalid value type: marktype. Assuming resource key: F7 is a font name.
           Output may be incorrect.
**** Error: Tf refers to a resource key with an invalid value type: marktype. Assuming resource key: F7 is a font name.
           Output may be incorrect.
......    /* Skip 11 lines of the same output */
# file d00130
/var/spool/cups/d00130: PostScript document text conforming DSC level 3.0, Level 2
# ls -l d00130 d00137-001 
-rw-r--r-- 1 root root 203745 3月  15 14:27 d00130
-rw-r----- 1 root lp     6565 3月  15 14:27 d00137-001

그러나 d00130은 evince를 통해 보거나 HP 프린터를 통해 인쇄 할 때 빈 문서입니다. PDF 파일 형식에 문제가 있습니까, 아니면 명령 매개 변수를 조정해야합니까? 그러나 원본 PDF 파일을 열어 보거나 인쇄 할 수 있습니다.

매우 감사합니다.

원본 PDF 파일이 필요한 경우 이메일을 남겨 주시면 보내 드리겠습니다.

다시 감사합니다.

  • 답변 # 1

    와이즈 비즈

    그럴 가능성이 거의없는 것 같습니다. Ghostscript가 서체를 찾을 수없는 경우, 대체 서체를 사용하여 누락 된 서체를 대체합니다. 여러 요인에 따라 '적합한'글꼴이라고 생각하는 것을 선택합니다. 이걸 물리 칠 수 없다고 주장하지 않고 대신 오류가 발생하지만, 나에게는 그럴 것 같지 않습니다.

    와이즈 비즈

    그래서글꼴,CIDFont이 아니므로 큰 차이가 있습니다.

    와이즈 비즈

    2 바이트 인코딩을 의미한다고 가정합니다. 답은 "Yozo Kai"라는 CIDFont 만 있으면된다는 것입니다. 그러나 .... 글씨체 이름에 공백을 사용하는 것은 PostScript와 PDF에서 공백이 구분 기호이기 때문에 실제로 나쁜 생각입니다. 따라서 위에 게시 한 줄은 기술적으로 유효하지 않습니다.

    I think this issue is gs did not found the chinese font my used.

    를 포함하는 사전을 만드는 대신  그리고 값

    this font path is /usr/share/fonts/truetype/yozo/yzdwkj6.ttf, I have try to add this font to /usr/share/ghostscript/9.22/Resource/Init/cidfmap,

     PDF 파일은 실제로

    but the PDF file have below line: /BaseFont /Yozo Kai. how can I do for this description information is a >two-word font?

    키로 사전을 만듭니다.  그리고 값 /BaseFont 여분의 문자열 /Yozo Kai 와 함께  누워있었습니다. 이는 사전에 짝수 개의 항목이 없으므로 불법입니다. 이러한 상황에서 정확히 어떤 일이 발생하는지는 정의되어 있지 않습니다.

    참고할 PDF 파일이 없어서 다음과 같은 오류 메시지가 표시되므로 말 그대로 사용하고 있습니다.

    와이즈 비즈

    제안 사항이 정확합니다. 항목 수가 너무 많지 않아서 Ghostscript가 닫는 /BaseFont 를 먹었습니다.  닫는 사전 표시를 찾을 수 없기 때문에 불평합니다.

    와이즈 비즈

    같은 이유로 공백은 구분 기호이므로 공백을 포함하는 이름을 만들 수 없습니다. PostScript (cidfmap 정의 방법)에서 다음을 수행 할 수 있습니다.

    /Yozo
    
    

    여기에있는 경로에 대해서는 여전히 의문의 여지가 있습니다 .Ghostscript Generic Resource Directory를 'usr/share/...'로 연결했기 때문에 나에게는 맞지 않을 것입니다. 나는 당신이 단순히 Kai 를 원한다고 생각합니다 .

    그러나 실제 문제는 PDF 파일이 손상되었다는 것입니다. 이름에 공백이있는 글꼴을 포함시키는 올바른 방법은 다음과 같습니다.

    **** Error: File has an unbalanced >>(close dictionary). Output may be incorrect.

    즉, 사용할 수없는 문자 (이 경우 공백)를 이스케이프 문자 '#'으로 바꾼 다음 사용하려는 ASCII 문자를 설명하는 바이트로이 문자를 따라갑니다. 멀티 바이트 인코딩 이름을 가진 글꼴의 경우 모든 '인쇄 할 수없는'문자 코드에 이스케이프 코드를 사용해야합니다.

    PDF 파일이 근본적으로 고장난 규칙을 따르지 않기 때문에 PDF 파일을 만드는 데 사용 된 소프트웨어 제작자에게 연락하여 버그가 있음을 알려야합니다. 이 문제를 해결하는 유일한 방법은 PDF 파일을 다시 만드는 것입니다.

    >>

  • 이전 linux - 몇 시간 동안 스크립트를 계속 실행
  • 다음 asp.net - ASHX 파일에서 세션 변수를 설정하는 방법