2009-10-29 9 views
14

イメージ(jpgやpngなど)からPDFに変換したいと思っています。JPG to PDF Convertor in C#

私はImageMagickNETをチェックアウトしましたが、私のニーズにはそれほど複雑すぎます。

画像をPDFに変換するための他の.NETソリューションやコードはありますか?

+0

それを試してhttp://www.graphicsmagick.org/は改良版のOGのImageMagickの(コード単位)であるにもあります。あなたが.NETライブラリを見つけられるかどうかはわかりません。 – csl

+0

デスクトップ/サーバー/ Webアプリケーション用ですか? –

+0

これはWebアプリケーションですが、コーディングが同じになるため、アプリケーションの種類に違いはありません – Coppermill

答えて

14

iTextSharpかなりきれいでオープンソースです。また、a very good accompanying book by the authorがあります。あなたがフォーム管理のようなもっと面白いことをやり遂げるなら、私はこれをお勧めします。通常の使用のために、メーリングリストやニュースグループには、よくあることを行うためのサンプルがたくさんあります。

EDIT:@Chirag's commentのように、@Darin's answerには現在のバージョンで確実にコンパイルされるコードがあります。

使用例: iTextSharp

public static void ImagesToPdf(string[] imagepaths, string pdfpath) 
{ 
    using(var doc = new iTextSharp.text.Document()) 
    { 
     iTextSharp.text.pdf.PdfWriter.GetInstance(doc, new FileStream(pdfpath, FileMode.Create)); 
     doc.Open(); 
     foreach (var item in imagepaths) 
     { 
      iTextSharp.text.Image image = iTextSharp.text.Image.GetInstance(item); 
      doc.Add(image); 
     } 
    } 
} 

+7

iTextSharpはオープンソースですが、フリーではありません。使用しているAGPLライセンスのため、ライセンス料を支払うか、コードをオープンソースにする必要があります。 ここで自分自身を参照してください: は http://itextpdf.com/terms-of-use/index.php – asmo

+0

取得エラーエラーが「iTextSharp.text.Document」:usingステートメントで使用されるタイプは、暗黙的でなければなりませんconvertible to 'System.IDisposable' – Chirag

+0

@Chirag私は実際にその時点でコードをコンパイルしたのかどうか、別のバージョンを使用している可能性があるかどうかについては思い出せません(ここでは[類似コードの例] /stackoverflow.com/questions/28923080/itextsharp-can-not-convert-all-html-to-pdf)、それはある時点で意味があることを確認する)。しかし、一般的に使い捨てでない場合は、「使用する」を省略することは安全です。ハングアップ、[@ダーリンの答え](http://stackoverflow.com/a/1642301/11635)を見てください。皇帝の服を指してくれてありがとう:) –

26

簡単:そこ

class Program 
{ 
    static void Main(string[] args) 
    { 
     Document document = new Document(); 
     using (var stream = new FileStream("test.pdf", FileMode.Create, FileAccess.Write, FileShare.None)) 
     { 
      PdfWriter.GetInstance(document, stream); 
      document.Open(); 
      using (var imageStream = new FileStream("test.jpg", FileMode.Open, FileAccess.Read, FileShare.ReadWrite)) 
      { 
       var image = Image.GetInstance(imageStream); 
       document.Add(image); 
      } 
      document.Close(); 
     } 
    } 
} 
+0

きちんとしたことに、+1。興味の問題として(私は年齢でそれを使用するhavent)、そこには/ IDisposableのドキュメントを使用してよりクリーンな方法があります/または最終的には、おそらくimageStreamが実際のリソース所有者/所有者ではないのでしょうか? –

+0

"PdfWriterは現在のコンテキストに存在しません" – Ladessa

+1

pdfの画像の幅と高さを追加するには? –

-3

多くのdiffツール。私が使用しているのは、PrimoPDF(FREE)http://www.primopdf.com/です。ファイルを印刷して、あなたのドライブにpdf形式で印刷します。

+4

が間違っています。彼はプログラミングのやり方でそれをやりたがっている(具体的にはC#)。 – Raptor

4

私たちが幸運を祈ったのは、PDFSharpです(私たちはTIFFとText to PDFの変換を毎日何百件もの医療保険請求に使用しています)。

http://pdfsharp.com/PDFsharp/

+0

私はPDFSharpを使用していますが、pdfが歪んでいます。してください、私の質問を参照してくださいhttp://stackoverflow.com/questions/15437706/pdf-from-bitmap-wrong-size – Ladessa

0

あなただけのフリー/オープンソースソリューションを探しているかだけでなく、市販のものを検討している場合ではないことを確認。しかし、商用ソリューションを使用している場合は、EasyPDF SDKというツールキットがあります。このSDKには、イメージ(他の多くのファイルタイプを含む)をPDFに変換するためのAPIが用意されています。これは、C#をサポートしており、ここで見つけることができます:

http://www.pdfonline.com/ 

次のようにC#コードがなります

Printer oPrinter = new Printer(); 

ImagePrintJob oPrintJob = oPrinter.ImagePrintJob; 
oPrintJob.PrintOut(imageFile, pdfFile); 

を完全に透明であるために、私は私がのeasyPDF SDKのメーカーのために働くん否認しなければなりません(したがって、私のハンドル)ので、この提案はいくつかの個人的なバイアスなしではありません:)しかし、あなたが興味を持っている場合は、評価版をチェックしてください。乾杯!

2

このようなタスクはDocotic.Pdf libraryの助けを借りて簡単に行うことができます。

public static void imagesToPdf(string[] images, string pdfName) 
{ 
    using (PdfDocument pdf = new PdfDocument()) 
    { 
     for (int i = 0; i < images.Length; i++) 
     { 
      if (i > 0) 
       pdf.AddPage(); 

      PdfPage page = pdf.Pages[i]; 
      string imagePath = images[i]; 
      PdfImage pdfImage = pdf.AddImage(imagePath); 

      page.Width = pdfImage.Width; 
      page.Height = pdfImage.Height; 
      page.Canvas.DrawImage(pdfImage, 0, 0); 
     } 

     pdf.Save(pdfName); 
    } 
} 

免責事項:ここで

は、与えられた画像(JPGのみだけでなく、実際には)からPDFを作成するサンプルである私は、ライブラリのベンダーのために働きます。

2

別の作業コードは、

public void ImagesToPdf(string[] imagepaths, string pdfpath) 
{ 
     iTextSharp.text.Rectangle pageSize = null; 

     using (var srcImage = new Bitmap(imagepaths[0].ToString())) 
     { 
      pageSize = new iTextSharp.text.Rectangle(0, 0, srcImage.Width, srcImage.Height); 
     } 

     using (var ms = new MemoryStream()) 
     { 
      var document = new iTextSharp.text.Document(pageSize, 0, 0, 0, 0); 
      iTextSharp.text.pdf.PdfWriter.GetInstance(document, ms).SetFullCompression(); 
      document.Open(); 
      var image = iTextSharp.text.Image.GetInstance(imagepaths[0].ToString()); 
      document.Add(image); 
      document.Close(); 

      File.WriteAllBytes(pdfpath+"cheque.pdf", ms.ToArray()); 
     } 
}