怎么在服务器端使用Adobe reader 在线阅读PDF文件时候屏蔽掉打印、下载工具栏

怎么在服务器端使用Adobe reader 在线阅读PDF文件时候屏蔽掉打印、下载工具栏,第1张

import javaioFileOutputStream;
import comlowagietextDocument;
import comlowagietextFont;
import comlowagietextPageSize;
import comlowagietextParagraph;
import comlowagietextRectangle;
import comlowagietextpdfPdfContentByte;
import comlowagietextpdfPdfCopy;
import comlowagietextpdfPdfEncryptor;
import comlowagietextpdfPdfImportedPage;
import comlowagietextpdfPdfReader;
import comlowagietextpdfPdfWriter;
publicclass PdfHandle {
publicvoid hideBars(String inputFile,String outFile)
{
//复制一个PDF
try {
// 创建一个reader
PdfReader reader = new PdfReader(inputFile);
int n = readergetNumberOfPages();
// 得到第一页
Rectangle psize = readergetPageSize(1);
float width = psizeheight();
float height = psizewidth();

// step 1: 创建一个document对象
Document document = new Document(new Rectangle(width, height));
// step 2: 创建一个write
PdfCopy writer = new PdfCopy(document, new FileOutputStream(outFile));
//设置隐藏菜单栏和工具栏
writersetViewerPreferences(PdfWriterHideMenubar | PdfWriterHideToolbar);

// step 3: 打开 document
documentopen();
// step 4: 一页一页添加内容
int i = 0;
while (i < n) {
documentnewPage();
i++;
PdfImportedPage page1 = writergetImportedPage(reader, i);
writeraddPage(page1);
}

// step 5: 关闭document

documentclose();
}
catch (Exception de) {
deprintStackTrace();
}
}
publicvoid notAllowPrint(String inputFile,String outFile)
{
try {
PdfReader reader = new PdfReader(inputFile);
//设置加密权限
PdfEncryptorencrypt(reader,
new FileOutputStream(outFile),
null,
null,
PdfWriterAllowAssembly |PdfWriterAllowFillIn|PdfWriterAllowScreenReaders,
false);
}
catch(Exception e) {
eprintStackTrace();
}
}
publicstaticvoid main(String args[])
{
PdfHandle pp=new PdfHandle();
pphideBars("e://3pdf", "e://4pdf");
ppnotAllowPrint("e://4pdf", "e://5pdf");
}
}
以上程序测试过没有问题。使用时要加入itextjar到工程里面。
方法1.去掉工具栏。这个很简单。
方法2.屏蔽打印,这个方法其实屏蔽了很多权限,可以在文档中查到。Encrypt方法的第5个参数是受权参数,如果希望用户有什么权限则在这里面定义。如果第三个第四个参数里面定义了密码则用户打开文档就必须输入密码,如果授权为允许打印有定义了密码则不会达到我们单纯屏蔽打印按钮的目的。
权限由如下几种:
AllowPrinting
AllowModifyContents
AllowCopy
AllowModifyAnnotations
AllowFillIn
AllowScreenReaders
AllowAssembly
AllowDegradedPrinting

这个问题当时查了很多网页,问了好几个人,最后终于得到答案,比较简单,具体意思就是你忘记关掉什么了,好吧我具体也不懂!但是挺好用。
就是你的程序画图完了一定记得加上这个:
1、devoff()

===================================================
然后你再去打开你的Rplotpdf 就可以看见图形了。

2、在服务器上想要直接显示图形界面,需要安装一个软件,

library(Cairo)
CairoPNG('testpng') ## 打开画图
plot(graph)## 自定义画图
devoff()## 关闭画图
我自己的账号上也没试出来,你们可以参考这个试试。
>

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zz/10775393.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-11
下一篇 2023-05-11

发表评论

登录后才能评论

评论列表(0条)

保存