salesforce lwc页面上传PDF文件增加水印真实有效(支持上传大文件,理论2G)

本文介绍如何在salesforce lwc中利用pdf-lib库实现上传PDF文件加水印,支持大文件(理论上限2G)。文章详细阐述了从设置跨域、上传静态资源到创建组件和实现功能的步骤,确保文件在云端处理后加水印并重新上传。
摘要由CSDN通过智能技术生成

lwc页面上传PDF文件增加水印真实有效(支持上传大文件,理论2G)

第一章 salesforce lwc上传pdf页面增加水印功能

前言

在salesforce中,使用lwc引用第三方js库实现pdf加水印功能。首次创作不易,如有帮助希望给个关注或者加粉丝。让我有动力写更多有帮助的文档。万分感谢!!!细节上有疑问欢迎联系,评论必回。着急加:the_most-handsomeMan


一、上传pdf文件加水印描述

1开发前期准备工作如下:

1.首先功能实现选择使用lwc组件。aura、vf组件也能实现。
2. 设置处理rest api 跨域问题。
3. 上传静态资源文件:上传第三方js库。pdf-lib库(实现加水印关键库),jquery库。
4. 创建lwc页面。
5. javascript准备工作,引入第三方js库。pdf-lib库(实现加水印关键库),jquery库。
6. 实现功能。

注:
此功能理论实现上传文件可以2G大小,只要前端页面不崩溃!!此功能“前提”是必须已经在云端的存在的文件数据,通过接口查询下载下来再进行渲染,然后重新上传到云端,做不到文件上传数据的时候同时加水印。文件上传后绑定关联关系等细节信息自行研究。

2.设置前端调用rest api跨域问题。打开设置,搜索“安全性”,在CORS、CPS授信站点添加访问的地址,可以模糊“*”设置访问地址。如下:

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

3.上传静态资源文件:上传第三方js库。pdf-lib库(实现加水印关键库),jquery库。在设置中,搜索“静态资源”。然后把下载好的第三方js库上传到服务器。如下:

在这里插入图片描述

4.创建lwc组件代码。这里使用idea开发工具创建,如下:

在这里插入图片描述

前端代码如下:

<template>
    <lightning-card title="Create PDF File" icon-name="utility:user">
    </lightning-card>
    <div style="background-color: white; padding: 10px">
        <lightning-button label="Create PDF" onclick={
       loadPDF}></lightning-button>
        <template if:true={uploadFlag} >
            <div class="exampleHolder">
                <lightning-spinner alternative-text="Loading" size="large"></lightning-spinner>
            </div>
        </template>

    </div>

</template>

5.javascript准备工作,引入第三方js库。pdf-lib库(实现加水印关键库),jquery库。不懂的,看参考资料。如下:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-psJX2w0i-1650517378889)(.\image\image-20220419143534086.png)]

js代码如下注意:请求连接查询contentVersion的文件数据的时候,id在url固定写死的。拷贝代码可自行修改或者优化代码:

/**
 * @Author: ali
 * @Date: 2022-04-13 10:46:29
 * @LastEditors: ali
 * @LastEditTime: 2022-04-13 15:13:16
 * @Descripttion:  上传pdf文件增加水印
 */

import {
    LightningElement,wire,api,track } from 'lwc';
import {
    ShowToastEvent } from 'lightning/platformShowToastEvent';
import pdflib from "@salesforce/resourceUrl/pdflib";
import font_chinese from "@salesforce/resourceUrl/font_chinese";
import {
    loadScript } from "lightning/platformResourceLoader";
import getSessionId from '@salesforce/apex/ContentVersionHandle.getSessionId';
import jquery from '@salesforce/resourceUrl/jquery';
export default class UploadFileAndAddWatermark extends LightningElement {
   
    @api recordId;
    @track results;
    @track errors;
    @track resultStr;
    @track contentVersionId;
    @track uploadFlag;
    boundary;
    sessionId;
    Authorization;
    fileName = 'saber';
    ContentDocumentId = '0690w000001SGtlAAG';//'0690w000001SFTNAA4'


    //初始化回调函数
    connectedCallback() {
   

        //加载外部pdflibjs库
        loadScript(this, pdflib).then(() => {
   console.log('pdflib loaded完成');});
        loadScript(this, jquery).then(() => {
   console.log('JQuery loaded完成');});
        loadScript(this,font_chinese).then(() => {
   console.log('font_chinese loaded完成');});

        //获取access_token(请求授权:Authorization)
        getSessionId()
            .then(result => {
   

                this.sessionId = result;
                this.Authorization = "Bearer " + result;
                console.log('this.sessionId:' + this.sessionId);
                console.log('this.Authorization:' + this.Authorization);
            })
            .catch(error => {
   

                console.log('获取授权token失败 :' + error);
            });

        //加载等待条件
        this.uploadFlag = false;
    }


    /**
     *
     * 测试用例
     * 创建pdf文件,加水印,下载数据
     * @returns {Promise<void>}
     */
    async createPdf() {
   

        const pdfDoc = await PDFLib.PDFDocument.create();
        const timesRomanFont = await pdfDoc.embedFont(
            PDFLib.StandardFonts.TimesRoman
        );

        const page = pdfDoc.addPage();
        const {
   width, height} = page.getSize();
        const fontSize = 30;
        page.drawText("Learning with Salesforce Bolt !", {
   
            x: 50,
            y: height - 4 * fontSize,
            size: fontSize,
            font: timesRomanFont,
            color: PDFLib.rgb(0, 0.53, 0.71)
        });

        const pdfBytes = await pdfDoc.save(
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
好的,以下是一个简单的Salesforce LWC(Lightning Web Component)检索页面的实现步骤: 1. 创建一个LWC组件,可以使用Salesforce CLI或者在Salesforce中创建一个新的Lightning Web Component。 2. 在LWC组件中,创建一个HTML模板来定义检索页面的布局,例如创建一个搜索框和一个搜索按钮。 3. 创建一个JavaScript文件,来处理搜索逻辑。在搜索逻辑中,使用Lightning Data Service或者Apex Controller来搜索数据。 4. 将搜索结果展示到检索页面中。 5. 可以添加一些其他的功能,例如分页、排序等。 下面是一个简单的例子代码,可以帮助你开始实现一个LWC检索页面: HTML模板: ```html <template> <div> <lightning-input label="Search" value={searchTerm} onchange={handleSearchTermChange}></lightning-input> <lightning-button variant="brand" label="Search" onclick={handleSearch}></lightning-button> <template if:true={searchResults}> <ul> <template for:each={searchResults} for:item="result"> <li key={result.Id}>{result.Name}</li> </template> </ul> </template> </div> </template> ``` JavaScript文件: ```javascript import { LightningElement, wire } from 'lwc'; import searchContacts from '@salesforce/apex/ContactController.searchContacts'; export default class ContactSearch extends LightningElement { searchTerm = ''; searchResults; handleSearchTermChange(event) { this.searchTerm = event.target.value; } handleSearch() { searchContacts({ searchTerm: this.searchTerm }) .then(result => { this.searchResults = result; }) .catch(error => { // Handle error }); } } ``` 在这个例子中,我们使用了标准的Salesforce Contact对象,并且调用了一个Apex Controller来搜索联系人数据。你可以替换为你自己的对象和Apex Controller。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小熊的salesforce专栏

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值