2016-09-08 3 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

이미지의 유효 회전, 이미지가 그려지는 시점의 현재 변환 행렬 (이미지 크기도 수정 됨) 및 페이지 회전을 결정하는 두 가지 관련 요소가 있습니다.

... 

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이 포함되어 있으며 그 동안에 버그가 수정되었을 수 있습니다.

+0

감사합니다. 그것은 효과가 있었다. 시간 내 주셔서 감사합니다 –

관련 문제