mirror of
https://github.com/apache/xmlgraphics-fop.git
synced 2024-09-14 00:01:49 +02:00
Bugfix: render all background images as artifacts
git-svn-id: https://svn.apache.org/repos/asf/xmlgraphics/fop/branches/Temp_Accessibility@824808 13f79535-47bb-0310-9956-ffa450edef68
This commit is contained in:
parent
1958fe7719
commit
e3e19e881a
@ -155,13 +155,4 @@ public class IFContext {
|
||||
return this.structurePointer;
|
||||
}
|
||||
|
||||
/**
|
||||
* Indicates whether a structure pointer is available.
|
||||
* @return true if there's a structure pointer
|
||||
* @see #setStructurePointer(String)
|
||||
*/
|
||||
public boolean hasStructurePointer() {
|
||||
return (this.structurePointer != null) && (structurePointer.length() > 0);
|
||||
}
|
||||
|
||||
}
|
||||
|
@ -229,16 +229,6 @@ public class PDFContentGenerator {
|
||||
textutil.beginTextObject();
|
||||
}
|
||||
|
||||
/**
|
||||
* used for accessibility
|
||||
* separates a text element from fo:leader text element
|
||||
*/
|
||||
public void separateTextElementFromLeader() {
|
||||
if (!inArtifactMode) {
|
||||
separateTextElements(null, 0);
|
||||
}
|
||||
}
|
||||
|
||||
/** Indicates the beginning of a text object. */
|
||||
protected void beginTextObject() {
|
||||
if (!textutil.isInTextObject()) {
|
||||
|
@ -34,6 +34,7 @@ import org.apache.fop.pdf.PDFXObject;
|
||||
import org.apache.fop.render.ImageHandler;
|
||||
import org.apache.fop.render.RendererContext;
|
||||
import org.apache.fop.render.RenderingContext;
|
||||
import org.apache.fop.render.pdf.PDFLogicalStructureHandler.MarkedContentInfo;
|
||||
|
||||
/**
|
||||
* Image handler implementation which handles raw JPEG images for PDF output.
|
||||
@ -83,13 +84,8 @@ public class PDFImageHandlerRawJPEG implements PDFImageHandler, ImageHandler {
|
||||
float w = (float)pos.getWidth() / 1000f;
|
||||
float h = (float)pos.getHeight() / 1000f;
|
||||
if (context.getUserAgent().isAccessibilityEnabled()) {
|
||||
String structElemType = pdfContext.getStructElemType();
|
||||
if (structElemType != null && structElemType.length() > 0) {
|
||||
int sequenceNum = pdfContext.getSequenceNum();
|
||||
generator.placeImage(x, y, w, h, xobj, structElemType, sequenceNum);
|
||||
} else {
|
||||
generator.placeImage(x, y, w, h, xobj);
|
||||
}
|
||||
MarkedContentInfo mci = pdfContext.getMarkedContentInfo();
|
||||
generator.placeImage(x, y, w, h, xobj, mci.tag, mci.mcid);
|
||||
} else {
|
||||
generator.placeImage(x, y, w, h, xobj);
|
||||
}
|
||||
|
@ -34,6 +34,7 @@ import org.apache.fop.pdf.PDFXObject;
|
||||
import org.apache.fop.render.ImageHandler;
|
||||
import org.apache.fop.render.RendererContext;
|
||||
import org.apache.fop.render.RenderingContext;
|
||||
import org.apache.fop.render.pdf.PDFLogicalStructureHandler.MarkedContentInfo;
|
||||
|
||||
/**
|
||||
* Image handler implementation which handles RenderedImage instances for PDF output.
|
||||
@ -84,9 +85,8 @@ public class PDFImageHandlerRenderedImage implements PDFImageHandler, ImageHandl
|
||||
float w = (float)pos.getWidth() / 1000f;
|
||||
float h = (float)pos.getHeight() / 1000f;
|
||||
if (context.getUserAgent().isAccessibilityEnabled()) {
|
||||
String structElemType = pdfContext.getStructElemType();
|
||||
int sequenceNum = pdfContext.getSequenceNum();
|
||||
generator.placeImage(x, y, w, h, xobj, structElemType, sequenceNum);
|
||||
MarkedContentInfo mci = pdfContext.getMarkedContentInfo();
|
||||
generator.placeImage(x, y, w, h, xobj, mci.tag, mci.mcid);
|
||||
} else {
|
||||
generator.placeImage(x, y, w, h, xobj);
|
||||
}
|
||||
|
@ -40,6 +40,7 @@ import org.apache.fop.apps.FOUserAgent;
|
||||
import org.apache.fop.image.loader.batik.BatikImageFlavors;
|
||||
import org.apache.fop.render.ImageHandler;
|
||||
import org.apache.fop.render.RenderingContext;
|
||||
import org.apache.fop.render.pdf.PDFLogicalStructureHandler.MarkedContentInfo;
|
||||
import org.apache.fop.svg.PDFAElementBridge;
|
||||
import org.apache.fop.svg.PDFBridgeContext;
|
||||
import org.apache.fop.svg.PDFGraphics2D;
|
||||
@ -122,9 +123,8 @@ public class PDFImageHandlerSVG implements ImageHandler {
|
||||
generator.comment("SVG setup");
|
||||
generator.saveGraphicsState();
|
||||
if (context.getUserAgent().isAccessibilityEnabled()) {
|
||||
String structElemType = pdfContext.getStructElemType();
|
||||
int sequenceNum = pdfContext.getSequenceNum();
|
||||
generator.beginMarkedContentSequence(structElemType, sequenceNum);
|
||||
MarkedContentInfo mci = pdfContext.getMarkedContentInfo();
|
||||
generator.beginMarkedContentSequence(mci.tag, mci.mcid);
|
||||
}
|
||||
generator.setColor(Color.black, false);
|
||||
generator.setColor(Color.black, true);
|
||||
|
@ -131,7 +131,7 @@ public class PDFPainter extends AbstractIFPainter {
|
||||
throws IFException {
|
||||
PDFXObject xobject = getPDFDoc().getXObject(uri);
|
||||
if (xobject != null) {
|
||||
if (accessEnabled && getContext().hasStructurePointer()) {
|
||||
if (accessEnabled) {
|
||||
String ptr = getContext().getStructurePointer();
|
||||
prepareImageMCID(ptr);
|
||||
placeImageAccess(rect, xobject);
|
||||
@ -139,7 +139,7 @@ public class PDFPainter extends AbstractIFPainter {
|
||||
placeImage(rect, xobject);
|
||||
}
|
||||
} else {
|
||||
if (accessEnabled && getContext().hasStructurePointer()) {
|
||||
if (accessEnabled) {
|
||||
String ptr = getContext().getStructurePointer();
|
||||
prepareImageMCID(ptr);
|
||||
}
|
||||
@ -156,8 +156,7 @@ public class PDFPainter extends AbstractIFPainter {
|
||||
protected RenderingContext createRenderingContext() {
|
||||
PDFRenderingContext pdfContext = new PDFRenderingContext(
|
||||
getUserAgent(), generator, this.documentHandler.currentPage, getFontInfo());
|
||||
pdfContext.setMCID(imageMCI.mcid);
|
||||
pdfContext.setStructElemType(imageMCI.tag);
|
||||
pdfContext.setMarkedContentInfo(imageMCI);
|
||||
return pdfContext;
|
||||
}
|
||||
|
||||
@ -198,7 +197,7 @@ public class PDFPainter extends AbstractIFPainter {
|
||||
|
||||
/** {@inheritDoc} */
|
||||
public void drawImage(Document doc, Rectangle rect) throws IFException {
|
||||
if (accessEnabled && getContext().hasStructurePointer()) {
|
||||
if (accessEnabled) {
|
||||
String ptr = getContext().getStructurePointer();
|
||||
prepareImageMCID(ptr);
|
||||
}
|
||||
@ -298,22 +297,12 @@ public class PDFPainter extends AbstractIFPainter {
|
||||
throws IFException {
|
||||
if (accessEnabled) {
|
||||
String ptr = getContext().getStructurePointer();
|
||||
if (ptr != null && ptr.length() > 0) {
|
||||
MarkedContentInfo mci = logicalStructureHandler.addTextContentItem(ptr);
|
||||
if (generator.getTextUtil().isInTextObject()) {
|
||||
generator.separateTextElements(mci.tag, mci.mcid);
|
||||
}
|
||||
generator.updateColor(state.getTextColor(), true, null);
|
||||
generator.beginTextObjectAccess(mci.tag, mci.mcid);
|
||||
} else {
|
||||
// <fo:leader leader-pattern="use-content">
|
||||
// Leader content is marked as "/Artifact"
|
||||
if (generator.getTextUtil().isInTextObject()) {
|
||||
generator.separateTextElementFromLeader();
|
||||
}
|
||||
generator.updateColor(state.getTextColor(), true, null);
|
||||
generator.beginLeaderTextObject();
|
||||
MarkedContentInfo mci = logicalStructureHandler.addTextContentItem(ptr);
|
||||
if (generator.getTextUtil().isInTextObject()) {
|
||||
generator.separateTextElements(mci.tag, mci.mcid);
|
||||
}
|
||||
generator.updateColor(state.getTextColor(), true, null);
|
||||
generator.beginTextObjectAccess(mci.tag, mci.mcid);
|
||||
} else {
|
||||
generator.updateColor(state.getTextColor(), true, null);
|
||||
generator.beginTextObject();
|
||||
|
@ -25,6 +25,7 @@ import org.apache.fop.apps.FOUserAgent;
|
||||
import org.apache.fop.fonts.FontInfo;
|
||||
import org.apache.fop.pdf.PDFPage;
|
||||
import org.apache.fop.render.AbstractRenderingContext;
|
||||
import org.apache.fop.render.pdf.PDFLogicalStructureHandler.MarkedContentInfo;
|
||||
|
||||
/**
|
||||
* Rendering context for PDF production.
|
||||
@ -34,11 +35,7 @@ public class PDFRenderingContext extends AbstractRenderingContext {
|
||||
private PDFContentGenerator generator;
|
||||
private FontInfo fontInfo;
|
||||
private PDFPage page;
|
||||
/** Temp. val. for accessibility, used in PDFImageHandlerRenderedImage */
|
||||
private String structElemType = "";
|
||||
|
||||
/** Temp. val. for accessibility, used in PDFImageHandlerRenderedImage */
|
||||
private int mcid = -1;
|
||||
private MarkedContentInfo mci;
|
||||
|
||||
/**
|
||||
* Main constructor.
|
||||
@ -84,35 +81,11 @@ public class PDFRenderingContext extends AbstractRenderingContext {
|
||||
return this.fontInfo;
|
||||
}
|
||||
|
||||
/**
|
||||
* Used for accessibility, used in PDFPainter.drawImage
|
||||
* @param value to be stored
|
||||
*/
|
||||
public void setMCID(int value) {
|
||||
mcid = value;
|
||||
void setMarkedContentInfo(MarkedContentInfo mci) {
|
||||
this.mci = mci;
|
||||
}
|
||||
|
||||
/**
|
||||
* Used for accessibility
|
||||
* @return mcid
|
||||
*/
|
||||
public int getSequenceNum() {
|
||||
return mcid;
|
||||
}
|
||||
|
||||
/**
|
||||
* Used for accessibility
|
||||
* @param s the type of the structure element
|
||||
*/
|
||||
public void setStructElemType(String s) {
|
||||
structElemType = s;
|
||||
}
|
||||
|
||||
/**
|
||||
* Used for accessibility
|
||||
* @return the type of the structure element
|
||||
*/
|
||||
public String getStructElemType() {
|
||||
return structElemType;
|
||||
MarkedContentInfo getMarkedContentInfo() {
|
||||
return mci;
|
||||
}
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user