2008-09-16 2 views

答えて

4

私の知る限りのC#を使用すると、サードパーティのコンポーネントまたはCOTSライブラリを使用せずに行うことはできません求めているので、どのようなPDFを扱うためのビルトインサポートしていません。

は図書館についての可能性の無数があります。ほんの数を指すように:

http://csharp-source.net/open-source/pdf-libraries

http://www.codeproject.com/KB/graphics/giospdfnetlibrary.aspx

http://www.pdftron.com/net/index.html

6

.NET Frameworkは、PDFを作成/変更する機能が含まれていません。あなたは、あなたが探しているものを達成するためにサードパーティのコンポーネントが必要です。

22

私はあなたができるとは思いません。 OpensourceコンポーネントPDFSharpにはその機能があり、素敵です。source code sample on file combining

+5

サンプル:http://www.pdfsharp.net/wiki/PDFsharpSamples.ashx –

+0

私はこれが古いですけど、私はこの答えに続き、PDFSharpがまだのサポートを実装していないことを発見PDFのより現代的なバージョン...すべてのPDFで動作するようにするためには、フープを飛ばしなければならない場合があります。ジャンプする前にこれを見てください:http://forum.pdfsharp.net/viewtopic.php?f=2&t=693 –

5

他の人からも言われているように、このタスクを行うためのものはありません。このexample codeiTextSharpを使用してください。

+3

誰かがiTextSharpがAGPLライセンスを使用していることに注意する必要があります。 iTextSharpsの使用方法を適切に文書化しています。しかし、彼らは商用ライセンスを利用することができます。どのように使用するか注意してください! – Encryption

0

既に言われていますが、.NET Frameworkのビルトインライブラリを使用してPDFを操作することはできません。しかし私は、JavaのiTextのの.NETポートでiTextSharpを、お勧めすることができます。私はそれを使って遊んだことがあり、使いやすいツールであることがわかりました。

3

を移動するための方法である私は、.NET Frameworkは、ライブラリのような含まれていないと思います。私はiTextsharpをC#と組み合わせてPDFファイルを結合しました。私はiTextsharpがこれを行う最も簡単な方法だと思います。ここに私が使用したコードがあります。彼らの新しいサイト上

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

これは間違いありませんか?答えは –

+0

ありがとうございます!最後の分は私がそれを必要としたときに保存します。それは速いです! –

関連する問題