मैं एक लिंक में पीडीएफ फ़ाइल डाउनलोड करने योग्य कैसे बना सकता हूं?पीडीएफबॉक्स (दूषित पीडीएफ) के साथ डाउनलोड करने योग्य पीडीएफ कैसे उत्पन्न करें?
मैं जेएसएफ का उपयोग कर एक वेब एप्लिकेशन बना रहा हूं, जब उपयोगकर्ता "पीडीएफ के रूप में सहेजें" लिंक पर क्लिक करता है तो पीडीएफ डाउनलोड होने के लिए उपलब्ध होना चाहिए।
अभी तक मेरे पास एक कामकाजी कोड है जो पीडीएफ फ़ाइल उत्पन्न करता है, लेकिन फ़ाइल मेरे डेस्कटॉप पर सहेजी जाती है और मैं क्या करना चाहता हूं यह है कि जब उपयोगकर्ता लिंक पर क्लिक करता है तो पीडीएफ फ़ाइल को डाउनलोड करने के बजाय डाउनलोड करने योग्य होना चाहिए ऐप में संग्रहीत।
अद्यतन 3: आपकी मदद के लोगों के लिए धन्यवाद, मैं अपने सुझाव के साथ मेरी कोड modifed और यह काम कर रहा।
अद्यतन 2: मैं निम्न त्रुटि हो रही है: Adoble रीडर "yourfile.pdf" खुल नहीं सका क्योंकि या तो नहीं एक समर्थित फ़ाइल प्रकार या है, क्योंकि फ़ाइल
क्षतिग्रस्त हो गया है अद्यतन 1: मैं परिवर्तन तुम मुझे बताया है साथ मेरे वर्तमान कोड जोड़ रहा है, तथापि मैं अभी भी इस काम
के लिए संघर्ष कर रहा हूँ Adoble रीडर "yourfile.pdf" खुल नहीं सका क्योंकि या तो नहीं एक:This is my method that generated the PDF:
public ByteArrayOutputStream createPDF() throws IOException, COSVisitorException {
PDDocument document;
PDPage page;
PDFont font;
PDPageContentStream contentStream;
PDJpeg front;
PDJpeg back;
InputStream inputFront;
InputStream inputBack;
ByteArrayOutputStream output = new ByteArrayOutputStream();
// Creating Document
document = new PDDocument();
// Creating Pages
for(int i=0; i<2; i++) {
page = new PDPage();
// Adding page to document
document.addPage(page);
// Adding FONT to document
font = PDType1Font.HELVETICA;
// Retrieve Image to be added to the PDF
inputFront = new FileInputStream(new File("D:/Media/imageFront.jpg"));
inputBack = new FileInputStream(new File("D:/Media/imageBack.jpg"));
BufferedImage buffFront = ImageIO.read(inputFront);
BufferedImage resizedFront = Scalr.resize(buffFront, 460);
BufferedImage buffBack = ImageIO.read(inputBack);
BufferedImage resizedBack = Scalr.resize(buffBack, 460);
front = new PDJpeg(document, resizedFront);
back = new PDJpeg(document, resizedBack);
// Next we start a new content stream which will "hold" the to be created content.
contentStream = new PDPageContentStream(document, page);
// Let's define the content stream
contentStream.beginText();
contentStream.setFont(font, 8);
contentStream.moveTextPositionByAmount(10, 770);
contentStream.drawString("Amount: $1.00");
contentStream.endText();
contentStream.beginText();
contentStream.setFont(font, 8);
contentStream.moveTextPositionByAmount(200, 770);
contentStream.drawString("Sequence Number: 123456789");
contentStream.endText();
contentStream.beginText();
contentStream.setFont(font, 8);
contentStream.moveTextPositionByAmount(10, 760);
contentStream.drawString("Account: 123456789");
contentStream.endText();
contentStream.beginText();
contentStream.setFont(font, 8);
contentStream.moveTextPositionByAmount(200, 760);
contentStream.drawString("Captura Date: 04/25/2011");
contentStream.endText();
contentStream.beginText();
contentStream.setFont(font, 8);
contentStream.moveTextPositionByAmount(10, 750);
contentStream.drawString("Bank Number: 123456789");
contentStream.endText();
contentStream.beginText();
contentStream.setFont(font, 8);
contentStream.moveTextPositionByAmount(200, 750);
contentStream.drawString("Check Number: 123456789");
contentStream.endText();
// Let's close the content stream
contentStream.close();
}
// Finally Let's save the PDF
document.save(output);
document.close();
return output;
}
This is my servlet that call the previous code and generates the output and set the header:
try {
ByteArrayOutputStream output = new ByteArrayOutputStream();
output = createPDF();
response.addHeader("Content-Type", "application/force-download");
response.addHeader("Content-Disposition", "attachment; filename=\"yourFile.pdf\"");
response.getOutputStream().write(output.toByteArray());
} catch (Exception ex) {
ex.printStackTrace();
}
मुझे यकीन है कि मैं के बाद से जब मैं पीडीएफ मैं त्रुटि मिली खोलने का प्रयास क्या याद कर रहा हूँ नहीं कर रहा हूँ समर्थित फ़ाइल प्रकार या क्योंकि फ़ाइल क्षतिग्रस्त हो गई है
पुन "अद्यतन 2", यह यह बग हो सकता है: http://issues.apache.org/jira/browse/PDFBOX-2026। इसे 1.8.5 में तय किया जाएगा। या एक स्नैपशॉट डाउनलोड करें। –
हैलो @ नाइट। मैं आपके द्वारा किए गए कार्यों के समान कुछ लागू करने की कोशिश कर रहा हूं। क्या आप कृपया अपने सर्वलेट के अंदर प्रतिक्रिया ऑब्जेक्ट घोषणा कर सकते हैं? या शायद पूरा कोड पोस्ट कर सकते हैं? – Erick