急急急!!!如何用java把可编辑的pdf文档转换成不可编辑的pdf文档
4个回答
展开全部
坦率的说,这个问题就是个调用开源框架itext.jar的api问题,复制一段:
书写器(Writer)对象
iText提供了对PDF文件的安全保护,通过书写器(Writer)的setEncryption方法,可以设定文档的用户口令、只读、可打印等属性。
一旦文档(document)对象建立好之后,需要建立一个或多个书写器(Writer)对象与之关联。通过书写器(Writer)对象可以将具体文档存盘成需要的格式,如com.lowagie.text.PDF.PDFWriter可以将文档存成PDF文件, com.lowagie.text.html.HtmlWriter可以将文档存成html文件。
设定文档属性
在文档打开之前,可以设定文档的标题、主题、作者、关键字、装订方式、创建者、生产者、创建日期等属性,调用的方法分别是:
public boolean addTitle(String title)
public boolean addSubject(String subject)
public boolean addKeywords(String keywords)
public boolean addAuthor(String author)
public boolean addCreator(String creator)
public boolean addProducer()
public boolean addCreationDate()
public boolean addHeader(String name, String content)
其中方法addHeader对于PDF文档无效,addHeader仅对html文档有效,用于添加文档的头信息。
当新的页面产生之前,可以设定页面的大小、书签、脚注(HeaderFooter)等信息,调用的方法是:
public boolean setPageSize(Rectangle pageSize)
public boolean add(Watermark watermark)
public void removeWatermark()
public void setHeader(HeaderFooter header)
public void resetHeader()
public void setFooter(HeaderFooter footer)
public void resetFooter()
public void resetPageCount()
public void setPageCount(int pageN)
如果要设定第一页的页面属性,这些方法必须在文档打开之前调用。
对于PDF文档,iText还提供了文档的显示属性,通过调用书写器的setViewerPreferences方法可以控制文档打开时Acrobat Reader的显示属性,如是否单页显示、是否全屏显示、是否隐藏状态条等属性。
iText提供了对PDF文件的安全保护,通过书写器(Writer)的setEncryption方法,可以设定文档的用户口令、只读、可打印等属性。
书写器(Writer)对象
iText提供了对PDF文件的安全保护,通过书写器(Writer)的setEncryption方法,可以设定文档的用户口令、只读、可打印等属性。
一旦文档(document)对象建立好之后,需要建立一个或多个书写器(Writer)对象与之关联。通过书写器(Writer)对象可以将具体文档存盘成需要的格式,如com.lowagie.text.PDF.PDFWriter可以将文档存成PDF文件, com.lowagie.text.html.HtmlWriter可以将文档存成html文件。
设定文档属性
在文档打开之前,可以设定文档的标题、主题、作者、关键字、装订方式、创建者、生产者、创建日期等属性,调用的方法分别是:
public boolean addTitle(String title)
public boolean addSubject(String subject)
public boolean addKeywords(String keywords)
public boolean addAuthor(String author)
public boolean addCreator(String creator)
public boolean addProducer()
public boolean addCreationDate()
public boolean addHeader(String name, String content)
其中方法addHeader对于PDF文档无效,addHeader仅对html文档有效,用于添加文档的头信息。
当新的页面产生之前,可以设定页面的大小、书签、脚注(HeaderFooter)等信息,调用的方法是:
public boolean setPageSize(Rectangle pageSize)
public boolean add(Watermark watermark)
public void removeWatermark()
public void setHeader(HeaderFooter header)
public void resetHeader()
public void setFooter(HeaderFooter footer)
public void resetFooter()
public void resetPageCount()
public void setPageCount(int pageN)
如果要设定第一页的页面属性,这些方法必须在文档打开之前调用。
对于PDF文档,iText还提供了文档的显示属性,通过调用书写器的setViewerPreferences方法可以控制文档打开时Acrobat Reader的显示属性,如是否单页显示、是否全屏显示、是否隐藏状态条等属性。
iText提供了对PDF文件的安全保护,通过书写器(Writer)的setEncryption方法,可以设定文档的用户口令、只读、可打印等属性。
追问
其实我的问题无非就是用java程序把文档版的pdf文档转成电子版(即扫描版-不可选中内容复制)的pdf文档,这也是两年前刚开始上班的时候公司布置的任务。
展开全部
我写了一段测试代码,通过设置编辑时必须录入密码来控制没有密码的用户不可编辑
package testjava.test;
import java.io.File;
import java.io.IOException;
import org.apache.pdfbox.exceptions.COSVisitorException;
import org.apache.pdfbox.pdmodel.PDDocument;
import org.apache.pdfbox.pdmodel.encryption.AccessPermission;
import org.apache.pdfbox.pdmodel.encryption.BadSecurityHandlerException;
import org.apache.pdfbox.pdmodel.encryption.StandardProtectionPolicy;
/**
*
* @author sim_liang
*/
public class TestPDF {
public static void setPdfReadonly(File pdfFile) throws IOException, BadSecurityHandlerException, COSVisitorException {
PDDocument _pdfDocument = PDDocument.load(pdfFile.getPath());
_pdfDocument.getNumberOfPages();
AccessPermission _accessPermission = new AccessPermission();
_accessPermission.setCanModify(false);
_accessPermission.setReadOnly();
StandardProtectionPolicy spp = new StandardProtectionPolicy("owner-password", "", _accessPermission); //owner-password is modify password
spp.setEncryptionKeyLength(128);
_pdfDocument.protect(spp);
_pdfDocument.save(pdfFile.getPath());
_pdfDocument.close();
}
//
// fields
//
public static void main(String[] args) throws IOException, BadSecurityHandlerException, COSVisitorException {
File pdfFile = new File("D:\\test.pdf");
setPdfReadonly(pdfFile);
}
}
package testjava.test;
import java.io.File;
import java.io.IOException;
import org.apache.pdfbox.exceptions.COSVisitorException;
import org.apache.pdfbox.pdmodel.PDDocument;
import org.apache.pdfbox.pdmodel.encryption.AccessPermission;
import org.apache.pdfbox.pdmodel.encryption.BadSecurityHandlerException;
import org.apache.pdfbox.pdmodel.encryption.StandardProtectionPolicy;
/**
*
* @author sim_liang
*/
public class TestPDF {
public static void setPdfReadonly(File pdfFile) throws IOException, BadSecurityHandlerException, COSVisitorException {
PDDocument _pdfDocument = PDDocument.load(pdfFile.getPath());
_pdfDocument.getNumberOfPages();
AccessPermission _accessPermission = new AccessPermission();
_accessPermission.setCanModify(false);
_accessPermission.setReadOnly();
StandardProtectionPolicy spp = new StandardProtectionPolicy("owner-password", "", _accessPermission); //owner-password is modify password
spp.setEncryptionKeyLength(128);
_pdfDocument.protect(spp);
_pdfDocument.save(pdfFile.getPath());
_pdfDocument.close();
}
//
// fields
//
public static void main(String[] args) throws IOException, BadSecurityHandlerException, COSVisitorException {
File pdfFile = new File("D:\\test.pdf");
setPdfReadonly(pdfFile);
}
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
渲染一下就可以了
追问
会的话就具体说一下,大不了加分,不会就不要故弄玄虚了
追答
直接渲染就可以了,这么简单的问题,还要 故弄玄虚???
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
学校的作业吧?变成不可以编辑的其实下载个PDF编辑更改器就可以实现。祝你成功。
追问
不是学校的作业,要用java程序实现的,投机取巧是不可以的
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询
广告 您可能关注的内容 |