Author: vhennebert
Date: Tue Aug 31 14:20:22 2010
New Revision: 991203
URL: http://svn.apache.org/viewvc?rev=991203&view=rev
Log:
Do not issue a warning if renderer configured to output PostScript level 3.
Throw an error instead when it is not the case.
Pass the event producer around.
Modified:
xmlgraphics/fop/branches/Temp_TrueTypeInPostScript/src/java/org/apache/fop/render/ps/PSDocumentHandler.java
xmlgraphics/fop/branches/Temp_TrueTypeInPostScript/src/java/org/apache/fop/render/ps/PSEventProducer.java
xmlgraphics/fop/branches/Temp_TrueTypeInPostScript/src/java/org/apache/fop/render/ps/PSEventProducer.xml
xmlgraphics/fop/branches/Temp_TrueTypeInPostScript/src/java/org/apache/fop/render/ps/PSFontUtils.java
xmlgraphics/fop/branches/Temp_TrueTypeInPostScript/src/java/org/apache/fop/render/ps/ResourceHandler.java
Modified:
xmlgraphics/fop/branches/Temp_TrueTypeInPostScript/src/java/org/apache/fop/render/ps/PSDocumentHandler.java
URL:
http://svn.apache.org/viewvc/xmlgraphics/fop/branches/Temp_TrueTypeInPostScript/src/java/org/apache/fop/render/ps/PSDocumentHandler.java?rev=991203&r1=991202&r2=991203&view=diff
==============================================================================
---
xmlgraphics/fop/branches/Temp_TrueTypeInPostScript/src/java/org/apache/fop/render/ps/PSDocumentHandler.java
(original)
+++
xmlgraphics/fop/branches/Temp_TrueTypeInPostScript/src/java/org/apache/fop/render/ps/PSDocumentHandler.java
Tue Aug 31 14:20:22 2010
@@ -49,6 +49,7 @@ import org.apache.xmlgraphics.ps.dsc.Res
import org.apache.xmlgraphics.ps.dsc.events.DSCCommentBoundingBox;
import org.apache.xmlgraphics.ps.dsc.events.DSCCommentHiResBoundingBox;
+import org.apache.fop.apps.FOUserAgent;
import org.apache.fop.apps.MimeConstants;
import
org.apache.fop.render.intermediate.AbstractBinaryWritingIFDocumentHandler;
import org.apache.fop.render.intermediate.IFContext;
@@ -104,6 +105,8 @@ public class PSDocumentHandler extends A
private static final int COMMENT_DOCUMENT_TRAILER = 1;
private static final int COMMENT_PAGE_TRAILER = 2;
+ private PSEventProducer eventProducer;
+
/**
* Default constructor.
*/
@@ -123,7 +126,9 @@ public class PSDocumentHandler extends A
/** {...@inheritdoc} */
public void setContext(IFContext context) {
super.setContext(context);
- this.psUtil = new PSRenderingUtil(context.getUserAgent());
+ FOUserAgent userAgent = context.getUserAgent();
+ this.psUtil = new PSRenderingUtil(userAgent);
+ eventProducer =
PSEventProducer.Provider.get(userAgent.getEventBroadcaster());
}
/** {...@inheritdoc} */
@@ -142,7 +147,7 @@ public class PSDocumentHandler extends A
try {
OutputStream out;
if (psUtil.isOptimizeResources()) {
- this.tempFile = File.createTempFile("fop", null);
+ this.tempFile = File.createTempFile("fop", ".ps");
out = new java.io.FileOutputStream(this.tempFile);
out = new java.io.BufferedOutputStream(out);
} else {
@@ -200,8 +205,7 @@ public class PSDocumentHandler extends A
gen.writeDSCComment(DSCConstants.BEGIN_SETUP);
PSRenderingUtil.writeSetupCodeList(gen, setupCodeList, "SetupCode");
if (!psUtil.isOptimizeResources()) {
- this.fontResources.addAll(PSFontUtils.writeFontDict(gen, fontInfo,
-
PSEventProducer.Provider.get(getUserAgent().getEventBroadcaster())));
+ this.fontResources.addAll(PSFontUtils.writeFontDict(gen, fontInfo,
eventProducer));
} else {
gen.commentln("%FOPFontSetup"); //Place-holder, will be replaced
in the second pass
}
@@ -256,8 +260,8 @@ public class PSDocumentHandler extends A
in = new java.io.BufferedInputStream(in);
try {
try {
- ResourceHandler handler = new ResourceHandler(getUserAgent(),
this.fontInfo,
- resTracker, this.formResources);
+ ResourceHandler handler = new ResourceHandler(getUserAgent(),
eventProducer,
+ this.fontInfo, resTracker, this.formResources);
handler.process(in, this.outputStream,
this.currentPageNumber, this.documentBoundingBox);
this.outputStream.flush();
Modified:
xmlgraphics/fop/branches/Temp_TrueTypeInPostScript/src/java/org/apache/fop/render/ps/PSEventProducer.java
URL:
http://svn.apache.org/viewvc/xmlgraphics/fop/branches/Temp_TrueTypeInPostScript/src/java/org/apache/fop/render/ps/PSEventProducer.java?rev=991203&r1=991202&r2=991203&view=diff
==============================================================================
---
xmlgraphics/fop/branches/Temp_TrueTypeInPostScript/src/java/org/apache/fop/render/ps/PSEventProducer.java
(original)
+++
xmlgraphics/fop/branches/Temp_TrueTypeInPostScript/src/java/org/apache/fop/render/ps/PSEventProducer.java
Tue Aug 31 14:20:22 2010
@@ -29,7 +29,7 @@ public interface PSEventProducer extends
/** Provider class for the event producer. */
final class Provider {
-
+
private Provider() {
}
@@ -54,10 +54,10 @@ public interface PSEventProducer extends
void postscriptDictionaryParseError(Object source, String content,
Exception e);
/**
- * PostScript Level 3 features are being used.
+ * PostScript Level 3 features are necessary.
*
* @param source the event source
- * @event.severity WARN
+ * @event.severity FATAL
*/
- void postscriptLevel3Used(Object source);
+ void postscriptLevel3Needed(Object source);
}
Modified:
xmlgraphics/fop/branches/Temp_TrueTypeInPostScript/src/java/org/apache/fop/render/ps/PSEventProducer.xml
URL:
http://svn.apache.org/viewvc/xmlgraphics/fop/branches/Temp_TrueTypeInPostScript/src/java/org/apache/fop/render/ps/PSEventProducer.xml?rev=991203&r1=991202&r2=991203&view=diff
==============================================================================
---
xmlgraphics/fop/branches/Temp_TrueTypeInPostScript/src/java/org/apache/fop/render/ps/PSEventProducer.xml
(original)
+++
xmlgraphics/fop/branches/Temp_TrueTypeInPostScript/src/java/org/apache/fop/render/ps/PSEventProducer.xml
Tue Aug 31 14:20:22 2010
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?>
<catalogue xml:lang="en">
<message key="postscriptDictionaryParseError">Failed to parse dictionary
string. Reason: {e}, content = "{content}"</message>
- <message key="postscriptLevel3Used">PostScript Level 3 features are needed
to handle this document. Please make sure that your printer supports PostScript
Level 3.</message>
+ <message key="postscriptLevel3Needed">PostScript Level 3 features are needed
to handle this document.</message>
</catalogue>
Modified:
xmlgraphics/fop/branches/Temp_TrueTypeInPostScript/src/java/org/apache/fop/render/ps/PSFontUtils.java
URL:
http://svn.apache.org/viewvc/xmlgraphics/fop/branches/Temp_TrueTypeInPostScript/src/java/org/apache/fop/render/ps/PSFontUtils.java?rev=991203&r1=991202&r2=991203&view=diff
==============================================================================
---
xmlgraphics/fop/branches/Temp_TrueTypeInPostScript/src/java/org/apache/fop/render/ps/PSFontUtils.java
(original)
+++
xmlgraphics/fop/branches/Temp_TrueTypeInPostScript/src/java/org/apache/fop/render/ps/PSFontUtils.java
Tue Aug 31 14:20:22 2010
@@ -77,9 +77,19 @@ public class PSFontUtils extends org.apa
*/
public static Map writeFontDict(PSGenerator gen, FontInfo fontInfo)
throws IOException {
- return writeFontDict(gen, fontInfo, (PSEventProducer) null);
+ return writeFontDict(gen, fontInfo, null);
}
+ /**
+ * Generates the PostScript code for the font dictionary. This method
should only be
+ * used if no "resource optimization" is performed, i.e. when the fonts
are not embedded
+ * in a second pass.
+ * @param gen PostScript generator to use for output
+ * @param fontInfo available fonts
+ * @param eventProducer to report events
+ * @return a Map of PSResource instances representing all defined fonts
(key: font key)
+ * @throws IOException in case of an I/O problem
+ */
public static Map writeFontDict(PSGenerator gen, FontInfo fontInfo,
PSEventProducer eventProducer) throws IOException {
return writeFontDict(gen, fontInfo, fontInfo.getFonts(), true,
eventProducer);
@@ -92,12 +102,13 @@ public class PSFontUtils extends org.apa
* @param gen PostScript generator to use for output
* @param fontInfo available fonts
* @param fonts the set of fonts to work with
+ * @param eventProducer the event producer
* @return a Map of PSResource instances representing all defined fonts
(key: font key)
* @throws IOException in case of an I/O problem
*/
- public static Map writeFontDict(PSGenerator gen, FontInfo fontInfo, Map
fonts)
- throws IOException {
- return writeFontDict(gen, fontInfo, fonts, false, null);
+ public static Map writeFontDict(PSGenerator gen, FontInfo fontInfo, Map
fonts,
+ PSEventProducer eventProducer) throws IOException {
+ return writeFontDict(gen, fontInfo, fonts, false, eventProducer);
}
/**
@@ -224,14 +235,12 @@ public class PSFontUtils extends org.apa
if (in != null) {
if (fontType == FontType.TYPE0) {
if (gen.embedIdentityH()) {
+ checkPostScriptVersion(gen, eventProducer);
/*
* First CID-keyed font to be embedded; add
* %%IncludeResource: comment for ProcSet
CIDInit.
*/
gen.includeProcsetCIDInitResource();
- if (eventProducer != null) {
- eventProducer.postscriptLevel3Used(gen);
- }
}
PSResource cidFontResource = embedCIDFont(gen,
(MultiByteFont) tf, in);
fontResource =
PSFontResource.createFontResource(fontRes,
@@ -268,6 +277,19 @@ public class PSFontUtils extends org.apa
return fontResource;
}
+ private static void checkPostScriptVersion(PSGenerator gen,
PSEventProducer eventProducer) {
+ if (gen.getPSLevel() < 3) {
+ if (eventProducer != null) {
+ eventProducer.postscriptLevel3Needed(gen);
+ } else {
+ throw new IllegalStateException("PostScript Level 3 is"
+ + " required to use TrueType fonts,"
+ + " configured level is "
+ + gen.getPSLevel());
+ }
+ }
+ }
+
private static void embedTrueTypeFont(PSGenerator gen,
SingleByteFont font, InputStream fontStream) throws IOException {
/* See Adobe Technical Note #5012, "The Type 42 Font Format
Specification" */
@@ -607,6 +629,7 @@ public class PSFontUtils extends org.apa
private static PSResource defineDerivedTrueTypeFont(PSGenerator gen,
PSEventProducer eventProducer, String baseFontName, String
fontName,
SingleByteEncoding encoding, List cmaps) throws IOException {
+ checkPostScriptVersion(gen, eventProducer);
PSResource res = new PSResource(PSResource.TYPE_FONT, fontName);
gen.writeDSCComment(DSCConstants.BEGIN_RESOURCE, res);
gen.commentln("%XGCDependencies: font " + baseFontName);
Modified:
xmlgraphics/fop/branches/Temp_TrueTypeInPostScript/src/java/org/apache/fop/render/ps/ResourceHandler.java
URL:
http://svn.apache.org/viewvc/xmlgraphics/fop/branches/Temp_TrueTypeInPostScript/src/java/org/apache/fop/render/ps/ResourceHandler.java?rev=991203&r1=991202&r2=991203&view=diff
==============================================================================
---
xmlgraphics/fop/branches/Temp_TrueTypeInPostScript/src/java/org/apache/fop/render/ps/ResourceHandler.java
(original)
+++
xmlgraphics/fop/branches/Temp_TrueTypeInPostScript/src/java/org/apache/fop/render/ps/ResourceHandler.java
Tue Aug 31 14:20:22 2010
@@ -83,6 +83,8 @@ public class ResourceHandler implements
private FOUserAgent userAgent;
private FontInfo fontInfo;
+ private PSEventProducer eventProducer;
+
private ResourceTracker resTracker;
//key: URI, values PSImageFormResource
@@ -93,13 +95,15 @@ public class ResourceHandler implements
/**
* Main constructor.
* @param userAgent the FO user agent
+ * @param eventProducer the event producer
* @param fontInfo the font information
* @param resTracker the resource tracker to use
* @param formResources Contains all forms used by this document
(maintained by PSRenderer)
*/
- public ResourceHandler(FOUserAgent userAgent, FontInfo fontInfo,
- ResourceTracker resTracker, Map formResources) {
+ public ResourceHandler(FOUserAgent userAgent, PSEventProducer
eventProducer,
+ FontInfo fontInfo, ResourceTracker resTracker, Map formResources) {
this.userAgent = userAgent;
+ this.eventProducer = eventProducer;
this.fontInfo = fontInfo;
this.resTracker = resTracker;
determineInlineForms(formResources);
@@ -222,7 +226,7 @@ public class ResourceHandler implements
if (fontSetupPlaceholder == null) {
throw new DSCException("Didn't find %FOPFontSetup comment in
stream");
}
- PSFontUtils.writeFontDict(gen, fontInfo, fontInfo.getUsedFonts());
+ PSFontUtils.writeFontDict(gen, fontInfo, fontInfo.getUsedFonts(),
eventProducer);
generateForms(globalFormResources, gen);
//Skip the prolog and to the first page
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]