| 
					
					
						
							
						
					
					
				 | 
				@ -29,6 +29,8 @@ import 'pdfdist-mergeofd/web/pdf_viewer.css'; | 
			
		
		
	
		
			
				 | 
				 | 
				PDFJS.GlobalWorkerOptions.workerSrc = require("pdfdist-mergeofd/build/pdf.worker.entry.js"); | 
				 | 
				 | 
				PDFJS.GlobalWorkerOptions.workerSrc = require("pdfdist-mergeofd/build/pdf.worker.entry.js"); | 
			
		
		
	
		
			
				 | 
				 | 
				import { saveByteArray } from '@/utils/index' | 
				 | 
				 | 
				import { saveByteArray } from '@/utils/index' | 
			
		
		
	
		
			
				 | 
				 | 
				
 | 
				 | 
				 | 
				
 | 
			
		
		
	
		
			
				 | 
				 | 
				 | 
				 | 
				 | 
				import fontkit from '@pdf-lib/fontkit' | 
			
		
		
	
		
			
				 | 
				 | 
				 | 
				 | 
				 | 
				
 | 
			
		
		
	
		
			
				 | 
				 | 
				export default { | 
				 | 
				 | 
				export default { | 
			
		
		
	
		
			
				 | 
				 | 
				  name: "PdfView", | 
				 | 
				 | 
				  name: "PdfView", | 
			
		
		
	
		
			
				 | 
				 | 
				  props: { | 
				 | 
				 | 
				  props: { | 
			
		
		
	
	
		
			
				| 
					
						
							
						
					
					
						
							
						
					
					
				 | 
				@ -87,8 +89,13 @@ export default { | 
			
		
		
	
		
			
				 | 
				 | 
				    async loadFile() { | 
				 | 
				 | 
				    async loadFile() { | 
			
		
		
	
		
			
				 | 
				 | 
				      //初始化pdf | 
				 | 
				 | 
				      //初始化pdf | 
			
		
		
	
		
			
				 | 
				 | 
				      console.log("初始化pdf"); | 
				 | 
				 | 
				      console.log("初始化pdf"); | 
			
		
		
	
		
			
				 | 
				 | 
				 | 
				 | 
				 | 
				      const fontUrl = require('./font/SourceHanSansCN-Regular.ttf') | 
			
		
		
	
		
			
				 | 
				 | 
				 | 
				 | 
				 | 
				      // const helveticaFont = await pdfDoc.embedFont(StandardFonts.Helvetica) | 
			
		
		
	
		
			
				 | 
				 | 
				 | 
				 | 
				 | 
				      const fontBytes = await fetch(fontUrl).then((res) => res.arrayBuffer()); | 
			
		
		
	
		
			
				 | 
				 | 
				      const pdfDoc = await PDFDocument.load(this.data) | 
				 | 
				 | 
				      const pdfDoc = await PDFDocument.load(this.data) | 
			
		
		
	
		
			
				 | 
				 | 
				      const helveticaFont = await pdfDoc.embedFont(StandardFonts.Helvetica) | 
				 | 
				 | 
				 | 
			
		
		
	
		
			
				 | 
				 | 
				 | 
				 | 
				 | 
				      pdfDoc.registerFontkit(fontkit); // 自定义字体挂载、fontkit为自定义字体注册工具 | 
			
		
		
	
		
			
				 | 
				 | 
				 | 
				 | 
				 | 
				      const customFont = await pdfDoc.embedFont(fontBytes); | 
			
		
		
	
		
			
				 | 
				 | 
				 | 
				 | 
				 | 
				
 | 
			
		
		
	
		
			
				 | 
				 | 
				      const pages = pdfDoc.getPages() | 
				 | 
				 | 
				      const pages = pdfDoc.getPages() | 
			
		
		
	
		
			
				 | 
				 | 
				
 | 
				 | 
				 | 
				
 | 
			
		
		
	
		
			
				 | 
				 | 
				      // let canvas = document.createElement('canvas') | 
				 | 
				 | 
				      // let canvas = document.createElement('canvas') | 
			
		
		
	
	
		
			
				| 
					
					
					
						
							
						
					
				 | 
				@ -98,7 +105,7 @@ export default { | 
			
		
		
	
		
			
				 | 
				 | 
				      // 水印 | 
				 | 
				 | 
				      // 水印 | 
			
		
		
	
		
			
				 | 
				 | 
				      const drawTextParams = { | 
				 | 
				 | 
				      const drawTextParams = { | 
			
		
		
	
		
			
				 | 
				 | 
				        lineHeight: 50, | 
				 | 
				 | 
				        lineHeight: 50, | 
			
		
		
	
		
			
				 | 
				 | 
				        font: helveticaFont, | 
				 | 
				 | 
				 | 
			
		
		
	
		
			
				 | 
				 | 
				 | 
				 | 
				 | 
				        font: customFont, | 
			
		
		
	
		
			
				 | 
				 | 
				        size: 16, | 
				 | 
				 | 
				        size: 16, | 
			
		
		
	
		
			
				 | 
				 | 
				        color: rgb(0.08, 0.08, 0.2), | 
				 | 
				 | 
				        color: rgb(0.08, 0.08, 0.2), | 
			
		
		
	
		
			
				 | 
				 | 
				        rotate: degrees(15), | 
				 | 
				 | 
				        rotate: degrees(15), | 
			
		
		
	
	
		
			
				| 
					
					
					
						
							
						
					
				 | 
				@ -114,11 +121,11 @@ export default { | 
			
		
		
	
		
			
				 | 
				 | 
				          let lineNum = 0 | 
				 | 
				 | 
				          let lineNum = 0 | 
			
		
		
	
		
			
				 | 
				 | 
				          for (let iy = 50; iy <= height; iy += 200) { // 水印纵向间隔 | 
				 | 
				 | 
				          for (let iy = 50; iy <= height; iy += 200) { // 水印纵向间隔 | 
			
		
		
	
		
			
				 | 
				 | 
				            lineNum++ | 
				 | 
				 | 
				            lineNum++ | 
			
		
		
	
		
			
				 | 
				 | 
				            // currentPage.drawText(`xuhuajiao`+ this.formateTime(), { | 
				 | 
				 | 
				 | 
			
		
		
	
		
			
				 | 
				 | 
				            //   x: lineNum & 1 ? ix : ix + 60, | 
				 | 
				 | 
				 | 
			
		
		
	
		
			
				 | 
				 | 
				            //   y: iy, | 
				 | 
				 | 
				 | 
			
		
		
	
		
			
				 | 
				 | 
				            //   ...drawTextParams | 
				 | 
				 | 
				 | 
			
		
		
	
		
			
				 | 
				 | 
				            // }) | 
				 | 
				 | 
				 | 
			
		
		
	
		
			
				 | 
				 | 
				 | 
				 | 
				 | 
				            currentPage.drawText('徐华姣'+ this.formateTime(), { | 
			
		
		
	
		
			
				 | 
				 | 
				 | 
				 | 
				 | 
				              x: lineNum & 1 ? ix : ix + 60, | 
			
		
		
	
		
			
				 | 
				 | 
				 | 
				 | 
				 | 
				              y: iy, | 
			
		
		
	
		
			
				 | 
				 | 
				 | 
				 | 
				 | 
				              ...drawTextParams | 
			
		
		
	
		
			
				 | 
				 | 
				 | 
				 | 
				 | 
				            }) | 
			
		
		
	
		
			
				 | 
				 | 
				          } | 
				 | 
				 | 
				          } | 
			
		
		
	
		
			
				 | 
				 | 
				        } | 
				 | 
				 | 
				        } | 
			
		
		
	
		
			
				 | 
				 | 
				      } | 
				 | 
				 | 
				      } | 
			
		
		
	
	
		
			
				| 
					
					
					
						
							
						
					
				 | 
				@ -129,54 +136,54 @@ export default { | 
			
		
		
	
		
			
				 | 
				 | 
				      console.log('pdf_pages',this.pdf_pages) | 
				 | 
				 | 
				      console.log('pdf_pages',this.pdf_pages) | 
			
		
		
	
		
			
				 | 
				 | 
				      this.$nextTick(() => this.renderPagePdf()); | 
				 | 
				 | 
				      this.$nextTick(() => this.renderPagePdf()); | 
			
		
		
	
		
			
				 | 
				 | 
				
 | 
				 | 
				 | 
				
 | 
			
		
		
	
		
			
				 | 
				 | 
				      let dom = document.getElementsByClassName('page') | 
				 | 
				 | 
				 | 
			
		
		
	
		
			
				 | 
				 | 
				      let canvas = document.createElement('canvas') | 
				 | 
				 | 
				 | 
			
		
		
	
		
			
				 | 
				 | 
				      let cxt = canvas.getContext('2d') | 
				 | 
				 | 
				 | 
			
		
		
	
		
			
				 | 
				 | 
				      let divImg = document.createElement('div') | 
				 | 
				 | 
				 | 
			
		
		
	
		
			
				 | 
				 | 
				 | 
				 | 
				 | 
				      // let dom = document.getElementsByClassName('page') | 
			
		
		
	
		
			
				 | 
				 | 
				 | 
				 | 
				 | 
				      // let canvas = document.createElement('canvas') | 
			
		
		
	
		
			
				 | 
				 | 
				 | 
				 | 
				 | 
				      // let cxt = canvas.getContext('2d') | 
			
		
		
	
		
			
				 | 
				 | 
				 | 
				 | 
				 | 
				      // let divImg = document.createElement('div') | 
			
		
		
	
		
			
				 | 
				 | 
				
 | 
				 | 
				 | 
				
 | 
			
		
		
	
		
			
				 | 
				 | 
				      let imgScale = 0.3 | 
				 | 
				 | 
				 | 
			
		
		
	
		
			
				 | 
				 | 
				      //创建新的图片对象 | 
				 | 
				 | 
				 | 
			
		
		
	
		
			
				 | 
				 | 
				      let img = new Image(); | 
				 | 
				 | 
				 | 
			
		
		
	
		
			
				 | 
				 | 
				      //指定图片的URL | 
				 | 
				 | 
				 | 
			
		
		
	
		
			
				 | 
				 | 
				      img.src = this.logo; | 
				 | 
				 | 
				 | 
			
		
		
	
		
			
				 | 
				 | 
				      //浏览器加载图片完毕后再绘制图片 | 
				 | 
				 | 
				 | 
			
		
		
	
		
			
				 | 
				 | 
				      img.onload = function() { | 
				 | 
				 | 
				 | 
			
		
		
	
		
			
				 | 
				 | 
				          //cxt.drawImage(img,0,0); | 
				 | 
				 | 
				 | 
			
		
		
	
		
			
				 | 
				 | 
				          cxt.rotate(-20 * Math.PI / 180) | 
				 | 
				 | 
				 | 
			
		
		
	
		
			
				 | 
				 | 
				          let whScale = img.width / img.height | 
				 | 
				 | 
				 | 
			
		
		
	
		
			
				 | 
				 | 
				          cxt.clearRect(0, 0, canvas.width, canvas.height); | 
				 | 
				 | 
				 | 
			
		
		
	
		
			
				 | 
				 | 
				          cxt.drawImage(img, //规定要使用的图像、画布或视频。 | 
				 | 
				 | 
				 | 
			
		
		
	
		
			
				 | 
				 | 
				                          0, 0, //开始剪切的 x 坐标位置。 | 
				 | 
				 | 
				 | 
			
		
		
	
		
			
				 | 
				 | 
				                          img.width, img.height,  //被剪切图像的高度。 | 
				 | 
				 | 
				 | 
			
		
		
	
		
			
				 | 
				 | 
				                          0, 50,//在画布上放置图像的 x 、y坐标位置。 | 
				 | 
				 | 
				 | 
			
		
		
	
		
			
				 | 
				 | 
				                          img.width * imgScale, img.height * imgScale  //要使用的图像的宽度、高度 | 
				 | 
				 | 
				 | 
			
		
		
	
		
			
				 | 
				 | 
				                          ) | 
				 | 
				 | 
				 | 
			
		
		
	
		
			
				 | 
				 | 
				          divImg.style.opacity = 0.3 | 
				 | 
				 | 
				 | 
			
		
		
	
		
			
				 | 
				 | 
				          divImg.style.background = 'url(' + canvas.toDataURL('image/png') + ') left top repeat' | 
				 | 
				 | 
				 | 
			
		
		
	
		
			
				 | 
				 | 
				          drawImage2(divImg,dom)  | 
				 | 
				 | 
				 | 
			
		
		
	
		
			
				 | 
				 | 
				      } | 
				 | 
				 | 
				 | 
			
		
		
	
		
			
				 | 
				 | 
				 | 
				 | 
				 | 
				      // let imgScale = 0.3 | 
			
		
		
	
		
			
				 | 
				 | 
				 | 
				 | 
				 | 
				      // //创建新的图片对象 | 
			
		
		
	
		
			
				 | 
				 | 
				 | 
				 | 
				 | 
				      // let img = new Image(); | 
			
		
		
	
		
			
				 | 
				 | 
				 | 
				 | 
				 | 
				      // //指定图片的URL | 
			
		
		
	
		
			
				 | 
				 | 
				 | 
				 | 
				 | 
				      // img.src = this.logo; | 
			
		
		
	
		
			
				 | 
				 | 
				 | 
				 | 
				 | 
				      // //浏览器加载图片完毕后再绘制图片 | 
			
		
		
	
		
			
				 | 
				 | 
				 | 
				 | 
				 | 
				      // img.onload = function() { | 
			
		
		
	
		
			
				 | 
				 | 
				 | 
				 | 
				 | 
				      //     //cxt.drawImage(img,0,0); | 
			
		
		
	
		
			
				 | 
				 | 
				 | 
				 | 
				 | 
				      //     cxt.rotate(-20 * Math.PI / 180) | 
			
		
		
	
		
			
				 | 
				 | 
				 | 
				 | 
				 | 
				      //     let whScale = img.width / img.height | 
			
		
		
	
		
			
				 | 
				 | 
				 | 
				 | 
				 | 
				      //     cxt.clearRect(0, 0, canvas.width, canvas.height); | 
			
		
		
	
		
			
				 | 
				 | 
				 | 
				 | 
				 | 
				      //     cxt.drawImage(img, //规定要使用的图像、画布或视频。 | 
			
		
		
	
		
			
				 | 
				 | 
				 | 
				 | 
				 | 
				      //                     0, 0, //开始剪切的 x 坐标位置。 | 
			
		
		
	
		
			
				 | 
				 | 
				 | 
				 | 
				 | 
				      //                     img.width, img.height,  //被剪切图像的高度。 | 
			
		
		
	
		
			
				 | 
				 | 
				 | 
				 | 
				 | 
				      //                     0, 50,//在画布上放置图像的 x 、y坐标位置。 | 
			
		
		
	
		
			
				 | 
				 | 
				 | 
				 | 
				 | 
				      //                     img.width * imgScale, img.height * imgScale  //要使用的图像的宽度、高度 | 
			
		
		
	
		
			
				 | 
				 | 
				 | 
				 | 
				 | 
				      //                     ) | 
			
		
		
	
		
			
				 | 
				 | 
				 | 
				 | 
				 | 
				      //     divImg.style.opacity = 0.3 | 
			
		
		
	
		
			
				 | 
				 | 
				 | 
				 | 
				 | 
				      //     divImg.style.background = 'url(' + canvas.toDataURL('image/png') + ') left top repeat' | 
			
		
		
	
		
			
				 | 
				 | 
				 | 
				 | 
				 | 
				      //     drawImage2(divImg,dom)  | 
			
		
		
	
		
			
				 | 
				 | 
				 | 
				 | 
				 | 
				      // } | 
			
		
		
	
		
			
				 | 
				 | 
				
 | 
				 | 
				 | 
				
 | 
			
		
		
	
		
			
				 | 
				 | 
				      function drawImage2 (div,dom) { | 
				 | 
				 | 
				 | 
			
		
		
	
		
			
				 | 
				 | 
				        div.style.pointerEvents = 'none' | 
				 | 
				 | 
				 | 
			
		
		
	
		
			
				 | 
				 | 
				          div.className = 'weterbox' | 
				 | 
				 | 
				 | 
			
		
		
	
		
			
				 | 
				 | 
				          div.style.top = 0 | 
				 | 
				 | 
				 | 
			
		
		
	
		
			
				 | 
				 | 
				          div.style.left = 0 | 
				 | 
				 | 
				 | 
			
		
		
	
		
			
				 | 
				 | 
				          div.style.position = 'absolute' | 
				 | 
				 | 
				 | 
			
		
		
	
		
			
				 | 
				 | 
				          div.style.zIndex = '100000' | 
				 | 
				 | 
				 | 
			
		
		
	
		
			
				 | 
				 | 
				          div.style.width = '100%' | 
				 | 
				 | 
				 | 
			
		
		
	
		
			
				 | 
				 | 
				          div.style.height = '100%' | 
				 | 
				 | 
				 | 
			
		
		
	
		
			
				 | 
				 | 
				        // console.log(dom)  | 
				 | 
				 | 
				 | 
			
		
		
	
		
			
				 | 
				 | 
				        if( dom.length > 0){ | 
				 | 
				 | 
				 | 
			
		
		
	
		
			
				 | 
				 | 
				            for(let i = 0; i< dom.length;i++){ | 
				 | 
				 | 
				 | 
			
		
		
	
		
			
				 | 
				 | 
				                let child = dom[i].getElementsByClassName('weterbox') | 
				 | 
				 | 
				 | 
			
		
		
	
		
			
				 | 
				 | 
				                if(child.length > 0){ | 
				 | 
				 | 
				 | 
			
		
		
	
		
			
				 | 
				 | 
				                    dom[i].removeChild(child[0]) | 
				 | 
				 | 
				 | 
			
		
		
	
		
			
				 | 
				 | 
				                } | 
				 | 
				 | 
				 | 
			
		
		
	
		
			
				 | 
				 | 
				                dom[i].appendChild(div.cloneNode(true)) | 
				 | 
				 | 
				 | 
			
		
		
	
		
			
				 | 
				 | 
				              //  console.log(i,dom[i]) | 
				 | 
				 | 
				 | 
			
		
		
	
		
			
				 | 
				 | 
				            } | 
				 | 
				 | 
				 | 
			
		
		
	
		
			
				 | 
				 | 
				        } | 
				 | 
				 | 
				 | 
			
		
		
	
		
			
				 | 
				 | 
				      } | 
				 | 
				 | 
				 | 
			
		
		
	
		
			
				 | 
				 | 
				 | 
				 | 
				 | 
				      // function drawImage2 (div,dom) { | 
			
		
		
	
		
			
				 | 
				 | 
				 | 
				 | 
				 | 
				      //   div.style.pointerEvents = 'none' | 
			
		
		
	
		
			
				 | 
				 | 
				 | 
				 | 
				 | 
				      //     div.className = 'weterbox' | 
			
		
		
	
		
			
				 | 
				 | 
				 | 
				 | 
				 | 
				      //     div.style.top = 0 | 
			
		
		
	
		
			
				 | 
				 | 
				 | 
				 | 
				 | 
				      //     div.style.left = 0 | 
			
		
		
	
		
			
				 | 
				 | 
				 | 
				 | 
				 | 
				      //     div.style.position = 'absolute' | 
			
		
		
	
		
			
				 | 
				 | 
				 | 
				 | 
				 | 
				      //     div.style.zIndex = '100000' | 
			
		
		
	
		
			
				 | 
				 | 
				 | 
				 | 
				 | 
				      //     div.style.width = '100%' | 
			
		
		
	
		
			
				 | 
				 | 
				 | 
				 | 
				 | 
				      //     div.style.height = '100%' | 
			
		
		
	
		
			
				 | 
				 | 
				 | 
				 | 
				 | 
				      //   // console.log(dom)  | 
			
		
		
	
		
			
				 | 
				 | 
				 | 
				 | 
				 | 
				      //   if( dom.length > 0){ | 
			
		
		
	
		
			
				 | 
				 | 
				 | 
				 | 
				 | 
				      //       for(let i = 0; i< dom.length;i++){ | 
			
		
		
	
		
			
				 | 
				 | 
				 | 
				 | 
				 | 
				      //           let child = dom[i].getElementsByClassName('weterbox') | 
			
		
		
	
		
			
				 | 
				 | 
				 | 
				 | 
				 | 
				      //           if(child.length > 0){ | 
			
		
		
	
		
			
				 | 
				 | 
				 | 
				 | 
				 | 
				      //               dom[i].removeChild(child[0]) | 
			
		
		
	
		
			
				 | 
				 | 
				 | 
				 | 
				 | 
				      //           } | 
			
		
		
	
		
			
				 | 
				 | 
				 | 
				 | 
				 | 
				      //           dom[i].appendChild(div.cloneNode(true)) | 
			
		
		
	
		
			
				 | 
				 | 
				 | 
				 | 
				 | 
				      //         //  console.log(i,dom[i]) | 
			
		
		
	
		
			
				 | 
				 | 
				 | 
				 | 
				 | 
				      //       } | 
			
		
		
	
		
			
				 | 
				 | 
				 | 
				 | 
				 | 
				      //   } | 
			
		
		
	
		
			
				 | 
				 | 
				 | 
				 | 
				 | 
				      // } | 
			
		
		
	
		
			
				 | 
				 | 
				
 | 
				 | 
				 | 
				
 | 
			
		
		
	
		
			
				 | 
				 | 
				
 | 
				 | 
				 | 
				
 | 
			
		
		
	
		
			
				 | 
				 | 
				    }, | 
				 | 
				 | 
				    }, | 
			
		
		
	
	
		
			
				| 
					
						
							
						
					
					
					
				 | 
				
  |