이미지의 유효 회전, 이미지가 그려지는 시점의 현재 변환 행렬 (이미지 크기도 수정 됨) 및 페이지 회전을 결정하는 두 가지 관련 요소가 있습니다.
이
...
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도
I가 270 ° 시계 방향으로 회전하는 코드에서 이미지를 얻을 회전 똑바로 있으십시오.
실제로 180도 회전 된 이미지를 얻으려면 사용하는 iTextSharp의 버전을 확인해야합니다. 참조하는 웹 사이트의 아카이브에는 상당히 오래된 버전 인 5.3.5.0이 포함되어 있으며 그 동안에 버그가 수정되었을 수 있습니다.
출처
2016-09-08 13:37:12
mkl
@BradLarson * 이미지는 민감한 성격을 띠고 불필요합니다. * - "민감한 성격"** 예 **, "불필요한 ** ** 없음 **. 샘플이 없으면 페이지 회전을 언급하지 않았을뿐 아니라 OP를 도왔던 변형 행렬을 나타낼 수도 있습니다. (그러나 pdf의 성질로 인해 나는 대답에 스크린 샷을 추가하는 것을 참지 못했다.) – mkl
@mkl - 내가 말할 수있는 것은 사람들이 깃발을 통해 포함에 항의하고 있었고 비판적으로 보지 않았다는 것이다. –