sách gpt4 ai đã đi

pdf - 如何在 Apps 脚本中使用外部 Javascript 库(PDF 库)?

In lại 作者:行者123 更新时间:2023-12-03 08:03:28 27 4
mua khóa gpt4 Nike

我需要在 Apps 脚本应用程序上修改 PDF。为此,我想使用 JS 库:PDF-LIB

我的代码:

eval(UrlFetchApp.fetch("../../../pdf-lib/dist/pdf-lib.js").getContentText());

function modifyPdf() {
const url = '../../../assets/with_update_sections.pdf'
const existingPdfBytes = UrlFetchApp.fetch(url).getContentText();

const pdfDoc = PDFDocument.load(existingPdfBytes)
const helveticaFont = pdfDoc.embedFont(StandardFonts.Helvetica)

const pages = pdfDoc.getPages()
const firstPage = pages[0]
const { width, height } = firstPage.getSize()
firstPage.drawText('This text was added with JavaScript!', {
x: 5,
y: height / 2 + 300,
size: 50,
font: helveticaFont,
color: rgb(0.95, 0.1, 0.1),
rotate: degrees(-45),
})

const pdfBytes = pdfDoc.save()
}

当我执行功能modifyPDF时,我有:

Erreur  
ReferenceError: PDFDocument is not defined
modifyPdf @ modifie_pdf.gs:7

您知道如何在我的 Apps 脚本应用程序中导入 js 库吗?

1 Câu trả lời

  • đánh giá使用的全局变量命名空间是PDFLib。因此,所有变量(例如 rgb,levels,PDFDocument)都是该对象的键,应该这样引用。

  • 库中的大多数函数都使用 promises,虽然应用程序脚本在功能上不支持它,但在语法上却支持它。因此,应该使用không đồng bộ,await,否则你只会得到promise对象,而不是实际的tài liệuhoặc字体

  • 该库使用 setTimeout,这在应用脚本中不可用。我使用 Utilities.sleep 来模拟它的行为。

  • getContentText() trở lại文本, thay vì二进制内容. sử dụng getContent() 获取 byte[] 并将其转换为 Uint8Array

eval(UrlFetchApp.fetch("../../../pdf-lib/dist/pdf-lib.js").getContentText());
/*+++simulate setTimeout*/setTimeout = (func, sleep) => (Utilities.sleep(sleep),func())

async function modifyPdf() {
const url = '../../../assets/with_update_sections.pdf'
const existingPdfBytes = new /*cast to uint8*/Uint8Array(/*returns byte[]*/UrlFetchApp.fetch(url).getContent/*---Text*/());
/*+++ simulate import*/const { PDFDocument, StandardFonts, rgb, degrees} = PDFLib;
const pdfDoc = /*+++*/await PDFDocument.load(existingPdfBytes)
const helveticaFont = /*+++*/ await pdfDoc.embedFont(StandardFonts.Helvetica)

const pages = pdfDoc.getPages()
const firstPage = pages[0]
const { width, height } = firstPage.getSize()
firstPage.drawText(`This text was added with JavaScript\n\n${' '.repeat(10)}(Google Apps script)!`, {
x: width/10 + 60,
y: height/10 + 120,
size: 40,
font: helveticaFont,
color: rgb(0.1, 0.1, 0.1),
rotate: degrees(50),
opacity: 0.5,
})

const pdfBytes = /*+++*/await pdfDoc.save();
/*+++*/DriveApp.createFile(Utilities.newBlob(pdfBytes).setName('newpdf from apps script'))
}

关于pdf - 如何在 Apps 脚本中使用外部 Javascript 库(PDF 库)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/73166361/

27 4 0
行者123
Hồ sơ cá nhân

Tôi là một lập trình viên xuất sắc, rất giỏi!

Nhận phiếu giảm giá Didi Taxi miễn phí
Mã giảm giá Didi Taxi
Giấy chứng nhận ICP Bắc Kinh số 000000
Hợp tác quảng cáo: 1813099741@qq.com 6ren.com