update pdf text layer builder with improvements from pdfjs 1.0.1040

This commit is contained in:
Brian Gough 2015-03-31 14:55:05 +01:00
parent b893446b9c
commit 52b041c0bf
2 changed files with 24 additions and 11 deletions

View file

@ -142,13 +142,17 @@ define [
if width > 0 if width > 0
textLayerFrag.appendChild textDiv textLayerFrag.appendChild textDiv
if textDiv.dataset.canvasWidth?
# Dataset values come of type string. # Dataset values come of type string.
textScale = textDiv.dataset.canvasWidth / width textScale = textDiv.dataset.canvasWidth / width;
transform = 'scaleX(' + textScale + ')'
else
transform = ''
rotation = textDiv.dataset.angle rotation = textDiv.dataset.angle
transform = 'scale(' + textScale + ', 1)' if rotation
transform = 'rotate(' + rotation + 'deg) ' + transform if rotation transform = 'rotate(' + rotation + 'deg) ' + transform
if transform
CustomStyle.setProp 'transform', textDiv, transform CustomStyle.setProp 'transform', textDiv, transform
CustomStyle.setProp 'transformOrigin', textDiv, '0% 0%'
i++ i++
@textLayerDiv.appendChild textLayerFrag @textLayerDiv.appendChild textLayerFrag
return return
@ -195,6 +199,10 @@ define [
# Storing into dataset will convert number into string. # Storing into dataset will convert number into string.
textDiv.dataset.angle = angle * (180 / Math.PI) if angle isnt 0 textDiv.dataset.angle = angle * (180 / Math.PI) if angle isnt 0
# We don't bother scaling single-char text divs, because it has very
# little effect on text highlighting. This makes scrolling on docs with
# lots of such divs a lot faster.
if textDiv.textContent.length > 1
if style.vertical if style.vertical
textDiv.dataset.canvasWidth = geom.height * @viewport.scale textDiv.dataset.canvasWidth = geom.height * @viewport.scale
else else

View file

@ -19,6 +19,11 @@
white-space: pre; white-space: pre;
cursor: text; cursor: text;
pointer-events: auto; pointer-events: auto;
-webkit-transform-origin: 0% 0%;
-moz-transform-origin: 0% 0%;
-o-transform-origin: 0% 0%;
-ms-transform-origin: 0% 0%;
transform-origin: 0% 0%;
} }
.plv-text-layer > div::selection { .plv-text-layer > div::selection {
background:rgba(0,0,255,0.3); background:rgba(0,0,255,0.3);