2008-09-16 69 views

Trả lời

6

.NET Framework không chứa khả năng sửa đổi/tạo các file PDF. Bạn cần một thành phần bên thứ 3 để thực hiện những gì bạn đang tìm kiếm.

22

Tôi không nghĩ bạn có thể. Thành phần nguồn mở PDFSharp có chức năng đó và một số đẹp source code sample on file combining

+5

mẫu trên trang web mới của họ: http://www.pdfsharp.net/wiki/PDFsharpSamples.ashx –

+0

Tôi biết điều này là cũ, nhưng tôi theo dõi câu trả lời này và phát hiện ra rằng PDFSharp vẫn chưa thực hiện hỗ trợ cho các phiên bản PDF hiện đại hơn ... bạn có thể cần phải nhảy qua các vòng để làm cho nó hoạt động với tất cả các tệp PDF. Hãy xem điều này trước khi nhảy vào: http://forum.pdfsharp.net/viewtopic.php?f=2&t=693 –

5

Như những người khác đã nói, không có gì được tích hợp để thực hiện tác vụ đó. Sử dụng iTextSharp với số example code này.

+3

Tôi nghĩ ai đó nên luôn ghi chú rằng iTextSharp sử dụng giấy phép AGPL, yêu cầu bạn giải phóng mã nguồn của mình với việc sử dụng tài liệu iTextSharps một cách thích hợp. Tuy nhiên, họ có giấy phép thương mại. Hãy cẩn thận cách bạn sử dụng nó! – Encryption

0

Mặc dù đã được nói, bạn không thể thao tác các tệp PDF với các thư viện dựng sẵn của Khuôn khổ .NET. Tuy nhiên, tôi có thể đề xuất iTextSharp, là cổng .NET của Java iText. Tôi đã chơi xung quanh với nó, và thấy nó là một công cụ rất dễ sử dụng.

3

Tôi không nghĩ rằng .NET Framework chứa ví dụ như thư viện. Tôi đã sử dụng iTextsharp với C# để kết hợp các tệp pdf. Tôi nghĩ iTextsharp là cách dễ nhất để làm điều này. Đây là mã tôi đã sử dụng.

string[] lstFiles=new string[3]; 
    lstFiles[0][email protected]"C:/pdf/1.pdf"; 
    lstFiles[1][email protected]"C:/pdf/2.pdf"; 
    lstFiles[2][email protected]"C:/pdf/3.pdf"; 

    PdfReader reader = null; 
    Document sourceDocument = null; 
    PdfCopy pdfCopyProvider = null; 
    PdfImportedPage importedPage; 
    string [email protected]"C:/pdf/new.pdf"; 


    sourceDocument = new Document(); 
    pdfCopyProvider = new PdfCopy(sourceDocument, new System.IO.FileStream(outputPdfPath, System.IO.FileMode.Create)); 

    //Open the output file 
    sourceDocument.Open(); 

    try 
    { 
     //Loop through the files list 
     for (int f = 0; f < lstFiles.Length-1; f++) 
     { 
      int pages =get_pageCcount(lstFiles[f]); 

      reader = new PdfReader(lstFiles[f]); 
      //Add pages of current file 
      for (int i = 1; i <= pages; i++) 
      { 
       importedPage = pdfCopyProvider.GetImportedPage(reader, i); 
       pdfCopyProvider.AddPage(importedPage); 
      } 

      reader.Close(); 
     } 
     //At the end save the output file 
     sourceDocument.Close(); 
    } 
    catch (Exception ex) 
    { 
     throw ex; 
    } 


private int get_pageCcount(string file) 
{ 
    using (StreamReader sr = new StreamReader(File.OpenRead(file))) 
    { 
     Regex regex = new Regex(@"/Type\s*/Page[^s]"); 
     MatchCollection matches = regex.Matches(sr.ReadToEnd()); 

     return matches.Count; 
    } 
} 
+0

Điều này có đúng hay hữu ích, vui lòng chấp nhận câu trả lời –

+0

Cảm ơn bạn! Phút cuối cùng tiết kiệm khi tôi cần nó. nó cũng nhanh! –

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