javascript - print.js 密码保护 pdf
问题描述
我尝试创建一个前端,将文件夹中的所有 PDF 文件显示为下拉列表。选定的 PDF 应在 chrome kiosk 打印模式下静默打印。我是 php 和 javascript 的初学者,但在此步骤上没有问题。
问题是,PDF 应该用密码保护,这使得无声信息亭打印对我来说是不可能的。
我需要用 print.js 发送密码,但我认为 print.js 中没有功能。
另一种解决方案是用php解密PDF,将其保存为带后缀的临时文件,打印没有密码的pdf并删除临时文件。
有谁知道我该怎么做?我搜索了解密 PDF 的解决方案或使用 print.js 发送密码的可能性,但没有找到任何东西。
非常感谢您的帮助!
<?php
$dir = "Path-to-PDF/";
$files = glob("$dir*.pdf",GLOB_BRACE);
?>
<!DOCTYPE html>
<html lang="de">
<head>
<title>Browser Title</title>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<link rel="stylesheet" href="inc/css/bootstrap.min.css">
<link rel="stylesheet" href="inc/css/bootstrap-select.min.css">
<script src="inc/js/jquery-3.5.1.min.js"></script>
<script src="inc/js/bootstrap.bundle.min.js"></script>
<script src="inc/js/bootstrap-select.min.js"></script>
<script src="inc/js/print.min.js"></script>
</head>
<body>
<div class="d-flex p-5 justify-content-center">
<form method="post">
<select name="PDF" class="selectpicker" data-size="5" data-live-search="true" onchange="this.form.submit()">
<option value="">Bitte PDF auswählen...</option>
<?php
foreach($files as $file)
{
?>
<option><?php echo basename($file,$dir); ?></option>
<?php
}
?>
</select>
</form>
</div>
<?php
if(isset($_POST["PDF"])){
$pdf= $_POST["PDF"];
echo $pdf;
}
?>
<button type="button" onclick="printJS({printable:'PDF/<?php echo $pdf?>', type:'pdf', showModal:true})">
Print PDF
</button>
</body>
</html>
<?php
?>
解决方案
使用 qpdf 命令(下载)解密它怎么样?在 Ubuntu 上,您可以使用sudo apt install qpdf
. 您可以将 pdf 文件解密为qpdf --decrypt input.pdf --password='pass' -- out.pdf
. 它可以通过 shell_exec() 等函数从 PHP 中执行。
推荐阅读
- nginx - Django Rest 框架,在 Nginx 后面具有基本身份验证 + 持有者令牌
- r - 比较 R 中不同和不相等的列表以找到最相似的候选者
- android - 为什么 alertDialog 比 display 宽?
- python - 使用 Python 中已安装的 libsqlite3 版本
- multithreading - 使用多线程未报告未定义变量错误
- javascript - 在 Google Script(Google 电子表格)上记录更改
- solidity - 我试图剥离 synthetix 质押合约
- gradle - Gradle 无法下载依赖项
- elasticsearch - 如何在只有 1 个不同字段的弹性搜索中创建另一个类似的文档条目?
- flutter - **已解决** 在 dart、flutter 应用程序中检查或连续收听互联网连接/网络连接