2016-12-20 5 views
0

Adobe Acrobat Pro DC 사용자 지정 프로젝트에서 중간 스트림으로 가져 왔습니다. 이 프로젝트의 목표는 각 페이지의 왼쪽 가장자리에 경고를 추가하는 것입니다. 한 가지 예외로이 작업을 수행하는 자바 스크립트 조각을 받았으며 해당 예외를 수정하도록 요청했습니다.Adobe Acrobat Pro DC JavaScript 필드 속성이 전파되지 않습니다.

코드는 다음과 같습니다 문서의 길이가 한 페이지 이상 일 때

var inch = 72; 
for (var p = 0; p < this.numPages; p++) { 
    var aRect = this.getPageBox({nPage: p}); 
    aRect[0] = 8.25*inch; //how far from the left the box ends 
    aRect[1] = 0.5*inch; //how high from the bottom the box is 
    aRect[2] = 7.75*inch; //how far from the left the box starts 
    aRect[3] = 11.0*inch; //how tall the box is 
    var f = this.addField("ControlledDoc", "text", p, aRect) 
    f.rotation = 270; 
    f.delay = true; 
    f.textSize = 7.5; 
    f.textFont = font.HelvB; 
    f.textColor = color.red; 
    f.alignment = "center"; 
    f.readonly = true; 
    f.display = display.visible; 
    f.delay = false; 
} 
var myWillSaveScript = 'var f = this.getField("ControlledDoc"); \r' 
+ 'f.value = "This is an electronic controlled copy of a paper based document management system. When printed on the copy machine it becomes an uncontrolled paper copy valid until the end of the printing day."; \r'; 
this.setAction("WillSave", myWillSaveScript); 

문제는 제공합니다. ControlledDoc 필드는 예상대로 각 페이지에 복제됩니다. 각 페이지는 ControlledDoc#n-1 필드를 갖습니다. 여기서 n은 페이지 번호입니다. 첫 번째 페이지에서는 f.rotation 설정이 유지되며 속성 대화 상자의 방향 드롭 다운이 270으로 설정되어 UI에 표시됩니다. 그러나 두 번째 및 후속 페이지에서는 방향이 0으로 설정됩니다. 문서를 수동으로 편집 할 수 있습니다 Orientation을 270으로 설정했지만 JavaScript를 사용하여 자동화하는 목적에 위배됩니다.

내가 자바 스크립트 아크로뱃 프로 DC를 제어하는 ​​새로운 오전, 그래서 바보 뭔가를 놓치고 경우 나는 놀라지 않을 것이다 ... 나는 두 번째의 회전 설정 스틱을 만들기 위해 변경해야 할 무엇

및 후속 페이지?

답변

0

스크립트를 실행할 때 1 페이지에 있다고 가정합니다. 그것이 페이지 1에서 올바르게 보이는 이유입니다.

지연 속성을 false로 설정하면 Acrobat에서 필드의 모양이 true로 설정 될 때까지 지연되도록 지시합니다. 필드에 페이지를 추가하면 모든 설정이 완료 될 때까지 Acrobat에 외형을 생성하지 말라고 말하면서 ... 괜찮습니다 ...하지만 외모는 결코 나타나지 않으므로 후속 페이지를 방문하지 않아도됩니다. 지연 속성이 이제 true로 설정된 경우에도 해당 페이지에 대해 업데이트됩니다. 지연 속성을 설정하는 두 줄을 꺼내면 작동합니다.

+0

필자는'f.delay ...'줄을 모두 주석 처리하고 이전과 같은 동작을 얻었습니다. – cptully

+0

위의 설명을 통해 필자는 Acrobat Reader DC 설명서의 JavaScript를 찾아서 위의 코드와 거의 동일한 코드를 찾았습니다. 나는 완전히 새로운 스크립트 파일과 pu 것들을 단편적으로 시작하고 작동하도록했습니다! 감사!!! – cptully

1

필드 속성은 필드 레벨 (같은 이름의 모든 사본에 대해 동일 함) 또는 위젯 레벨 (필드의 사본과 다른 사본 일 수 있음)에있을 수 있습니다.

Acrobat JavaScript 설명서에는 해당 속성 목록이 있습니다. 불행히도이 두 목록 (필드 수준 및 위젯 수준)에는 rotation 속성이 없습니다. 즉, 필드 또는 위젯 수준인지 여부는 알 수 없습니다. 설명에서 위젯 수준이라는 느낌을받습니다.

시도해 볼 수있는 것은 모든 페이지마다 개별 필드를 만드는 것입니다. 당신은 라인 delay 부동산에 관한

var f = this.addField("ControlledDoc." + p, "text", p, aRect) ; 

으로 그렇게 할 것 : 난 항상 (대신 field.delay에) doc.delay 속성을 사용하고 있기 때문에 루프의 외부, 그것은 최대의 성능 향상을 제공 할 수 있도록. 그러나 스크립트가 루프 내에서 종료되면 콘솔을 통해 지연을 false로 설정해야합니다. 내 경험에 의하면, 이것은 모든 모습을 만들어 낼 것입니다. (하지만 알아 내기 위해서는 그 페이지로 가야합니다. 그리고 즉시 만들어집니다 ...).