我一直在使用qpdf删除CSSTransition
限制,可以在php这样的系统中使用,例如:
<Route render={({ location }) => {
let direction = location.state ? location.state.direction : null
let doAnimation = !!direction
// direction = the type of animation to use, if null = no animation
return (
<TransitionGroup enter={doAnimation} exit={doAnimation} >
<CSSTransition
key={location.key}
classNames={direction || "none"}
timeout={500}>
<Switch
location={location}>
{routes}
</Switch>
</CSSTransition>
</TransitionGroup>
)
}} />
这在localhost上运行良好,但是出于安全原因,无法在共享的虚拟主机上执行。
因此,我正在寻找另一种无需shell命令即可完成此工作的方法。
在PHP或JavaScript语言上是否有解决方案?
编辑:
我正在测试的pdf并没有被密码阻止,我所知道的是我无法从中复制文本,但是在应用了“ qpdf --decrypt ..”命令之后,我就可以做到。
答案 0 :(得分:1)
您可以在GitHub php-pdftk
中使用以下存储库示例PHP代码:
use mikehaertl\pdftk\Pdf;
$pdf = new Pdf('/path/my.pdf');
$pdf->allow('AllFeatures') // Change permissions
->flatten() // Merge form data into document (doesn't work well with UTF-8!)
->compress($value) // Compress/Uncompress
->keepId('first') // Keep first/last Id of combined files
->dropXfa() // Drop newer XFA form from PDF
->dropXmp() // Drop newer XMP data from PDF
->needAppearances() // Make clients create appearance for form fields
->setPassword($pw) // Set owner password
->setUserPassword($pw) // Set user password
->passwordEncryption(128) // Set password encryption strength
->saveAs('new.pdf');
答案 1 :(得分:-1)
使用JavaScript(PDF.js)编写的Mozilla PDF Reader可以满足您的所有这些需求。您可以显示所有PDF,而不受共享网络托管的限制。我现在已经对其进行了文本复制,文档打印和其他限制的测试-您可以不受限制地进行所有操作。
仅对于文档读取密码,您将需要一个密码,并且我希望您了解,如果密码足够牢固,则无法使用任何其他软件删除此密码。您也可以使用密码打开在线所有文档(如果有的话),但是将跳过所有其他限制。我已使用所有者和用户密码中的256-bit of key length对它进行了测试。
如果有人不了解OP(原始海报)的QPDF库,我是否发现了有关此QPDF库的以下信息:
受保护的PDF文件具有两种类型的密码:OWNER和USER。
OWNER密码用于强制权限。
USER密码用于打开pdf文件。
...
如果还使用USER密码保护了它,也可以解密它,但是您需要知道该密码。
使用此库,您无需编写明确的某些代码即可删除PDF限制。通过自动 读取文档,它消除了(所有者密码)限制。如果设置了用户密码(用于打开PDF文件),那么它会通过从文档中读取自动自动显示该密码的输入对话框。
结论:在受到限制的情况下,OP中的PDF.js库和QPDF库具有相同的作用。
只需打开下面的主站点链接,然后转到入门站点(您将在页面顶部找到这种可能性)–您将找到所有这些入门说明。
PDF.js 是 open source project (GitHub链接)。
在此 home site 上,您将找到:
有用的链接: