2009-10-08 48 views
13

Tôi hiểu iTextSharp có thể được sử dụng để chuyển đổi tài liệu sang pdf.iTextSharp - Chuyển từ doc/docx sang pdf

Nhưng trước tiên chúng ta phải tạo một tài liệu từ đầu bằng cách sử dụng iTextSharp.text.Document và sau đó thêm các phần tử vào tài liệu này.

Nếu tôi có tệp tài liệu hiện có, bạn có thể chuyển tài liệu này sang pdf bằng iTextSharp.

Ngoài ra, tôi muốn sử dụng iTextSharp hoặc bất kỳ công cụ tương tự có thể thực hiện sau đây trên một tập tin doc:

  1. thao tác của doc file/docx/văn bản (như thay thế một số placeholders với các giá trị DB) cũng như
  2. chuyển đổi chúng thành .pdf

Bất kỳ ai có ý tưởng về điều này, vui lòng chia sẻ.

Cảm ơn bạn!

+0

Để linh hoạt tối đa, bạn có thể xem xét các giải pháp "tốt nhất của giống" riêng biệt cho từng bước thao tác và chuyển đổi. Đó là vẻ đẹp của các định dạng tệp chuẩn (doc, docx). – JasonPlutext

Trả lời

13

Thành phần Aspose.Words có thể thực hiện điều này một cách đáng tin cậy (tôi không liên kết hoặc bất kỳ thứ gì).

iTextSharp không có tính năng bắt buộc để tải và xử lý các định dạng tệp MS Word.

+1

Cảm ơn tất cả vì sự giúp đỡ của bạn. Đối với scenerio hiện tại của tôi, tôi sẽ sử dụng thư viện Aspose để thực hiện thao tác doc/docx và cuối cùng chuyển đổi tài liệu kết quả thành pdf sau khi phối thư. Tôi đã tải xuống bản dùng thử miễn phí 30 ngày và có vẻ như để giải quyết tất cả các vấn đề của tôi. Tôi sẽ đề nghị bất cứ ai sẽ sử dụng Aspose để có phiên bản dùng thử đầu tiên và sau đó đưa ra quyết định. – iniki

+1

Aspose thực hiện chuyển đổi OpenXml-to-PDF đẹp trong hầu hết các trường hợp, nhưng lưu ý rằng nó hiện có hỗ trợ kém hoặc không tồn tại đối với một số tính năng Open XML, chẳng hạn như kiểm soát nội dung và nút AltChunk. –

+0

Một giải pháp thay thế gần đây là docx thương mại của tôi/Plutext sang công cụ chuyển đổi PDF; thử tại http://converter-eval.plutext.com/ – JasonPlutext

0

Đối với thao tác docx, bạn nên sử dụng phương pháp Open XML nguyên gốc. Tải xuống Open XML SDK 2 từ Microsoft.

Và sau đó bạn có thể chuyển đổi tệp docx sang pdf bằng thư viện trả phí này: http://www.subsystems.com/dpw.htm. Nó thực sự tuyệt vời.

+1

nó không phải là tuyệt vời. Đã thử nó, nó thay đổi phông chữ ở khắp mọi nơi và loại bỏ định dạng trang. – Jerome

+0

Đó là * không * tuyệt vời, @Franklin. Tôi đồng ý. Nhưng khi bạn vượt qua đường cong học tập, bạn có thể kiểm soát định dạng, phông chữ, v.v. Đường cong học tập đó hút, mặc dù – Rap

1

Nếu bạn không quan tâm về việc định dạng sẽ trung thành với những gì Word sẽ hiển thị, có ấn tượng docx2tex chuyển đổi các tệp docx Word 2007 sang tài liệu Latex. Khi ở Latex, bạn có nhiều quyền lực để lập trình lại tài liệu và tạo PDF từ đó.

Tôi nói thêm về tiện ích trong câu trả lời tại tex.stackexchange.

3

Aspose.Words thực sự là một giải pháp tốt, nhưng nó không cung cấp độ trung thực hoàn hảo. Tại thời điểm viết nó có vấn đề với các ngôn ngữ phi La Mã, định dạng phức tạp như các yếu tố nổi và một số vấn đề khác.

Bạn có thể muốn xem PDF Conversion Web Service này có thể được sử dụng từ bất kỳ môi trường có khả năng dịch vụ web nào bao gồm Java và .NET.

Lưu ý rằng tôi đã làm việc trong dự án này để các tuyên bố từ chối trách nhiệm thông thường được áp dụng.

+0

Dịch vụ Web chuyển đổi PDF chỉ yêu cầu Microsoft Word chuyển đổi tài liệu sang PDF. Đó chỉ là Word Automation mọi người có thể làm điều đó. – romeok

+4

Nó thực sự khá nhiều hơn một chút, nhưng biết bạn là ai bạn đang thiên vị như tôi :-) Làm việc tốt trên Aspose.Words, sản phẩm tuyệt vời, tôi khuyên bạn nên tất cả thời gian. –

+0

Giá cho dịch vụ chuyển đổi của bạn là $ 1500 cho 1 máy chủ. @iniki có thể tốt hơn với DynamicPDF Converter hoặc Aspose với cùng một mức giá hoặc ít hơn, và tất cả đều chạy trong mã được quản lý và không yêu cầu Word phải được cài đặt hoặc quản lý dịch vụ web. Mặc dù vậy, theo quan điểm của bạn, không có gì sẽ cung cấp độ trung thực chuyển đổi mà interop tự động hóa từ có thể. – MikeTeeVee

3

Bạn có thể sử dụng phương pháp hiện có của Microsoft.Office

private Microsoft.Office.Interop.Word.ApplicationClass MSdoc; 

    //Use for the parameter whose type are not known or say Missing 
    object Unknown = Type.Missing; 

    private void word2PDF(object Source, object Target) 
    { //Creating the instance of Word Application 
     if (MSdoc == null)MSdoc = new Microsoft.Office.Interop.Word.ApplicationClass(); 

     try 
     { 
      MSdoc.Visible = false; 
      MSdoc.Documents.Open(ref Source, ref Unknown, 
       ref Unknown, ref Unknown, ref Unknown, 
       ref Unknown, ref Unknown, ref Unknown, 
       ref Unknown, ref Unknown, ref Unknown, 
       ref Unknown, ref Unknown, ref Unknown, ref Unknown, ref Unknown); 
      MSdoc.Application.Visible = false; 
       MSdoc.WindowState = Microsoft.Office.Interop.Word.WdWindowState.wdWindowStateMinimize; 

      object format = Microsoft.Office.Interop.Word.WdSaveFormat.wdFormatPDF; 

      MSdoc.ActiveDocument.SaveAs(ref Target, ref format, 
        ref Unknown, ref Unknown, ref Unknown, 
        ref Unknown, ref Unknown, ref Unknown, 
        ref Unknown, ref Unknown, ref Unknown, 
        ref Unknown, ref Unknown, ref Unknown, 
        ref Unknown, ref Unknown); 
      } 
      catch (Exception e) 
      { 
      MessageBox.Show(e.Message); 
      } 
     finally 
      { 
      if (MSdoc != null) 
      { 
       MSdoc.Documents.Close(ref Unknown, ref Unknown, ref Unknown); 
       //WordDoc.Application.Quit(ref Unknown, ref Unknown, ref Unknown); 
      } 
      // for closing the application 
      WordDoc.Quit(ref Unknown, ref Unknown, ref Unknown); 
     } 
    } 
+0

Chắc chắn, chỉ cần lưu ý rằng khi làm việc trong Máy chủ môi trường, điều này không phải là recommanded. Xem http://support.microsoft.com/kb/257757 – Daniel

+0

Nó có vẻ tốt vì nó là một lọ văn phòng ms nhưng tôi đã không nhận được làm thế nào để sử dụng điều này trong program.I của tôi không thể nhận được jar văn phòng microsoft. Bạn có thể giúp tôi không. –

+0

bạn sẽ phải sử dụng một số loại thư viện tương tác COM như Jacob để có thể xử lý các đối tượng MS-Office đó trực tiếp từ mã Java (ít nhất là trường hợp này cho JDK 1.5) - thậm chí sau đó mã sẽ trông xấu hơn một chút. đánh giá từ thư viện "ref" và Interop, đoạn mã trên được viết bằng C# –

0

Tôi có cùng một vấn đề.
Sau vài ngày cố gắng tìm một giải pháp, có vẻ như Docx4J, một công cụ dựa trên Java hoặc máy in PDF như PDFCreator, có thể nằm trong số các giải pháp miễn phí.
Chắc chắn, chỉ một công cụ thương mại có thể thực hiện tác vụ được yêu cầu một cách hiệu quả.
Ở phía Microsoft, bạn có thể sử dụng phía máy chủ được bật Sharepoint Word Automation Services, (kiểm tra ngày 7 tháng 6 năm 2016) hoặc interop trong máy tính cục bộ của bạn.
Chuyển đổi từng phần được đề xuất (DOC hoặc DOC sang một số ngôn ngữ trung gian và sau đó sang PDF) có vẻ như, những gì người dùng đã nói trên stackoverflow hoặc các diễn đàn khác, không thể, vì kết quả không phải là điều mong đợi.

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