in src/java/org/apache/fop/render/pdf/pdfbox/AbstractPDFBoxHandler.java [52:117]
protected Object createStreamForPDF(ImagePDF image, PDFPage targetPage, FOUserAgent userAgent,
AffineTransform pageAdjust, FontInfo fontinfo, Rectangle destRect,
Map<String, Object> usedFieldNames, Map<Integer, PDFArray> pageNumbers,
PDFLogicalStructureHandler handler,
PDFStructElem curentSessionElem) throws IOException {
EventBroadcaster eventBroadcaster = null;
if (userAgent != null) {
eventBroadcaster = userAgent.getEventBroadcaster();
}
String originalImageUri = image.getInfo().getOriginalURI();
final int selectedPage = ImageUtil.needPageIndexFromURI(originalImageUri);
PDDocument srcDoc = image.getPDDocument();
float pdfVersion = srcDoc.getDocument().getVersion();
Version inputDocVersion = Version.getValueOf(String.valueOf(pdfVersion));
PDFDocument pdfDoc = targetPage.getDocument();
if (pdfDoc.getPDFVersion().compareTo(inputDocVersion) < 0) {
try {
pdfDoc.setPDFVersion(inputDocVersion);
} catch (IllegalStateException e) {
getEventProducer(eventBroadcaster).pdfVersionMismatch(this,
pdfDoc.getPDFVersionString(), String.valueOf(pdfVersion));
}
}
//Encryption test
if (srcDoc.isEncrypted()) {
getEventProducer(eventBroadcaster).encryptedPdf(this);
return null;
}
//Warn about potential problems with PDF/A and PDF/X
if (pdfDoc.getProfile().isPDFAActive()) {
getEventProducer(eventBroadcaster).pdfAActive(this);
}
if (pdfDoc.getProfile().isPDFXActive()) {
getEventProducer(eventBroadcaster).pdfXActive(this);
}
Map<Object, Object> objectCachePerFile = getObjectCache(getImagePath(originalImageUri), userAgent);
PDPage srcPage = srcDoc.getPage(selectedPage);
if (targetPage.getPDFResources().getParentResources() == null) {
PDFResources res = pdfDoc.getFactory().makeResources();
res.setParentResources(pdfDoc.getResources());
res.addContext(targetPage);
targetPage.put("Resources", res);
}
Map<Object, Object> objectCache = getObjectCache(getClass().getName(), userAgent);
PDFBoxAdapter adapter =
new PDFBoxAdapter(targetPage, objectCachePerFile, usedFieldNames, pageNumbers, objectCache);
if (handler != null) {
adapter.setCurrentMCID(handler.getPageParentTree().length());
}
Object stream =
adapter.createStreamFromPDFBoxPage(srcDoc, srcPage, originalImageUri, pageAdjust, fontinfo, destRect);
if (userAgent.isAccessibilityEnabled() && curentSessionElem != null) {
TaggedPDFConductor conductor = new TaggedPDFConductor(curentSessionElem, handler, srcPage, adapter);
conductor.handleLogicalStructure(srcDoc);
}
return stream;
}