2016-09-08 14 views
-1

Im pdfを編集する。クライアントは、pdf内のイメージのサイズを変更して回転させたいと考えています。私がしたので、何itextsharpを使ってpdfイメージの向きを取得する方法

は、画像を操作するために、再びそれを挿入できるようにするには、PDF内の画像を抽出することであるPDF私は、コードを持ってコードをここに

される(古いものを置き換えます)画像

https://psycodedeveloper.wordpress.com/2013/01/10/how-to-extract-images-from-pdf-files-using-c-and-itextsharp/

を抽出するが、私は、画像に画像を抽出する際に180度

私も画像を抽出するフリーSpire.PDFを使用するが、spire.pdfの抽出された画像を回転させて、I 90度回転した。どのように私はPDFの画像の方向を得ることができます。私は元の方向に画像を作ることができるように。ありがとうございます

+0

@BradLarson *画像は敏感な性質のもので不要* * "敏感な性質" **はい**、 "不要" ** **はありません。サンプルがなければ、私はページの回転を言及していないかもしれませんが、単にOPを助けなかった変換マトリックスだけでした。 (しかし、pdfの性質上、私は実際に答えにスクリーンショットを追加することを控えていた)。 – mkl

+0

@mkl - 私は、人々がフラグを介してその抱擁に抗議していたことは重要ではないと言える。 –

答えて

2

画像の有効な回転、画像が描画されたときの現在の変換マトリックス(画像の寸法も固定されています)、およびページの回転を決定する2つの関連要因があります。

あなたが参照してくださいコードで、以下のようにあなたがこれらの値を決定することができます。

... 

public static Dictionary<string, System.Drawing.Image> ExtractImages(string filename) 
{ 
    var images = new Dictionary<string, System.Drawing.Image>(); 

    using (var reader = new PdfReader(filename)) 
    { 
     var parser = new PdfReaderContentParser(reader); 
     ImageRenderListener listener = null; 

     for (var i = 1; i <= reader.NumberOfPages; i++) 
     { 
      // v-- Determine clockwise rotation of page 
      Console.WriteLine("Page {1} is rotated by {0}°.\n", reader.GetPageRotation(i), i); 
      // ^-- Determine clockwise rotation of page 

      parser.ProcessContent(i, (listener = new ImageRenderListener())); 
      var index = 1; 
      [...] 
     } 
     return images; 
    } 
} 

... 

public void RenderImage(ImageRenderInfo renderInfo) 
{ 
    // v-- Determine transformation matrix of image 
    Matrix ctm = renderInfo.GetImageCTM(); 
    Console.WriteLine("Found image with transformation matrix:\n{0}\n", ctm); 
    // ^-- Determine transformation matrix of image 

    PdfImageObject image = renderInfo.GetImage(); 
    PdfName filter = (PdfName)image.Get(PdfName.FILTER); 
    [...] 
} 

... 

あなたの場合の出力を:

Page 1 is rotated by 270°. 

Found image with transformation matrix: 
792,0001 0 0 
    0  612 0 
    0  0 1 

Found 1 images on page 1. 

このように、変換行列は明らかにのみに画像をスケーリングそれを回転させることなく適切な寸法にするが、ページ自体は270°回転して表示するように定義される。

これは私の所見に相当します。特に、あなたが言ったこととは対照的に:

しかし、私は、画像に画像を抽出し、180度

を回転させて、私は270°時計回りに回転させることが必要があり、あなたのコードから画像を取得します直立してください。

イメージが180度回転している場合は、使用しているiTextSharpのバージョンを確認する必要があります。あなたが参照しているWebサイトのアーカイブにはかなり古いバージョンの5.3.5.0が含まれており、その間にバグが修正されている可能性があります。

+0

ありがとうございます。出来た。あなたの時間をありがとう –

関連する問題