2017-12-15 19 views
0

내 인생을 더 쉽게 만들어주는 끝없는 모험에서 나는 더 어려워 지도록 뭔가를 만났습니다.Google Slides API Rounding Issues?

Google Apps Script를 사용하여 Google 슬라이드에서 객체를 만들거나 편집하면 왜 가까운 부동 소수점 버전이 생성되는 지 경험이있는 사람이 있습니까?

예, 객체 생성 :

SlidesApp 
.getActivePresentation() 
.getSlides()[0] 
.insertShape(SlidesApp.ShapeType.RECTANGLE, 20, 20, 200, 200); 

을하지만 결과 사각형은 이러한 속성이 있습니다

Top: 20 
Left: 20 
Width: 200.00787401574803 
Height: 200.00787401574803 

그리고 무엇을 그냥 나쁜 것은 위쪽과 왼쪽 1 픽셀의 테두리 완벽 화소 (pixel)를 기본으로하지 있습니다입니다 정확한 위와 왼쪽 정수 값이 주어질 것이라고 기대할 수 있습니다.

내 첫 시도가 x/y, w/h를 둥글게하여 페이지에서 적어도 깨끗한 모양을 얻었 기 때문에 동일한 문제가 발생했기 때문에이를 발견했습니다.

+0

제거되었습니다. 답변 일 것입니다 ... – Arlo

답변

1

일부 파고는 2 가지를 보여줍니다.

1) 이러한 미친 수레 (반올림 오류)는 내 개체가 슬라이드에 번지는 원인이 아닙니다. 그들은 무시 당할 수 있습니다.

2) 슬라이드의 픽셀 값은 .375의 배수가되는 것 같습니다. 따라서 오브젝트를 1 픽셀 오른쪽으로 이동하려면 실제로 .375를 오른쪽으로 이동해야합니다. 슬라이드 개체의 값을 반올림하려면 * 2.66666 값의 결과를 반올림 한 다음 결과에 .375를 곱해야합니다.

예 :

pageElements[0].setTop(Math.round((pageElements[0].getTop() * 2.6666666666666))*.375); 

그래서 지금은 만들 사이드 바 도구에서 객체의 픽셀 완벽한 편집의 원래 목표는 지금 가능하다. 아휴!

+1

'getTop'과 관련 메소드는 거리를 픽셀 단위가 아니라 점 (1/72 인치) 단위로 측정합니다. 이는 픽셀에 대한 점의 매핑이 디스플레이 장치 및 확대/축소 수준에 따라 다르기 때문에 의도적입니다. 따라서 최종 미리보기를보고있는 위치에 따라 약간의 차이가있을 수 있습니다. –

+0

@MauriceCodik - 현재 픽셀 대 픽셀 비율이 무엇인지 또는 문서의 인치 기반 치수가 무엇인지 알 수 있습니까? 나는 내 2.66을 추측하고 있는데 ... .375 값은 내가 가져올 수있는 다른 조각 데이터로 유도 할 수 있지만 Google Apps Script 설명서를 볼 때 명백한 팝업이 보이지 않습니다. – Arlo

+0

@ Arlo - 나는 그렇게 생각하지 않는다. 미안하다. –