Browse Source

FOP-2740: PDF to PostScript tiling pattern error in Acrobat

git-svn-id: https://svn.apache.org/repos/asf/xmlgraphics/fop/trunk@1809628 13f79535-47bb-0310-9956-ffa450edef68
pull/6/head
Simon Steiner 6 years ago
parent
commit
4cd877a265

+ 2
- 1
fop-core/src/main/java/org/apache/fop/render/ps/PSDocumentHandler.java View File

//Setup for PostScript generation //Setup for PostScript generation
this.gen = new FOPPSGeneratorImpl(out); this.gen = new FOPPSGeneratorImpl(out);
this.gen.setPSLevel(psUtil.getLanguageLevel()); this.gen.setPSLevel(psUtil.getLanguageLevel());
this.gen.setAcrobatDownsample(psUtil.isAcrobatDownsample());
this.currentPageNumber = 0; this.currentPageNumber = 0;
this.documentBoundingBox = new Rectangle2D.Double(); this.documentBoundingBox = new Rectangle2D.Double();


ResourceHandler handler = new ResourceHandler(getUserAgent(), eventProducer, ResourceHandler handler = new ResourceHandler(getUserAgent(), eventProducer,
this.fontInfo, resTracker, this.formResources); this.fontInfo, resTracker, this.formResources);
handler.process(in, this.outputStream, handler.process(in, this.outputStream,
this.currentPageNumber, this.documentBoundingBox);
this.currentPageNumber, this.documentBoundingBox, psUtil);
this.outputStream.flush(); this.outputStream.flush();
} catch (DSCException e) { } catch (DSCException e) {
throw new RuntimeException(e.getMessage()); throw new RuntimeException(e.getMessage());

+ 6
- 0
fop-core/src/main/java/org/apache/fop/render/ps/PSRendererConfig.java View File

import org.apache.fop.render.RendererConfig; import org.apache.fop.render.RendererConfig;
import org.apache.fop.util.LogUtil; import org.apache.fop.util.LogUtil;


import static org.apache.fop.render.ps.PSRendererOption.ACROBAT_DOWNSAMPLE;
import static org.apache.fop.render.ps.PSRendererOption.AUTO_ROTATE_LANDSCAPE; import static org.apache.fop.render.ps.PSRendererOption.AUTO_ROTATE_LANDSCAPE;
import static org.apache.fop.render.ps.PSRendererOption.DSC_COMPLIANT; import static org.apache.fop.render.ps.PSRendererOption.DSC_COMPLIANT;
import static org.apache.fop.render.ps.PSRendererOption.LANGUAGE_LEVEL; import static org.apache.fop.render.ps.PSRendererOption.LANGUAGE_LEVEL;
return (PSRenderingMode) params.get(RENDERING_MODE); return (PSRenderingMode) params.get(RENDERING_MODE);
} }


public Boolean isAcrobatDownsample() {
return (Boolean) params.get(ACROBAT_DOWNSAMPLE);
}

/** /**
* The PostScript renderer configuration data parser. * The PostScript renderer configuration data parser.
*/ */
setBoolConfigParam(cfg, OPTIMIZE_RESOURCES); setBoolConfigParam(cfg, OPTIMIZE_RESOURCES);
setBoolConfigParam(cfg, SAFE_SET_PAGE_DEVICE); setBoolConfigParam(cfg, SAFE_SET_PAGE_DEVICE);
setBoolConfigParam(cfg, DSC_COMPLIANT); setBoolConfigParam(cfg, DSC_COMPLIANT);
setBoolConfigParam(cfg, ACROBAT_DOWNSAMPLE);
Configuration child = cfg.getChild("rendering"); Configuration child = cfg.getChild("rendering");
if (child != null) { if (child != null) {
config.params.put(RENDERING_MODE, config.params.put(RENDERING_MODE,

+ 3
- 0
fop-core/src/main/java/org/apache/fop/render/ps/PSRendererConfigurator.java View File

if (psConfig.getRenderingMode() != null) { if (psConfig.getRenderingMode() != null) {
psUtil.setRenderingMode(psConfig.getRenderingMode()); psUtil.setRenderingMode(psConfig.getRenderingMode());
} }
if (psConfig.isAcrobatDownsample() != null) {
psUtil.setAcrobatDownsample(psConfig.isAcrobatDownsample());
}
} }


@Override @Override

+ 2
- 1
fop-core/src/main/java/org/apache/fop/render/ps/PSRendererOption.java View File

SAFE_SET_PAGE_DEVICE("safe-set-page-device", false), SAFE_SET_PAGE_DEVICE("safe-set-page-device", false),
/** Indicates whether the PostScript output should be DSC compliant, default: true*/ /** Indicates whether the PostScript output should be DSC compliant, default: true*/
DSC_COMPLIANT("dsc-compliant", true), DSC_COMPLIANT("dsc-compliant", true),
RENDERING_MODE("rendering", PSRenderingMode.QUALITY);
RENDERING_MODE("rendering", PSRenderingMode.QUALITY),
ACROBAT_DOWNSAMPLE("acrobat-downsample", false);


private final String name; private final String name;
private final Object defaultValue; private final Object defaultValue;

+ 14
- 0
fop-core/src/main/java/org/apache/fop/render/ps/PSRenderingUtil.java View File

import org.apache.fop.render.ps.extensions.PSExtensionAttachment; import org.apache.fop.render.ps.extensions.PSExtensionAttachment;
import org.apache.fop.render.ps.extensions.PSSetupCode; import org.apache.fop.render.ps.extensions.PSSetupCode;


import static org.apache.fop.render.ps.PSRendererOption.ACROBAT_DOWNSAMPLE;
import static org.apache.fop.render.ps.PSRendererOption.AUTO_ROTATE_LANDSCAPE; import static org.apache.fop.render.ps.PSRendererOption.AUTO_ROTATE_LANDSCAPE;
import static org.apache.fop.render.ps.PSRendererOption.LANGUAGE_LEVEL; import static org.apache.fop.render.ps.PSRendererOption.LANGUAGE_LEVEL;
import static org.apache.fop.render.ps.PSRendererOption.OPTIMIZE_RESOURCES; import static org.apache.fop.render.ps.PSRendererOption.OPTIMIZE_RESOURCES;


private boolean autoRotateLandscape; private boolean autoRotateLandscape;
private int languageLevel = PSGenerator.DEFAULT_LANGUAGE_LEVEL; private int languageLevel = PSGenerator.DEFAULT_LANGUAGE_LEVEL;
private boolean acrobatDownsample;


/** Determines whether the PS file is generated in two passes to minimize file size */ /** Determines whether the PS file is generated in two passes to minimize file size */
private boolean optimizeResources; private boolean optimizeResources;
if (obj != null) { if (obj != null) {
setOptimizeResources(booleanValueOf(obj)); setOptimizeResources(booleanValueOf(obj));
} }
obj = userAgent.getRendererOptions().get(ACROBAT_DOWNSAMPLE.getName());
if (obj != null) {
setAcrobatDownsample(booleanValueOf(obj));
}
} }


private boolean booleanValueOf(Object obj) { private boolean booleanValueOf(Object obj) {
return languageLevel; return languageLevel;
} }


public void setAcrobatDownsample(boolean b) {
acrobatDownsample = b;
}

public boolean isAcrobatDownsample() {
return acrobatDownsample;
}

/** /**
* Controls whether PostScript resources are optimized in a second pass over the document. * Controls whether PostScript resources are optimized in a second pass over the document.
* Enable this to obtain smaller PostScript files. * Enable this to obtain smaller PostScript files.

+ 3
- 1
fop-core/src/main/java/org/apache/fop/render/ps/ResourceHandler.java View File

* @param pageCount the number of pages (given here because PSRenderer writes an "(atend)") * @param pageCount the number of pages (given here because PSRenderer writes an "(atend)")
* @param documentBoundingBox the document's bounding box * @param documentBoundingBox the document's bounding box
* (given here because PSRenderer writes an "(atend)") * (given here because PSRenderer writes an "(atend)")
* @param psUtil
* @throws DSCException If there's an error in the DSC structure of the PS file * @throws DSCException If there's an error in the DSC structure of the PS file
* @throws IOException In case of an I/O error * @throws IOException In case of an I/O error
*/ */
public void process(InputStream in, OutputStream out, public void process(InputStream in, OutputStream out,
int pageCount, Rectangle2D documentBoundingBox)
int pageCount, Rectangle2D documentBoundingBox, PSRenderingUtil psUtil)
throws DSCException, IOException { throws DSCException, IOException {
DSCParser parser = new DSCParser(in); DSCParser parser = new DSCParser(in);
parser.setCheckEOF(false); parser.setCheckEOF(false);


PSGenerator gen = new PSGenerator(out); PSGenerator gen = new PSGenerator(out);
gen.setAcrobatDownsample(psUtil.isAcrobatDownsample());
parser.addListener(new DefaultNestedDocumentHandler(gen)); parser.addListener(new DefaultNestedDocumentHandler(gen));
parser.addListener(new IncludeResourceListener(gen)); parser.addListener(new IncludeResourceListener(gen));



BIN
fop/lib/xmlgraphics-commons-svn-trunk.jar View File


Loading…
Cancel
Save