Author: ssteiner
Date: Fri Oct 13 13:23:42 2017
New Revision: 1812128
URL: http://svn.apache.org/viewvc?rev=1812128&view=rev
Log:
FOP-2753: PDF to PS allow fop fonts as fallback, add close
Modified:
xmlgraphics/fop-pdf-images/trunk/src/java/org/apache/fop/render/pdf/pdfbox/ImageConverterPDF2G2D.java
Modified: xmlgraphics/fop-pdf-images/trunk/src/java/org/apache/fop/render/pdf/pdfbox/ImageConverterPDF2G2D.java
URL: http://svn.apache.org/viewvc/xmlgraphics/fop-pdf-images/trunk/src/java/org/apache/fop/render/pdf/pdfbox/ImageConverterPDF2G2D.java?rev=1812128&r1=1812127&r2=1812128&view=diff
==============================================================================
--- xmlgraphics/fop-pdf-images/trunk/src/java/org/apache/fop/render/pdf/pdfbox/ImageConverterPDF2G2D.java (original)
+++ xmlgraphics/fop-pdf-images/trunk/src/java/org/apache/fop/render/pdf/pdfbox/ImageConverterPDF2G2D.java Fri Oct 13 13:23:42 2017
@@ -147,6 +147,7 @@ public class ImageConverterPDF2G2D exten
/** {@inheritDoc} */
public void paint(Graphics2D g2d, Rectangle2D area) {
+ fopFontProvider.start();
try {
PDRectangle mediaBox = page.getCropBox();
AffineTransform at = new AffineTransform();
@@ -156,17 +157,19 @@ public class ImageConverterPDF2G2D exten
}
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 @@ public class ImageConverterPDF2G2D exten
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 @@ public class ImageConverterPDF2G2D exten
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 class ImageConverterPDF2G2D exten
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);
}
lmpx.com only provides a reader for public news (NNTP) servers. It is not
affiliated with the servers or forums shown here and is not responsible for
the content of articles, which is written by their respective authors.