हां, बीआईआरटी प्रत्येक पृष्ठ के लिए एक ही पृष्ठभूमि छवि का एक नया अवतार बनाएगा। दुर्भाग्यवश यह org/eclipse/birt/report/engine/emitter/pdf/PDFPage.java
में आसानी से अच्छी तरह से हैक करने के लिए बहुत गहराई से दफनाया गया है, और यह निश्चित रूप से कॉन्फ़िगर करने योग्य नहीं है।
लेकिन निराशा नहीं! आप iText (बीआईआरटी द्वारा आंतरिक रूप से उपयोग किए जाने वाले वही iText) का उपयोग कर सकते हैं PdfSmartCopy
के साथ डुप्लिकेट इकाइयों को खत्म करें। की तर्ज पर कुछ:
PdfReader reader = new PdfReader(PDF_IN_FROM_BIRT);
Document document = new Document();
PdfSmartCopy copy = new PdfSmartCopy(document,
new FileOutputStream(PDF_OUT_NO_DUPLICATES));
document.open();
for (int page = 1; page <= reader.getNumberOfPages(); page++) {
copy.addPage(copy.getImportedPage(reader, page));
}
document.close();
ऊपर तो स्वीकार्य नहीं है, तो आप पैच com.itextpdf.text.Image.getInstance(URL)
एक सिंगलटन की तरह ढंग में व्यवहार करने के लिए कर सकते हैं, किसी मौजूदा com.itextpdf.text.Image
वस्तु लौटने अगर छवि पहले से ही से प्राप्त किया गया था अतीत में URL
। आप बीआईआरटी द्वारा उपयोग किए गए आईटेक्स्ट जेएआर को पैच और पुनर्निर्माण कर सकते हैं, या रीकंपिलेशन की आवश्यकता के बिना रनटाइम पर कोड इंजेक्शन करने के लिए Javassist का उपयोग कर सकते हैं।
+1 दिलचस्प सवाल। मैंने कभी यह नहीं देखा ... – ChristopheD