index.vue 3.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113
  1. <script setup lang="ts">
  2. import VuePdfApp from "vue3-pdf-app";
  3. // import this to use default icons for buttons
  4. import "vue3-pdf-app/dist/icons/main.css";
  5. const pdfSource = ref("");
  6. const visible = ref(false);
  7. const showPdf = (url) => {
  8. localStorage.setItem("pdfjs.history", "");
  9. visible.value = true;
  10. nextTick(() => {
  11. pdfSource.value = url;
  12. });
  13. };
  14. const onDrawerClose = () => {
  15. pdfSource.value = "";
  16. // console.log(pdfSource.value, "aaa");
  17. // localStorage.setItem("pdfjs.history", "");
  18. };
  19. defineExpose({
  20. showPdf,
  21. });
  22. // 工具栏配置项
  23. const config = ref({
  24. // 右侧其他区工具
  25. sidebar: {
  26. viewThumbnail: true, //启用缩略图视图
  27. viewOutline: true, //启用大纲视图
  28. viewAttachments: false, //启用附件视图
  29. },
  30. secondaryToolbar: {
  31. secondaryPresentationMode: true, //启用演示模式
  32. secondaryOpenFile: true, //启用打开文件功能
  33. secondaryPrint: false, //启用打印功能
  34. secondaryDownload: false, //启用下载功能
  35. secondaryViewBookmark: false, //启用书签视图
  36. firstPage: false, //启用跳转到第一页
  37. lastPage: false, //启用跳转到最后一页
  38. pageRotateCw: true, //启用顺时针旋转页面
  39. pageRotateCcw: true, //启用逆时针旋转页面
  40. cursorSelectTool: false, //启用选择工具
  41. cursorHandTool: false, //启用手形工具
  42. scrollVertical: false, //启用垂直滚动
  43. scrollHorizontal: false, //启用水平滚动
  44. scrollWrapped: false, //启用包裹滚动
  45. spreadNone: false, //启用无跨页模式
  46. spreadOdd: false, // 启用奇数页跨页模式
  47. spreadEven: false, //启用偶数页跨页模式
  48. documentProperties: false, //启用文档属性查看
  49. },
  50. // 配置左侧工具栏
  51. toolbar: {
  52. toolbarViewerLeft: {
  53. findbar: false, //启用查找条
  54. previous: true, // 启用上一页按钮
  55. next: true, //启用下一页按钮
  56. pageNumber: true, // 启用页码显示
  57. },
  58. // 配置右侧工具栏
  59. toolbarViewerRight: {
  60. presentationMode: true, //启用演示模式
  61. openFile: false, //启用打开文件功能
  62. print: false, //启用打印功能
  63. download: false, // 启用下载功能
  64. viewBookmark: false, // 启用书签视图
  65. },
  66. // 配置中间工具栏
  67. toolbarViewerMiddle: {
  68. zoomOut: true, // 启用缩小功能
  69. zoomIn: true, //启用放大功能。
  70. scaleSelectContainer: true, //启用缩放选择容器功能
  71. },
  72. },
  73. errorWrapper: true, //启用错误包装,这可能用于显示错误信息或处理错误情况。
  74. });
  75. </script>
  76. <template>
  77. <el-drawer
  78. v-model="visible"
  79. :footer="false"
  80. :header="false"
  81. :show-close="false"
  82. destroy-on-close
  83. direction="rtl"
  84. :append-to-body="true"
  85. @closed="onDrawerClose"
  86. size="80%"
  87. >
  88. <VuePdfApp
  89. v-if="pdfSource"
  90. class="mid-pdf-box"
  91. :pdf="pdfSource"
  92. page-scale="page-fit"
  93. :page-number="1"
  94. :config="config"
  95. ></VuePdfApp>
  96. </el-drawer>
  97. </template>
  98. <style scoped lang="scss">
  99. .mid-pdf-box {
  100. width: 100%;
  101. min-height: calc(100vh - 100px);
  102. height: 100%;
  103. }
  104. </style>