画像の有効な回転、画像が描画されたときの現在の変換マトリックス(画像の寸法も固定されています)、およびページの回転を決定する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が含まれており、その間にバグが修正されている可能性があります。
出典
2016-09-08 13:37:12
mkl
@BradLarson *画像は敏感な性質のもので不要* * "敏感な性質" **はい**、 "不要" ** **はありません。サンプルがなければ、私はページの回転を言及していないかもしれませんが、単にOPを助けなかった変換マトリックスだけでした。 (しかし、pdfの性質上、私は実際に答えにスクリーンショットを追加することを控えていた)。 – mkl
@mkl - 私は、人々がフラグを介してその抱擁に抗議していたことは重要ではないと言える。 –