2014-10-30 4 views
1

OpenXML을 사용하여 처리중인 .docx 문서가 있습니다. 내가하는 일 중 하나는 원본 문서에서 이미지의 크기를 찾아서 으로 정확하게 새 이미지를 만들어 교체하고 이미지를 만드는 것입니다. 그러나 어떤 경우에는 그렇지 않습니다. 그 단어가 내 DPI 설정을 무시하기를 원하며 그 이유를 파악할 수없는 것 같습니다.이미지에서 DPI 설정이 무시되었습니다.

예는 XML을보고, 내가 가진 이미지를 가지고 :

<wp:extent cx="4572000" cy="2971800" /> 

변환 EMU의 내 원하는 300 DPI와 화소하는 것은,이 나에게 975 X 1500 픽셀의 크기 (즉 2971800 * 300/914400 = 9754572000 * 300/914400 = 1500의) 제공해야 . 그래서 나는 이미지를 생성하고 그것을 원본 대신에 밀어 넣는다. 문서의 이미지는 3.25" x 5"이어야합니다. 그러나 결과 문서를로드하고 단어의 "크기 및 위치"를 보면 이미지의 원래 크기가 10.16" x 15.62"이고 두 차원 모두에서 32%으로 축소되어 있다고 주장합니다. 문서의 패키지 이미지는 실제로 975 x 1500입니다.하지만 Word에서 처리하는 것처럼 보입니다. 96 dpi (975/10.16 = 96)입니다. 그래서 내 질문은, 왜이 일을하고 어떻게 멈추게합니까? 나는 명시 적으로 DPI를 BlipFill에 설정했지만 무시되는 것으로 보입니다. 여기

이 모든 일이 XML 문서에서 어떻게 표시되는지를 보여줍니다 :

<w:drawing xmlns:w="http://schemas.openxmlformats.org/wordprocessingml/2006/main"> 
    <wp:inline distT="0" distB="0" distL="0" distR="0" wp14:anchorId="1D5F6FCE" xmlns:wp14="http://schemas.microsoft.com/office/word/2010/wordprocessingDrawing" xmlns:wp="http://schemas.openxmlformats.org/drawingml/2006/wordprocessingDrawing"> 
    <wp:extent cx="4572000" cy="2971800" /> 
    <wp:effectExtent l="0" t="0" r="0" b="0" /> 
    <wp:docPr id="2" name="Picture 2" title="work" /> 
    <wp:cNvGraphicFramePr> 
     <a:graphicFrameLocks xmlns:a="http://schemas.openxmlformats.org/drawingml/2006/main" noChangeAspect="1" /> 
    </wp:cNvGraphicFramePr> 
    <a:graphic xmlns:a="http://schemas.openxmlformats.org/drawingml/2006/main"> 
     <a:graphicData uri="http://schemas.openxmlformats.org/drawingml/2006/picture"> 
     <pic:pic xmlns:pic="http://schemas.openxmlformats.org/drawingml/2006/picture"> 
      <pic:nvPicPr> 
      <pic:cNvPr id="0" name="Picture 2" /> 
      <pic:cNvPicPr> 
       <a:picLocks noChangeAspect="1" noChangeArrowheads="1" /> 
      </pic:cNvPicPr> 
      </pic:nvPicPr> 
      <pic:blipFill dpi="300"> 
      <a:blip r:embed="rId13" xmlns:r="http://schemas.openxmlformats.org/officeDocument/2006/relationships"> 
       <a:extLst> 
       <a:ext uri="{28A0092B-C50C-407E-A947-70E740481C1C}"> 
        <a14:useLocalDpi xmlns:a14="http://schemas.microsoft.com/office/drawing/2010/main" val="0" /> 
       </a:ext> 
       </a:extLst> 
      </a:blip> 
      <a:srcRect /> 
      <a:stretch> 
       <a:fillRect /> 
      </a:stretch> 
      </pic:blipFill> 
      <pic:spPr bwMode="auto"> 
      <a:xfrm> 
       <a:off x="0" y="0" /> 
       <a:ext cx="4572000" cy="2971800" /> 
      </a:xfrm> 
      <a:prstGeom prst="rect"> 
       <a:avLst /> 
      </a:prstGeom> 
      <a:noFill /> 
      </pic:spPr> 
     </pic:pic> 
     </a:graphicData> 
    </a:graphic> 
    </wp:inline> 
</w:drawing> 

답변

2

원하는 원래 크기 값을 생성하려면, 난 당신에 대한 이미지 바이너리의 DPI 값을 설정해야합니다 생각 300 dpi.

dpi 특성은 인쇄 프로세스 중에 만 또는 이미지 이진에 DPI 값이없는 경우 Word에서 사용되는 것으로 보입니다. 어쨌든 문서의 이미지 표시 크기를 계산하는 데 사용되지 않습니다. Word에서 이미지에 저장된 dpi 값을 선호하는 경우가 있습니다. 그것은 이미지 뷰어 또는 다른 수단을 사용하여 확인할 가치가 있습니다. 일반적으로 이미지 dpi 기본값은 72dpi입니다. 96은 Windows에서 시스템 '화면'dpi로, 특히 Windows 응용 프로그램에서 생성 된 경우 이미지 이진 파일에 포함 된 dpi 인 것으로 의심됩니다.

문서에서 올바른 크기로 이미지를 표시하는 한 원하는 cx 및 cy 값입니다. <wp:extent/>에 원하는 크기로 설정하면 화면 표시를위한 트릭을 수행해야합니다. 그러나 올바른 크기로 인쇄하기를 원한다면 pic : spPr/a : xfrm/a : ext의 내용을 변경해야합니다.

원래 크기가 인 Word 대화 상자에보고 된이 예상 값이 아니라는 것을 알 수 있습니다. 실제 이미지 dpi 값을 이미지에 설정하면 내가 가진 동작을 볼 수 있습니다.

+0

조금만 더 조사를 해본 결과 내가 포함하고있는 이미지에'96'dpi 세트가 있다는 사실이 밝혀졌습니다. 이미지를 새로운 비트 맵에 복사하고 dpi를 '300'으로 설정하여 문제를 해결했습니다. 'dpi' 속성이 실제로하는 일에 대한 문서는 꽤 좋지 않습니다. 5,000 쪽 이상의 페이지 스펙을 모두 검색 했음에도 불구하고'useLocalDPI' 속성에서 아무 것도 찾을 수 없었습니다. –

관련 문제