javascript - 如何在应用脚本中使用相同的渲染从 HTML 中保存 PDF
问题描述
我需要在我的 Google Drive 中将 HTML 网页另存为 pdf。我正在使用应用程序脚本。
但是,PDF 的呈现方式与 HTLM 页面不同。我需要 PDF 与 HTML 相同。
这是 HTML 的打印屏幕
这是我的代码:
function downloadFile() {
var fileURL = "http....."
var folder = "primes"
var fileName = "";
var fileSize = "";
var response = UrlFetchApp.fetch(fileURL, {
headers: { Authorization: 'Bearer ' + ScriptApp.getOAuthToken() },
})
var htmlBody = response.getContentText();
var rc = response.getResponseCode();
if (rc == 200) {
var blob = Utilities.newBlob(htmlBody,
MimeType.HTML).getAs('application/pdf').setName('Nota.pdf');
var folder = DriveApp.getFolderById("1gBA8YCs3PH7v7CNl3nlsjNqYzhOxhjYa");
if(folder != null){
var file = folder.createFile(blob);
fileName = file.getName()
fileSize = file.getSize()
}
}
var fileInfo = {'rc':rc,"filename": fileName, "fileSize":fileSize}
Logger.log(fileInfo)
}
!!!!更新!!!!!!
这是我得到的输出:
我知道可以正确保存此 PDF,因为如果使用名为 HTML TO PDF 的 chrome 扩展,它会正确转换,如下图所示
解决方案
只需从命令行使用 chrome,无需 puppet 或任何其他应用程序。
--headless --disable-gpu --enable-logging --print-to-pdf="%UserProfile%\Documents\Demofile.pdf" --no-margins --disable-extensions --print-to-pdf-no-header --disable-popup-blocking --run-all-compositor-stages-before-draw --disable-checker-imaging https://bling.com.br/doc.view.php?id=2565744b051b9f1d3177c30ccf1e65b2
PROs 就像在浏览器中呈现 HTML
缺点 与 HTML 页面完全一样,将从浏览器保存为PORTRAIT PDF(命令行默认为 Landscape=false),因此要更改布局,您需要另一种方法。
推荐阅读
- react-native - React Native 如何在本机应用程序上打开社交媒体 URL
- php - 将联系表格 7 数据保存到特定联系表格的自定义数据库中
- python - 将python程序的输出直接重定向到cpp程序的输入
- java - 如何使用 JCache 在客户端-服务器拓扑中使用 Hazelcast?
- java - 我应该在我的代码中更改什么来对城市名称进行排序,但它也有非英文字母?
- html - 打印大型 html 表格时的动态页码
- postman - 在响应正文中包含 Postman 的特定数据之前,如何重复调用 API?
- fetch - whatwg-fetch 如何与 msw/node 一起工作?
- python - 没有名为“pyautogui”的模块错误消息
- html - 如何将背景颜色仅用于 html 中的列表?