2011-09-27 30 views
11

Tôi là nhà phát triển nội bộ cho công ty in.Có thể gọi dịch vụ web bằng javascript Indesign không?

Chúng tôi sử dụng Adobe Indesign CS3 và CS5 để tạo tài liệu để in.

Tôi đã tạo tập lệnh trong Adobe Extendscript tạo Tài liệu thiết kế và xử lý một số chuyển đổi cơ bản khi khách hàng không tự làm như vậy.

Tôi đã sử dụng Javascript để viết tập lệnh này.

Có thể gọi dịch vụ web thông qua tập lệnh như vậy không?

Nếu có, làm cách nào?

Nếu không, cách tốt nhất để gọi dịch vụ web từ máy tính để bàn là gì?

Cảm ơn bạn.

+1

Vui lòng để lại những lời chỉ trích mang tính xây dựng về việc đây là câu hỏi tồi tệ như thế nào trước khi chỉ đơn giản là downvoting nó. Tôi tương đối mới ở đây và chỉ đơn giản là tìm kiếm sự giúp đỡ, cố gắng đặt câu hỏi của tôi càng rõ ràng càng tốt. – story

+0

... bạn đang nói về việc gọi một ws từ một tài liệu xuất bản trên máy tính để bàn? – vector

+0

Về cơ bản, có. Tôi cần phải gọi một ws từ bên trong Adobe Indesign CS3 - CS5, mặc dù kế hoạch không yêu cầu một tài liệu để được mở nhưng khi kịch bản được gọi. – story

Trả lời

4

Không và có.

Không, không có cách nào (afaik) làm cho InDesign gọi dịch vụ web từ tập lệnh. Nó rất có thể và thường được thực hiện từ các plugin InDesign (bạn có thể thực thi mã C++ tùy ý để bạn có thể làm bất cứ điều gì). Tuy nhiên, đó là một con thú hoàn toàn khác để học.

Có, có thể thực hiện từ ExtendScript bằng thư viện. Vì vậy, về cơ bản kịch bản của bạn sẽ gọi dịch vụ web để lấy dữ liệu (có thể sử dụng các tham số nhận được từ InDesign hoặc tài liệu) và sau đó gửi các giá trị trả về vào các hàm script InDesign khác để thực hiện các thao tác.

Mẫu cơ bản có thể được tìm thấy here sử dụng 'Có thể mở rộng'.

CHỈNH SỬA: Vì dường như có sự nhầm lẫn: Tài liệu không phải là tài liệu chạy tập lệnh và rất hiếm khi thậm chí chứa chúng. Các tập lệnh được lưu trong định dạng Javascript cụ thể của InDesign (.jsx) và được giải thích bằng công cụ tạo tập lệnh InDesign.

+0

Tôi không nói nên lời. Thư viện Extendables này rất tuyệt vời. Đây chính xác là những gì tôi cần. Cảm ơn bạn! Tôi sẽ cộng một lần nhiều lần nếu có thể. – story

+1

Phần mở rộng dường như đã trở thành thịt lợn: http://porky.io/ – Ben

+0

@Ben, cảm ơn cho mẹo về thịt heo. Xem xét một cách ngắn gọn về codebase, tôi không nghĩ heo thịt là Extendables. Họ có thể chia sẻ một số chức năng phổ biến, nhưng chúng được cấu trúc khác nhau và đôi khi phục vụ các mục đích khác nhau. pigy có vẻ là một kết nối DB (web) cho ExtendScript với một số tính năng bổ sung. Extendables là một khung kiểm tra cho ExtendScript với một số tính năng bổ sung. – David

0

... có thể nếu bạn sử dụng InDesign để tạo pdf ra khỏi tài liệu. Trong pdf bạn có thể có thể. Nhưng từ nguyên bản InDesign doc có lẽ không. Tôi cũng bỏ phiếu rằng bạn sẽ không thể chạy js từ tài liệu trước khi nó được mở. Tôi muốn đề nghị dùng nó với các chuyên gia InDesign. Tôi tò mò tuy nhiên những gì bạn sẽ đưa ra kể từ khi tôi nhớ rằng ID không cho phép bạn bao gồm tương tác trong tài liệu. Xin vui lòng gửi lại nếu bạn tìm thấy câu trả lời của bạn ở một nơi khác.

+0

JS?Sau đó, có, bạn có thể có thể, tự hỏi nếu bạn có thể bao gồm toàn bộ jQuery lib trong doc :-), thực hiện một cuộc gọi Ajax. – vector

+0

Hmm, tôi cũng tự hỏi. Điều đó sẽ rất thú vị. – story

+0

hãy thử, xem điều gì xảy ra. Tự định dạng báo :-) – vector

6

Extendables đã được đề cập:

Extendables

Nó không phải là jQuery, thay vào đó nó là một thư viện cho InDesign Scripting.

Thảo luận đầy đủ nhất được tìm thấy tại Rorohiko's blog, với ví dụ đẹp về phía trước.

+0

Cảm ơn bạn, điều này cực kỳ hữu ích. 1 cho khiếp sợ. – story

0

Bên cạnh Extendables, có 2 lựa chọn thay thế:

Adobe Bridge/Bridgetalk

không thể nói cho các phiên bản cụ thể của bộ ứng dụng Adobe, nhưng nếu bạn có thể sử dụng hoặc có Adobe Bridge/Bridgetalk , bạn có thể sử dụng giao tiếp ứng dụng chéo của Adobe và lớp HttpConnection có sẵn cho Bridge (theo tài liệu SDK), và có InDesign gọi Bridge để thực hiện yêu cầu HTTP và chuyển kết quả trở lại InDesign.

Tôi không có ví dụ cụ thể cho InDesign, nhưng đây là một số ví dụ dành cho Illustrator. Tôi cho rằng nó sẽ chuyển đến InDesign dễ dàng.

https://gist.github.com/daluu/2d9dec72d0863f9ff5a7

https://gist.github.com/mericson/6509997

dịch vụ web thực hiện cuộc gọi từ bên ngoài và giao diện để ExtendScript

cơ scripting API của Adobe không phải là nghiêm ExtendScript/Javascript. Bạn cũng có thể sử dụng API tập lệnh từ COM/VBScript (trên Windows) hoặc Applescript (trên Mac), thực thi bên ngoài với InDesign nhưng tương tác với InDesign thông qua API.

Đối với Windows, theo COM, tôi có nghĩa là bất kỳ ngôn ngữ nào hỗ trợ COM, vì vậy nó không chỉ là VBScript mặc định (có thể là Python, Perl, PHP, Java, .NET, thậm chí Microsoft JScript - phiên bản Javascript của chúng cho dòng lệnh/desktop/etc.).

Sử dụng API tập lệnh trên một công cụ khác, bạn thực hiện cuộc gọi dịch vụ web từ bên ngoài từ ngôn ngữ khác (VBScript, Applescript, v.v.) rồi chuyển kết quả vào ExtendScript thông qua lệnh gọi API script (trong COM/Applescript) của application.doScript ('Đoạn mã ExtendScript tại đây') (hoặc doJavascript) nơi đoạn mã ExtendScript, có thể là đoạn mã ngắn sử dụng ExtendScript bao gồm để bao gồm tệp JSX thực, sau đó gọi hàm/phương thức ExtendScript, chuyển qua kết quả dịch vụ web làm đối số.

Một ví dụ về kỹ thuật này (không bao gồm các phần web gọi dịch vụ) được mô tả ở đây trong một số các giải pháp:

Is it possible to execute JSX scripts from outside ExtendScript?

1

Bạn cũng có thể gọi AppleScript hoặc VB tùy thuộc vào hệ điều hành và sử dụng một số tiện ích dòng lệnh như cUrl để gọi dịch vụ web của bạn. Ngoài ra, bạn có thể thử getUrl, một tập lệnh miễn phí từ Rorohiko giúp giảm bớt giao tiếp web bên trong ExtendScript.

Các vấn đề liên quan