2012-09-25 2 views
1
stream 
{ 360 mul sin 
2 div 
exch 360 mul sin 
2 div 
add 
} 
endstream 

누군가이 구문을 설명해 주시겠습니까?PDF 함수 (유형 4) 스트림 구문을 이해할 수 없습니다.

+2

이전에 PDF와 관련된 질문을 던졌고, 나에게 잘 답변되었습니다. 그러나 당신은 그 대답을 받아들이거나 upvote하지 않았다. 적절한 피드백이나 감사를하지 않으면 사람들이 귀하의 질문에 대처하는 것을 주저합니다. –

+0

감사합니다. 귀중한 제안입니다. – user1184384

답변

2

이 나에게 PDF처럼 보이지 않는 :

  • streamendstream 예, PDF의 키워드입니다.

  • 하지만 나머지는 PostScript처럼 보입니다.

      을 :

    그래서 stream

    endstream 또한


    은 포스트 스크립트 코드는 살균제 다른 (전) 동일한 코드에 정의 된 포스트 스크립트 변수 또는 기능 일 수

  • {}은 코드를 블록으로 구성하는 구분 기호입니다.
  • 360 mul sin : 360을 곱하십시오 (곱하면 뭐죠? => 스택의 최상단에있는 값) 결과에 대한 sinus 값을 계산하여 스택 맨 위에 놓습니다.
  • 2 div : (360)에 의해 지금 맨 위의 항목을 곱하면, 스택에 2 개 맨 위 항목을 교환 그것의 부비동을 계산하고 스택에 다시 넣어 2.
  • exch 360 mul sin하여 스택의 최상위 값을 분할 .
  • 2 div : 스택의 최상위 값을 2로 나눕니다.
  • add : 스택에 2 개의 최상위 값을 추가하십시오.

업데이트 :

아야!

PDF 사양에서 PDF 문서 내에 허용되는 (매우 제한적인) PostScript 기능 개체의 세부 정보를 완전히 잊어 버렸습니다. 이들은 자 급식 및 정적 수치 변환을 나타냅니다.

그래서 위의 PostScript 코드를 계산기 기능으로 설명하면 여전히 유효하며 하프 톤 스크린의 '스폿 기능'을 설명하는 것처럼 보입니다. 그러나이 컨텍스트에서 streamendstream은 원래 의미를 PDF 키워드로 유지하며 중괄호 {}이 필요합니다. 함수 정의를 묶는 데이 필요합니다.)이 포스트 스크립트 함수 객체에 대한 PDF 스펙을 허용하지 않기 때문에

배열, 변수, 이름 또는 문자열 있지만 정수, 실수부울 등의 사용 이 코드 세그먼트의 처리에는 완전히 구현 된 PostScript 인터프리터가 필요하지 않으며 사양의이 문은 다음과 같습니다.

"PDF는 프로그래밍 언어가 아니며 PDF 파일은 프로그램이 아닙니다."

은 여전히 ​​적용하고 여전히 포스트 스크립트는 매우 다른 PDF 파일 언어합니다 ( 언어 프로그래밍 이며, PS 파일 프로그램입니다) 않습니다.

포스트 스크립트는 스택 기반 언어는 것을 염두에두고, 당신은이 주제의 주위에 당신의 마음을 포장 도움이 될 것입니다 'reverse Polish notation' 규칙을 사용하는 포켓 계산기를 생각하여 코드를 이해 ...

+1

감사합니다. 그러나 이것은 PDF 사양의 일부이며 다음과 같은 PDF 예제에서이 세부 정보 만 있습니다. 10 0 OBJ <> 스트림 {360 MUL 죄 2 DIV EXCH 360 MUL 죄 2 div 추가 } 최종 스트림 endobj – user1184384

+0

@ user1184384 : 당신 말이 맞습니다. 필자는 PDF 코드 내에서 PDF 사양으로 허용되는 제한된 PostScript * 기능 개체에 대해 완전히 잊어 버렸습니다. –

+0

내 질문에 대한 최신 업데이트는 내가 알고 싶은 모든 것을 설명했습니다. – user1184384

2

그것의 포스트 스크립트 최종 값을 제공하기 위해 원시 데이터에서 실행되는 프로그램. 이것을 처리하기 위해 포스트 스크립트 파서가 필요합니다.

+0

제 문제는이 구문을 이해할 수 없다는 것입니다. pdf 참고 자료에서는 이러한 하위 집합 (추록) 연산자를 다르게 해석합니다. 유형 4 (포스트 스크립트 계산기) 기능. (pdf_reference_1-7.pdf, 페이지 번호 175). 예,이 하위 집합 연산자를 직접 구현해야합니다. – user1184384

관련 문제