index_pdf.vue 2.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122
  1. <template>
  2. <!-- pdf_container -->
  3. <div>
  4. <pdf
  5. :src="downUrl"
  6. :page="pageNum"
  7. @num-pages="setNumPages"
  8. @page-loaded="onPageLoaded"
  9. ></pdf>
  10. <p>当前页: {{ pageNum }} / {{ numPages }}</p>
  11. <button @click="prevPage">上一页</button>
  12. <button @click="nextPage">下一页</button>
  13. </div>
  14. </template>
  15. <script>
  16. import pdf from "vue-pdf";
  17. export default {
  18. components: {
  19. pdf,
  20. },
  21. data() {
  22. return {
  23. downUrl: "",
  24. pageNum: 1,
  25. numPages: 0,
  26. };
  27. },
  28. onLoad(e) {
  29. var that = this;
  30. that.downUrl = e.downUrl;
  31. },
  32. methods: {
  33. handleWheel(event) {
  34. console.log("gadsfqwerqweqr===0=");
  35. const deltaY = event.deltaY;
  36. console.log("gadsfqwerqweqr===1=" + deltaY);
  37. if (deltaY > 0) {
  38. this.prevPage();
  39. } else {
  40. this.nextPage();
  41. }
  42. },
  43. prevPage() {
  44. var page = this.pageNum;
  45. if (page > 1) {
  46. this.pageNum--;
  47. }
  48. },
  49. nextPage() {
  50. var page = this.pageNum;
  51. if (page < this.numPages - 1) {
  52. this.pageNum++;
  53. }
  54. },
  55. setNumPages(numPagesData) {
  56. this.numPages = numPagesData;
  57. },
  58. onPageLoaded(page) {
  59. // this.pageNum = page;
  60. // // 这里可以添加你的页数控制逻辑
  61. // // 例如: 当PDF有超过100页时停止加载更多页面
  62. // if (this.numPages > 100) {
  63. // // 使用vue-pdf的stop方法停止加载
  64. // this.$refs.pdfComponent.stop();
  65. // }
  66. },
  67. },
  68. };
  69. </script>
  70. <style lang="scss" scoped>
  71. .pdf_container {
  72. display: flex;
  73. flex-direction: column;
  74. align-items: center;
  75. justify-content: center;
  76. height: 100vh;
  77. margin: 0 auto;
  78. }
  79. .button_container {
  80. display: flex;
  81. flex-direction: column;
  82. align-items: center;
  83. justify-content: center;
  84. height: 100vh;
  85. margin: 0 auto;
  86. }
  87. .styled_button {
  88. justify-content: center;
  89. background-color: #4caf50; /* Green */
  90. border: none;
  91. color: white;
  92. padding-left: 80;
  93. padding-right: 40;
  94. padding-top: 40;
  95. padding-bottom: 40;
  96. text-align: center;
  97. align-items: center;
  98. text-decoration: none;
  99. display: inline-block;
  100. font-size: 16px;
  101. margin: 10px 0;
  102. cursor: pointer;
  103. border-radius: 8px;
  104. transition: background-color 0.3s;
  105. }
  106. .styled_button:hover {
  107. background-color: #45a049;
  108. }
  109. </style>