我从mozilla下载了pdf.js库。它非常适合打开我的pdf文件并查看它们。问题是,当我点击旋转页面时,它会旋转所有页面,而不仅仅是所选页面。我试着用谷歌搜索并阅读了pdf.js的手册,但是在pdf.js中找不到旋转SINGLE pdf页面的相关资源请帮助
答案 0 :(得分:0)
取决于您可能希望花多少工作以及您希望实现的目的:
将transform: rotate(90deg)
或transform: rotate(-90deg)
应用于指定页面的容器元素 - 这可以通过使用内置开发人员工具在当前主流浏览器中完成。
我使用了Mozilla Firefox附带的内置查看器 - 页面放在div
个容器中,这些容器由属性data-page-number
标识。
function rotateSinglePage(pageNum, degree)
{
var viewerMain = document.getElementById("viewer");
var pageContainer = viewerMain.querySelector("div[data-page-number='" + pageNum + "']");
pageContainer.style.transform = "rotate(" + degree + "deg)";
}
您可以通过浏览器的开发者工具调用此功能,也可以构建自己的界面(按钮/热键)。
如果您希望能够多次旋转,可以使用以下方式访问当前轮播:
function getCurrentRotation(pageNum)
{
var viewerMain = document.getElementById("viewer");
var pageContainer = viewerMain.querySelector("div[data-page-number='" + pageNum + "']");
var rotationStyle = pageContainer.style.transform;
//try to strip everything but the number
//we assume number to be integer (without fraction)
var rotation = rotationStyle.replace(/rotate\(([-]?[0-9]{0,3})deg\)/,"$1");
var rotationDegree = Number.parseInt(rotation);
//if parseInt fails, it returns NaN - this happens on empty string as well
//by default an unrotated page (0 degree) has no transform style, so
//we return 0 degree in this case
if (Number.isNaN(rotationDegree)) { rotationDegree = 0; }
return rotationDegree;
}
由于当前页面存储在document.getElementById("pageNumber").value
中,您可以构建界面以旋转当前页面。
答案 1 :(得分:0)
您可以尝试使用此脚本,该脚本允许您逐步旋转所有页面并在必要时重置所有页面。
代码在每个页面DOM元素上添加一个数据属性rotation
。
const rotatePages = (deg: number, force: boolean = false) => {
const pageContainer = document.getElementById('viewer')
if (pageContainer) {
const pagesDOM: ReadonlyArray<HTMLDivElement> = Array.from(
pageContainer.querySelectorAll(`div[data-page-number]`),
)
pagesDOM.forEach(pageDOM => {
const datasetRotation = pageDOM.dataset.rotation
let targetRotation = deg
if (datasetRotation) {
targetRotation = force ? deg : deg + Number(datasetRotation)
}
pageDOM.dataset.rotation = String(targetRotation)
pageDOM.style.transform = `rotate(${targetRotation}deg)`
})
}
用作:
// incremental rotation
rotatePages(90) // rotate all pages of 90 deg
rotatePages(90) // rotate all pages of +90 deg (now they are all rotated of 180 deg)
// reset rotation for all pages to 0 degree
rotatePages(0, true)
如果您有兴趣获取页面的当前旋转度,而不是使用
.replace(/rotate\(([-]?[0-9]{0,3})deg\)/,"$1");
您可以简单地在dom中查询特定的数据属性rotation
。