FOP-2753: PDF to PS allow fop fonts as fallback, add close
git-svn-id: https://svn.apache.org/repos/asf/xmlgraphics/fop-pdf-images/trunk@1812128 13f79535-47bb-0310-9956-ffa450edef68
diff --git a/src/java/org/apache/fop/render/pdf/pdfbox/ImageConverterPDF2G2D.java b/src/java/org/apache/fop/render/pdf/pdfbox/ImageConverterPDF2G2D.java
index e46a176..c9bcb1c 100644
--- a/src/java/org/apache/fop/render/pdf/pdfbox/ImageConverterPDF2G2D.java
+++ b/src/java/org/apache/fop/render/pdf/pdfbox/ImageConverterPDF2G2D.java
@@ -147,6 +147,7 @@
/** {@inheritDoc} */
public void paint(Graphics2D g2d, Rectangle2D area) {
+ fopFontProvider.start();
try {
PDRectangle mediaBox = page.getCropBox();
AffineTransform at = new AffineTransform();
@@ -156,17 +157,19 @@
}
if (g2d instanceof PSGraphics2D && new PageUtil().pageHasTransparency(page.getResources())) {
drawPageAsImage(at, g2d);
- return;
+ } else {
+ at.translate(area.getX(), area.getY());
+ at.scale(area.getWidth() / mediaBox.getWidth(),
+ area.getHeight() / mediaBox.getHeight());
+ g2d.transform(at);
+ new PDFRenderer(pdDocument).renderPageToGraphics(selectedPage, g2d);
}
- at.translate(area.getX(), area.getY());
- at.scale(area.getWidth() / mediaBox.getWidth(),
- area.getHeight() / mediaBox.getHeight());
- g2d.transform(at);
- new PDFRenderer(pdDocument).renderPageToGraphics(selectedPage, g2d);
} catch (UnsupportedOperationException e) {
throw e;
} catch (Throwable t) {
throw new RuntimeException("Error while painting PDF page: " + uri + " " + t.getMessage(), t);
+ } finally {
+ fopFontProvider.close();
}
}
@@ -243,10 +246,14 @@
private Map<String, Object> fonts = new HashMap<String, Object>();
private Map<String, TrueTypeFont> ttFonts = new HashMap<String, TrueTypeFont>();
- FopFontProvider() {
+ void start() {
fopFontMapper.fopFontProvider.set(this);
}
+ void close() {
+ fopFontMapper.fopFontProvider.remove();
+ }
+
private CustomFont getFont(String name) throws IOException {
Object typeface = fonts.get(name);
if (typeface instanceof LazyFont) {
@@ -285,8 +292,16 @@
defaultFontMapper = FontMappers.instance();
}
+ private TrueTypeFont getTrueTypeFont(String baseFont) {
+ FopFontProvider fontProvider = fopFontProvider.get();
+ if (fontProvider == null) {
+ return null;
+ }
+ return fontProvider.getTrueTypeFont(baseFont);
+ }
+
public FontMapping<TrueTypeFont> getTrueTypeFont(String baseFont, PDFontDescriptor fontDescriptor) {
- TrueTypeFont fopFont = fopFontProvider.get().getTrueTypeFont(baseFont);
+ TrueTypeFont fopFont = getTrueTypeFont(baseFont);
if (fopFont != null) {
return new FontMapping<TrueTypeFont>(fopFont, true);
}
@@ -295,7 +310,7 @@
public FontMapping<FontBoxFont> getFontBoxFont(String baseFont, PDFontDescriptor fontDescriptor) {
- TrueTypeFont fopFont = fopFontProvider.get().getTrueTypeFont(baseFont);
+ TrueTypeFont fopFont = getTrueTypeFont(baseFont);
if (fopFont != null) {
return new FontMapping<FontBoxFont>(fopFont, true);
}