2010-07-18 50 views
5

Tôi đang tạo sách điện tử cho một người bạn. Anh ấy có nội dung bằng chữ (docx) nên tôi có một vài câu hỏi. Tôi tạo ra một chủ đề trước đó về cách tiếp cận này và phản ứng tốt nhất là tạo ra PDF của nó. Điểm chính của điều này là vì vậy chúng tôi có thể có các hộp văn bản, liên kết và bảng nội dung có thể chèn.lưu trữ tệp PDF trong ứng dụng C#

Bây giờ tôi đã tự hỏi nếu tôi có thể lưu trữ các tệp pdf trong ứng dụng của mình. Tôi muốn làm một "adobe reader" về cơ bản. Có thư viện nào ngoài đó không? Tôi có thể sử dụng COM/dll đã cài đặt để thực hiện việc này không?

Lý do cho điều này là tôi đã tạo một phần "bài kiểm tra" trên ứng dụng của tôi hoặc "thẻ báo cáo" hoặc thậm chí là tính năng "dấu trang".

Xin cảm ơn các bạn.

Trả lời

6

Làm a Điều khiển trình duyệt PDF tùy chỉnh có thể là một nhiệm vụ cực kỳ khó khăn. Thay vào đó, bạn có thể sử dụng Adobe Reader thực trong ứng dụng của mình vì nó được cung cấp dưới dạng điều khiển COM có thể được lưu trữ trong bất kỳ ứng dụng Windows nào. Dưới đây là các bước:

  1. Bắt đầu một WinForms ứng dụng mới
  2. Hãy kiểm soát Acrobat có sẵn trong hộp công cụ (Tools -> Add/Remove Toolbox Items: bật "Adobe Acrobat 7.0 Trình duyệt tài liệu" trong tab COM Components). Đừng quên lấy một tách cà phê trước khi nhấp vào tab COM.
  3. Kéo kiểm soát mẫu
  4. Thao tác nó:

    axAcroPDF1.LoadFile("mypdf.pdf"); 
    axAcroPDF1.Show(); 
    
+0

Tôi sẽ bỏ phiếu vì nó sẽ hoạt động .. Mặc dù tôi nghĩ rằng bằng cách sử dụng WebBrowser kiểm soát đơn giản hơn. – David

+0

@David, trong khi phương pháp 'WebBrowser' thực sự dễ thực hiện hơn, nó cho phép bạn kiểm soát rất ít PDF so với thành phần Adobe cho phép bạn điều hướng, in, ... –

+0

Tuyệt vời! nhưng tôi có thể phân phối đúng thư viện không? Trình cài đặt nên thực hiện công việc. Điều gì về một trình đọc pdf lightwieght như foxit, nó có thể được sử dụng tương tự? – masfenix

1

Tôi biết điều này đã được yêu cầu trước đó, nhưng tôi không thể nhớ vị trí. Câu trả lời được chấp nhận là một cái gì đó dọc theo những dòng:

Nó sẽ là một ý tưởng rất xấu để tạo trình đọc PDF của riêng bạn, bởi vì:

  1. bạn không kiểm soát được khi Adobe thay đổi thông số kỹ thuật
  2. Adobe cung cấp miễn phí trình đọc và hầu hết người dùng đã cài đặt ứng dụng này.
  3. Với hai câu trước, tại sao bạn muốn dành nhiều thời gian để phát minh lại bánh xe? Nó có ý nghĩa để phát minh lại bánh xe khi bạn có thể cải thiện nó, nhưng không phải khi bạn chỉ là sao chép chức năng đó là tự do có sẵn.

Sẽ tốt hơn nếu bạn tìm cách sử dụng trình đọc Acrobat mà họ đã thiết kế và phân phối miễn phí.

Điều này rất dễ thực hiện. Tất cả những gì bạn cần làm là sử dụng điều khiển WebBrowser (giả sử đây là WinForms) và đặt DocumentSource thành tệp PDF. Điều khiển WebBrowser sẽ tự động sử dụng bất kỳ trình đọc pdf nào đã được cài đặt trên máy khách, giống như Internet Explorer.

1

Tôi đã có kinh nghiệm làm việc rất tốt với các Aspose thư viện. Họ đang phải chăng và sẽ giúp bạn tiết kiệm rất nhiều thời gian.

1

Bạn có thể nhúng Adobe Reader vào ứng dụng của mình thông qua thành phần ActiveX được cài đặt trên máy của bạn cùng với trình đọc. Bạn có thể thêm nó vào VS Toolbox của bạn từ tab COM Components. Bất cứ ai đã cài đặt Abobe Reader sau đó sẽ có thể sử dụng ứng dụng của bạn để xem tài liệu PDF. Lưu ý rằng nếu không có chương trình Adobe Reader, chương trình của bạn sẽ không hoạt động, hoặc bạn cần bằng cách nào đó để cung cấp lib cho ứng dụng. Nếu bạn muốn một cái gì đó mà không yêu cầu Adobe Reader sau đó bạn có thể muốn kiểm tra các iText#.

+0

Hạn chế là ứng dụng của bạn sẽ không hoạt động trên các máy không cài đặt trình đọc adobe. Tôi đoán OP chỉ xây dựng một cái gì đó cho một người bạn, nhưng tôi sẽ khá bất hạnh nếu tôi phải cài đặt trình đọc adobe chỉ để sử dụng một số ứng dụng khác ... –

+0

Về mặt kỹ thuật, người bạn là nhà thầu cho một công ty lớn hơn. Công ty sẽ cần phải phân phối điều này cho khách hàng của họ và tốt, họ không thể gửi một cái gì đó ra nếu nó dosnt làm việc. – masfenix

+0

Công ty thậm chí còn ít có thể phân phối thư viện adobe mà không được phép từ adobe (giấy phép redist bình thường cho phép chỉ phân phối lại toàn bộ trình cài đặt: http://www.adobe.com/products/reader/rdr_distribution1.html). Tôi sẽ mong đợi cáo buộc có yêu cầu tương tự –

0

Sự cố tiềm ẩn khi sử dụng thành phần Adobe ActiveX/com là người dùng phải cài đặt Adobe Reader để làm việc (Tôi không nghĩ bạn có thể và/hoặc được phép phân phối lại chỉ kiểm soát activeX và sẽ không muốn buộc người dùng của tôi cài đặt Adobe Reader). Vì vậy, đối với công việc nghiêm túc hơn, tôi sẽ cố gắng sử dụng thư viện Pdf mà bạn có thể phân phối bằng mã của bạn như viết một trình bao bọc P/Invoke (có lẽ rất nhỏ) cho thư viện mã nguồn mở http://ccxvii.net/mupdf/ hoặc nếu bạn có thể/muốn đủ khả năng sử dụng một số thương mại thư viện.

Một vấn đề với việc sử dụng điều khiển webbrowser là bạn phải cẩn thận để kiểm tra điều gì sẽ xảy ra nếu người dùng đích là nhúng pdf bị tắt trong IE. Nó có thể xảy ra mà thay vì nhúng bạn nhận được một đầu đọc adobe bên ngoài (hoặc bất cứ điều gì được đăng ký như xử lý pdf) bật lên! Có thể có một cách giải quyết khác, nhưng tôi đã bị cắn trước đây (kết quả là một trong những vấn đề "hoạt động trên máy của tôi")

+0

Vấn đề với điều này là thư viện không hỗ trợ các tệp PDF có liên kết được nhúng hoặc hộp văn bản, v.v. hay không? – masfenix

+0

Vâng, điều đó sẽ phụ thuộc vào thư viện :) Tôi không chắc chắn về mupdf là trung thực, nhưng IIRC sumatrapdf dựa trên mupdf và sumatra ít nhất hỗ trợ nhúng liên kết, ToC và đánh dấu. Tyler Jensen đề cập Aspose, tôi đoán rằng sẽ hỗ trợ các tính năng pdf tiên tiến hơn nhưng tôi chưa bao giờ sử dụng nó bản thân mình và nó là một chút tốn kém ... Đối với mupdf tôi đoán bạn chỉ đơn giản là có thể thử và xem liệu sumatrapdf hỗ trợ các tính năng bạn cần, sau đó điều tra bao nhiêu nỗ lực một lớp P/Invoke cho .net sẽ là. –

+0

Oh và tất nhiên mupdf là GNU GPL3 ("Để cấp phép thương mại, vui lòng liên hệ [email protected]").Vì vậy, bạn chắc chắn phải đảm bảo rằng bạn tuân thủ các điều khoản của giấy phép –

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