2013-08-21 2 views
0

Ниже приведен код для записи pdf-файла;Outputstream - создать не редактируемый pdf-файл

BaseFont bf = BaseFont.createFont(FONT, BaseFont.IDENTITY_H, BaseFont.EMBEDDED); 
FontSelector fs = new FontSelector(); 
fs.addFont(new Font(bf));     
String fileName = filePath3 + "//DEVIATION_REPORT.pdf"; 
OutputStream file = new FileOutputStream(new File(fileName)); 
Font smallFont = new Font(Font.FontFamily.COURIER, 6, Font.NORMAL); 
Font headerFont = new Font(Font.FontFamily.HELVETICA, 7, Font.BOLD); 
Font tabFont = new Font(Font.FontFamily.HELVETICA, 5, Font.NORMAL); 
Font rusFont = new Font(bf, 5);     
Font blueFont = new Font(bf, 5); 
blueFont.setColor(BaseColor.BLUE);     
Font redFont = new Font(bf, 5); 
redFont.setColor(BaseColor.RED); 

String comType; 
if (compType == 2) 
    comType = "Character"; 
else 
    comType = "Word"; 

Document doc = new Document(); 
PdfWriter.getInstance(doc, file);     
doc.open();    

Image image1 = Image.getInstance(cmdpath + "ScRp.jpg"); 
image1.setAlignment(Element.ALIGN_LEFT); 

Paragraph prg = new Paragraph("Compare", smallFont); 
prg.setAlignment(Element.ALIGN_RIGHT); 
doc.add(image1); 
doc.add(prg); 
doc.add(new Paragraph("__________________________________________________")); 
doc.add(new Paragraph("Passed Report")); 
doc.add(new Paragraph(" ")); 

PdfPTable table = new PdfPTable(2); 
PdfPCell cell1 = new PdfPCell(new Paragraph("No", headerFont)); 
cell1.setHorizontalAlignment(Element.ALIGN_CENTER); 
cell1.setPaddingBottom(5);     
PdfPCell cell2 = new PdfPCell(new Paragraph("Details", headerFont)); 
cell2.setHorizontalAlignment(Element.ALIGN_CENTER); 
cell2.setPaddingBottom(5);    
table.addCell(cell1); 
table.addCell(cell2); 
doc.add(table); 
doc.newPage(); 
doc.close(); 
file.close(); 

Как это сделать, если я хочу сделать PDF не редактируемым. Я пытался использовать

PdfEncryptor.encrypt( 
new PdfReader(fileName), 
new FileOutputStream("HelloWorldProtected.pdf"), 
null, 
"StrongPassword".getBytes(), 
PdfWriter.AllowPrinting, 
PdfWriter.STRENGTH128BITS); 

но компилятор останавливается здесь. Я ждал более 15 минут, но ничего не случилось.

Я даже делаю file.setreadOnly(), но он не может его сохранить после редактирования. Он по-прежнему позволяет пользователю редактировать. Пользователь может Сохраните AS документ и замените его на редактируемый.

Есть ли другой способ сделать файл незаменимым. Пожалуйста посоветуй.

ответ

0

Возможно, вы захотите использовать iText для такого рода работ, если это прекрасно с вашим проектом. Я не вижу другого варианта, как сейчас. Я лично использовал iText, и он довольно устойчив. Позвольте мне знать, если это помогает.

Edit:

  1. Encryption settings
  2. http://viralpatel.net/blogs/password-protect-pdf-itext-java/
  3. http://www.jarfinder.com/index.php/java/info/com.lowagie.text.pdf.interfaces.PdfEncryptionSettings
  4. Попробуйте найти больше на Google и SO

EDIT: долго ждали 15 минут. проблема может заключаться в разрешениях на запись файла в ваш путь к файлу.

+0

оценен, если вы могли бы поделиться своим рабочим кодом с частью readonly. –

+0

как упоминается как мой вопрос .. когда я делаю 'PdfWriter rptWritter = PdfWriter.getInstance (doc, file); rptWritter.setEncryption (USER_PASS.getBytes(), OWNER_PASS.getBytes(), PdfWriter.ALLOW_PRINTING, PdfWriter.ENCRYPTION_AES_128); отладчик останавливается здесь в течение длительного времени. Я не отвечаю, даже я ждал 15 минут. –

+0

Длительное ожидание 15 мин. проблема может заключаться в разрешениях на запись файла в ваш путь к файлу. –

 Смежные вопросы

  • Нет связанных вопросов^_^