2009-09-14 30 views
7

Tôi muốn mở một tệp PDF tại điểm đến được đặt tên bằng WinForms (C#). Đây là mã của tôi:Mở tập tin pdf theo chương trình tại một địa điểm được đặt tên

System.Diagnostics.Process myProcess = new System.Diagnostics.Process(); 
myProcess.StartInfo.FileName = "Acrobat.exe"; 
myProcess.StartInfo.Arguments = "/A \"nameddest=Test2=OpenActions\" C:\\example.pdf"; 
myProcess.Start(); 

Nó luôn mở tệp ở trang 1 thậm chí có đích Test2 ở trang # 10. Về cơ bản, bỏ qua tham số đích. Tuy nhiên nếu tôi sử dụng một tham số khác như số trang nó hoạt động tốt. Ví dụ:

myProcess.StartInfo.Arguments = "/A \"page=5=OpenActions\" C:\\example.pdf"; 

sẽ luôn mở tài liệu PDF tại trang 5.

Cảm ơn trước sự giúp đỡ của bạn

+0

Tính năng này có hoạt động nếu bạn thực thi lệnh từ dòng lệnh không? Bạn đã thử các phiên bản Acrobat khác hoặc các hệ thống khác chưa? Nó có thể là một lỗi Acrobat, hoặc có thể cài đặt của bạn là xấu? – Jason

+0

Tôi đã thử thực hiện nó từ dòng lệnh và nó không hoạt động. Nếu tôi vượt qua tham số số trang, nó hoạt động nhưng không sử dụng đích. Tôi thậm chí đã cài đặt một phiên bản mới của Acrobat một máy tính mới và không có bất kỳ thành công nào. –

+0

Nếu nó không hoạt động dưới dạng dòng lệnh, thì đây không phải là câu hỏi liên quan đến lập trình. Đó là câu hỏi về Adobe Reader. Đây không thực sự là nơi dành cho loại câu hỏi đó - hãy thử hỏi tại http://forums.adobe.com/community/adobe_reader_forums/adobe_reader –

Trả lời

0

Bạn đã thiết lập những khu? Bạn cần phải có các phiên bản tiêu chuẩn hoặc chuyên nghiệp của Adobe Acrobat để làm điều này:

http://kb2.adobe.com/cps/317/317300.html

+0

Có, tôi đang sử dụng Adobe Acrobat 8 ​​Standard Version 1.8.3. Bên trong Adobe tất cả các điểm đến có vẻ tốt. Nhấp vào bất kỳ trong số họ sẽ điều hướng thông qua tài liệu. –

2

Về tài liệu Adobe khi mở một tài liệu PDF từ một tiện ích dòng lệnh, bạn có thể vượt qua các thông số để mở lệnh bằng cách sử dụng/A chuyển đổi bằng cách sử dụng cú pháp sau:

myProcess.StartInfo.Arguments = "/A \"nameddest=Test2=OpenActions\" C:\\example.pdf"; 

Nếu tôi bỏ qua các tham số OpenActions tất cả mọi thứ hoạt động tốt như:

myProcess.StartInfo.Arguments = "/A \"nameddest=Test2\" C:\\example.pdf"; 

Tôi không chắc tại sao OpenActions lại mở tệp nhưng bỏ qua nó hoạt động tốt.

2

Tôi có csv với 5 cột. Cột 1 chứa các tên PDF và pagenumbers Column5. Tệp thực thi hiển thị csv. Khi tôi kích đúp vào một dòng trong csv đoạn mã sau được thực hiện:

ListViewItem item = lvwItems.SelectedItems[0]; 
Process myProcess = new Process(); 
myProcess.StartInfo.FileName = "Acrobat.exe"; 
myProcess.StartInfo.Arguments = "/A page=" + item.SubItems[4].Text + " " + item.Text; 
myProcess.Start(); 

này mở ra PDF được lựa chọn có tên là trong item.Text trên trang mà PAGENUMBER là trong item.SubItems[4].Text

6

tôi sử dụng đoạn mã sau :

string strNamedDestination = "MyNamedDestination"; // Must be defined in PDF file. 
string strFilePath = "MyFilePath.pdf"; 
string strParams = " /n /A \"pagemode=bookmarks&nameddest=" + strNamedDestination + "\" \"" + strFilePath + "\""; 
Process.Start("AcroRd32.exe", strParams); 

Lưu ý "/ n" bên trong thông số. Nó làm cho Adobe luôn mở một tài liệu mới. Nếu không, nếu tài liệu đã được mở, nó sẽ không di chuyển nó đến đúng đích đã đặt tên. Nó phụ thuộc vào hành vi bạn muốn cho ứng dụng của bạn.

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