Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
AresnLiang
VueJS_546788
提交
40f67d1e
V
VueJS_546788
项目概览
AresnLiang
/
VueJS_546788
与 Fork 源项目一致
Fork自
inscode / VueJS
通知
1
Star
0
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
DevOps
流水线
流水线任务
计划
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
V
VueJS_546788
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
DevOps
DevOps
流水线
流水线任务
计划
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
流水线任务
提交
Issue看板
提交
40f67d1e
编写于
3月 05, 2024
作者:
View Design
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
Tue Mar 5 15:51:00 CST 2024 inscode
上级
79c5bd79
变更
3
隐藏空白更改
内联
并排
Showing
3 changed file
with
115 addition
and
44 deletion
+115
-44
package.json
package.json
+1
-0
src/App.vue
src/App.vue
+17
-44
src/components/PdfPreview.vue
src/components/PdfPreview.vue
+97
-0
未找到文件。
package.json
浏览文件 @
40f67d1e
...
...
@@ -8,6 +8,7 @@
},
"dependencies"
:
{
"
guess
"
:
"
^1.0.2
"
,
"
pdfjs-dist
"
:
"
^4.0.379
"
,
"
vue
"
:
"
^3.2.37
"
},
"devDependencies"
:
{
...
...
src/App.vue
浏览文件 @
40f67d1e
<
script
setup
>
import
HelloWorld
from
'
./components/HelloWorld.vue
'
import
TheWelcome
from
'
./components/TheWelcome.vue
'
</
script
>
<
template
>
<header>
<img
alt=
"Vue logo"
class=
"logo"
src=
"./assets/logo.svg"
width=
"125"
height=
"125"
/>
<div
class=
"wrapper"
>
<HelloWorld
msg=
"You did it!"
/>
</div>
</header>
<main>
<TheWelcome
/>
</main>
<div>
123
<PdfPreview
:url=
"pdfUrl"
/>
</div>
</
template
>
<
style
scoped
>
header
{
line-height
:
1.5
;
}
.logo
{
display
:
block
;
margin
:
0
auto
2rem
;
}
@media
(
min-width
:
1024px
)
{
header
{
display
:
flex
;
place-items
:
center
;
padding-right
:
calc
(
var
(
--section-gap
)
/
2
);
}
.logo
{
margin
:
0
2rem
0
0
;
}
header
.wrapper
{
display
:
flex
;
place-items
:
flex-start
;
flex-wrap
:
wrap
;
}
}
</
style
>
<
script
>
import
PdfPreview
from
'
./components/PdfPreview.vue
'
;
export
default
{
components
:
{
PdfPreview
,
},
data
()
{
return
{
pdfUrl
:
'
https://file.iviewui.com/inscode/demo1.pdf
'
,
};
},
};
</
script
>
src/components/PdfPreview.vue
0 → 100644
浏览文件 @
40f67d1e
<
template
>
<div
class=
"pdf-preview"
>
<canvas
ref=
"pdfCanvas"
></canvas>
</div>
</
template
>
<
script
>
import
pdfjsLib
from
'
pdfjs-dist
'
;
import
{
getDocument
}
from
'
pdfjs-dist/build/pdf
'
;
export
default
{
props
:
{
url
:
{
type
:
String
,
required
:
true
,
},
},
data
()
{
return
{
loading
:
false
,
page
:
1
,
scale
:
1
,
canvas
:
null
,
ctx
:
null
,
};
},
mounted
()
{
this
.
canvas
=
this
.
$refs
.
pdfCanvas
;
this
.
ctx
=
this
.
canvas
.
getContext
(
'
2d
'
);
this
.
loadPdf
();
},
methods
:
{
async
loadPdf
()
{
this
.
loading
=
true
;
const
doc
=
await
getDocument
(
this
.
url
).
promise
;
this
.
pdfDoc
=
doc
;
this
.
numPages
=
doc
.
numPages
;
this
.
renderPage
(
1
);
},
async
renderPage
(
pageNumber
)
{
if
(
!
this
.
pdfDoc
)
{
return
;
}
this
.
loading
=
true
;
const
page
=
await
this
.
pdfDoc
.
getPage
(
pageNumber
);
const
viewport
=
page
.
getViewport
({
scale
:
this
.
scale
});
this
.
canvas
.
width
=
viewport
.
width
;
this
.
canvas
.
height
=
viewport
.
height
;
const
renderContext
=
{
canvasContext
:
this
.
ctx
,
viewport
,
};
page
.
render
(
renderContext
);
this
.
loading
=
false
;
},
nextPage
()
{
if
(
this
.
page
<
this
.
numPages
)
{
this
.
page
++
;
this
.
renderPage
(
this
.
page
);
}
},
prevPage
()
{
if
(
this
.
page
>
1
)
{
this
.
page
--
;
this
.
renderPage
(
this
.
page
);
}
},
zoomIn
()
{
this
.
scale
+=
0.2
;
this
.
renderPage
(
this
.
page
);
},
zoomOut
()
{
this
.
scale
-=
0.2
;
this
.
renderPage
(
this
.
page
);
},
},
};
</
script
>
<
style
scoped
>
.pdf-preview
canvas
{
display
:
block
;
}
</
style
>
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录