我需要在php中使用ghostscript对PDF文件进行密码保护.
这些文件将使用简单的形式上传到服务器(我不需要任何帮助),但它们起初没有任何保护.所以我想使用exec函数和ghostscript为它们设置密码保护.但我找不到ghostscript查询应该是什么样的地方.
例如,我有一个名为File.pdf的PDF文件.我上传它然后我需要保护它并称之为File_protected.pdf.
我试图这样做,但'.ps'文件权重太大,最终File_protected.pdf中没有密码:
exec("gs -dNOPAUSE -dBATCH -sDEVICE=pswrite -sOutputFile=File.ps File.pdf");
exec("gs -dNOPAUSE -dBATCH -sPDFPassword=password -sDEVICE=pdfwrite -sOutputFile=File_protected.pdf File.ps");
Run Code Online (Sandbox Code Playgroud) 我正在使用 GhostScript 更改 DPI 并使用 exec() 函数从 PHP 调整 PDF 文件的大小。我的命令行代码如下所示:
gs -o out.pdf -sDEVICE=pdfwrite -dDEVICEWIDTHPOINTS=800 -dDEVICEHEIGHTPOINTS=1000 -dPDFFitPage -dPDFSETTINGS=/ebook in.pdf
Run Code Online (Sandbox Code Playgroud)
但是在此处理后,我的一个 PDF 第一页被旋转和裁剪。如果我添加-dFixedMedia参数,它仍然会旋转但不会被裁剪。但在这种情况下,其他一些页面将被旋转。
我也试着-dOrient1=false和-dOrient1=true......和-dAutoRotatePages=/None......这一切都没有奏效...也许我不使用它的权利...
是否可以防止/禁止所有 PDF 页面的任何类型的旋转?
聚苯乙烯
初始 PDF 的第一页:

处理后的第一页 PDF 没有-dFixedMedia:

处理后 PDF 的第一页 WITH -dFixedMedia:

更新:
这是此一页 PDF 文件的链接: PDF-File
我需要使用PHP将PDF文件解析为图像.我是在Ghostscript的帮助下完成的.这是脚本:
$result = exec("gs -sDEVICE=png16m -sOutputFile=page-%03d.png $pdfname.pdf");
Run Code Online (Sandbox Code Playgroud)
但几乎所有最终图像都有白色边框(PDF页面没有这些边框).如何摆脱它们?也许在Ghostcript代码中有一些我找不到的方法,哪些方法会有所帮助.
这是一张图片 - > http://www.pictureshack.ru/images/88046_page-009.png
这是一个PDF文件的版画屏幕 - > http://www.pictureshack.ru/images/62869_pdf.PNG
我有两个图像(小和大).其中一个包含另一个.像一张图像的东西是一张照片,另一张图片是这张照片所在的photoalbum页面的图片.我希望你明白我说的话.
那么如何使用PHP获取大图像上的小图像的坐标(x,y)?
我是AngularJS的新人,我有一点问题.
这是我的代码:
JS:
<script>
var app = angular.module('appList', []);
app.controller('AppListCtrl', function ($scope, $http) {
$scope.url = 'getappinfo.php';
$http.post($scope.url).success(function (data) {
$scope.apps = data;
}).error(function (data) {
console.log(data, status);
});
})
app.directive('application', function () {
return {
restrict: "E",
replace: true,
scope: {
name: "@",
logo: "@"
},
template: "<div style='width:100px; height:100px; border:1px solid black'>{{name}} <img src='{{logo}}' style='width:50px'></div>"
}
})
</script>
Run Code Online (Sandbox Code Playgroud)
HTML:
<div ng-app="appList">
<div ng-controller="AppListCtrl" id='applications_holder'>
<div ng-repeat="app in apps">
<application name="{{app.name}}" logo="{{app.logo}}"></application>
</div>
</div>
</div>
Run Code Online (Sandbox Code Playgroud)
从getappinfo.php我得到一个包含几个对象的json数组......所有这些都有'name'和'logo'属性.一切正常.
但我仍然有一个困扰我的小问题:

这是我在Google Chrome控制台中收到的错误. …
我有一个.jar文件在我的mac上完美运行,但我需要在Web服务器上运行...所以当我使用命令行使这个文件工作时它给了我这个错误:
[root@mysite.com dist]$ java -jar PDFparser.jar ffive.pdf
Exception in thread "main" java.lang.NoSuchMethodError: method java.lang.String.getBytes with signature (Ljava.nio.charset.Charset;)[B was not found.
at org.apache.commons.io.IOUtils.write(IOUtils.java:1527)
at org.apache.commons.io.FileUtils.writeStringToFile(FileUtils.java:1929)
at org.apache.commons.io.FileUtils.writeStringToFile(FileUtils.java:1962)
at pdfparser.PDFparser.main(PDFparser.java:171)
Run Code Online (Sandbox Code Playgroud)
我不是那个创建.jar应用程序的人,但它的工作方式就像我在Mac上需要的那样...但是它需要它用于网站,所以我需要它在网络服务器上工作...有谁知道这个错误意味着什么,我该怎么办?我不懂Java语言所以如果你向我解释我应该怎么做才会很棒,就像我是一个非常愚蠢的人......一步一步...... :)
php ×6
ghostscript ×3
pdf ×3
angularjs ×1
asynchronous ×1
border ×1
coordinates ×1
image ×1
jar ×1
java ×1
orientation ×1
rotation ×1
src ×1
webserver ×1