Author: kiwiwings Date: Sun Dec 1 23:09:58 2019 New Revision: 1870695 URL: http://svn.apache.org/viewvc?rev=1870695&view=rev Log: add rendering info actually ...
Added: poi/site/publish/components/slideshow/ppt-wmf-emf-renderer.html Added: poi/site/publish/components/slideshow/ppt-wmf-emf-renderer.html URL: http://svn.apache.org/viewvc/poi/site/publish/components/slideshow/ppt-wmf-emf-renderer.html?rev=1870695&view=auto ============================================================================== --- poi/site/publish/components/slideshow/ppt-wmf-emf-renderer.html (added) +++ poi/site/publish/components/slideshow/ppt-wmf-emf-renderer.html Sun Dec 1 23:09:58 2019 @@ -0,0 +1,668 @@ +<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> +<html> +<head> +<META http-equiv="Content-Type" content="text/html; charset=UTF-8"> +<meta content="Apache Forrest" name="Generator"> +<meta name="Forrest-version" content="0.9"> +<meta name="Forrest-skin-name" content="pelt"> +<title>Rendering slideshows, WMF, EMF and EMF+</title> +<link type="text/css" href="../../skin/basic.css" rel="stylesheet"> +<link media="screen" type="text/css" href="../../skin/screen.css" rel="stylesheet"> +<link media="print" type="text/css" href="../../skin/print.css" rel="stylesheet"> +<link type="text/css" href="../../skin/profile.css" rel="stylesheet"> +<script src="../../skin/getBlank.js" language="javascript" type="text/javascript"></script><script src="../../skin/getMenu.js" language="javascript" type="text/javascript"></script><script src="../../skin/fontsize.js" language="javascript" type="text/javascript"></script> +<link rel="shortcut icon" href="../../images/favicon.ico"> +</head> +<body onload="init()"> +<script type="text/javascript">ndeSetTextSize();</script> +<div id="top"> +<!--+ + |breadtrail + +--> +<div class="breadtrail"> +<a href="https://www.apache.org">Apache Software Foundation</a> > <a href="https://poi.apache.org">Apache POI</a><script src="../../skin/breadcrumbs.js" language="JavaScript" type="text/javascript"></script> +</div> +<!--+ + |header + +--> +<div class="header"> +<!--+ + |start group logo + +--> +<div class="grouplogo"> +<a href="https://www.apache.org"><img class="logoImage" alt="Apache Software Foundation" src="../../images/group-logo.png" title="The Apache Software Foundation is a cornerstone of the modern Open Source software ecosystem – supporting some of the most widely used and important software solutions powering today's Internet economy."></a> +</div> +<!--+ + |end group logo + +--> +<!--+ + |start Project Logo + +--> +<div class="projectlogo"> +<a href="https://poi.apache.org"><img class="logoImage" alt="Apache POI" src="../../images/project-header.png" title="Apache POI is well-known in the Java field as a library for reading and writing Microsoft Office file formats, such as Excel, PowerPoint, Word, Visio, Publisher and Outlook. It supports both the older (OLE2) and new (OOXML - Office Open XML) formats."></a> +</div> +<!--+ + |end Project Logo + +--> +<!--+ + |start Search + +--> +<div class="searchbox"> +<form action="http://www.google.com/search" method="get" class="roundtopsmall"> +<input value="poi.apache.org" name="sitesearch" type="hidden"><input onFocus="getBlank (this, 'Search the site with google');" size="25" name="q" id="query" type="text" value="Search the site with google"> + <input name="Search" value="Search" type="submit"> +</form> +</div> +<!--+ + |end search + +--> +<!--+ + |start Tabs + +--> +<ul id="tabs"> +<li> +<a class="unselected" href="../../index.html">Home</a> +</li> +<li> +<a class="unselected" href="../../help/index.html">Help</a> +</li> +<li class="current"> +<a class="selected" href="../../components/index.html">Component APIs</a> +</li> +<li> +<a class="unselected" href="../../devel/index.html">Getting Involved</a> +</li> +</ul> +<!--+ + |end Tabs + +--> +</div> +</div> +<div id="main"> +<div id="publishedStrip"> +<!--+ + |start Subtabs + +--> +<div id="level2tabs"></div> +<!--+ + |end Endtabs + +--> +<script type="text/javascript"><!-- +document.write("Last Published: " + document.lastModified); +// --></script> +</div> +<!--+ + |breadtrail + +--> +<div class="breadtrail"> + + + </div> +<!--+ + |start Menu, mainarea + +--> +<!--+ + |start Menu + +--> +<div id="menu"> +<div onclick="SwitchMenu('menu_selected_1.1', '../../skin/')" id="menu_selected_1.1Title" class="menutitle" style="background-image: url('../../skin/images/chapter_open.gif');">Component APIs</div> +<div id="menu_selected_1.1" class="selectedmenuitemgroup" style="display: block;"> +<div class="menuitem"> +<a href="../../components/index.html">Overview</a> +</div> +<div class="menuitem"> +<a href="../../apidocs/dev/index.html">Javadocs</a> +</div> +<div onclick="SwitchMenu('menu_1.1.3', '../../skin/')" id="menu_1.1.3Title" class="menutitle">Excel (HSSF/XSSF)</div> +<div id="menu_1.1.3" class="menuitemgroup"> +<div class="menuitem"> +<a href="../../components/spreadsheet/index.html">Overview</a> +</div> +<div class="menuitem"> +<a href="../../components/spreadsheet/quick-guide.html">Quick Guide</a> +</div> +<div class="menuitem"> +<a href="../../components/spreadsheet/how-to.html">HOWTO</a> +</div> +<div class="menuitem"> +<a href="../../components/spreadsheet/converting.html">HSSF to SS Converting</a> +</div> +<div class="menuitem"> +<a href="../../components/spreadsheet/formula.html">Formula Support</a> +</div> +<div class="menuitem"> +<a href="../../components/spreadsheet/eval.html">Formula Evaluation</a> +</div> +<div class="menuitem"> +<a href="../../components/spreadsheet/eval-devguide.html">Eval Dev Guide</a> +</div> +<div class="menuitem"> +<a href="../../components/spreadsheet/examples.html">Examples</a> +</div> +<div class="menuitem"> +<a href="../../components/spreadsheet/use-case.html">Use Case</a> +</div> +<div class="menuitem"> +<a href="../../components/spreadsheet/diagrams.html">Pictorial Docs</a> +</div> +<div class="menuitem"> +<a href="../../components/spreadsheet/limitations.html">Limitations</a> +</div> +<div class="menuitem"> +<a href="../../components/spreadsheet/user-defined-functions.html">User Defined Functions</a> +</div> +<div class="menuitem"> +<a href="../../components/spreadsheet/excelant.html">ExcelAnt Tests</a> +</div> +<div class="menuitem"> +<a href="../../components/spreadsheet/hacking-hssf.html">Hacking HSSF</a> +</div> +<div class="menuitem"> +<a href="../../components/spreadsheet/record-generator.html">Record Generator</a> +</div> +<div class="menuitem"> +<a href="../../components/spreadsheet/chart.html">Charts</a> +</div> +</div> +<div onclick="SwitchMenu('menu_selected_1.1.4', '../../skin/')" id="menu_selected_1.1.4Title" class="menutitle" style="background-image: url('../../skin/images/chapter_open.gif');">PowerPoint (HSLF/XSLF)</div> +<div id="menu_selected_1.1.4" class="selectedmenuitemgroup" style="display: block;"> +<div class="menuitem"> +<a href="../../components/slideshow/index.html">Overview</a> +</div> +<div class="menuitem"> +<a href="../../components/slideshow/quick-guide.html">Quick Guide</a> +</div> +<div class="menuitem"> +<a href="../../components/slideshow/how-to-shapes.html">HSLF Cookbook</a> +</div> +<div class="menuitem"> +<a href="../../components/slideshow/xslf-cookbook.html">XSLF Cookbook</a> +</div> +<div class="menupage"> +<div class="menupagetitle">Render SL/WMF/EMF</div> +</div> +<div class="menuitem"> +<a href="../../components/slideshow/ppt-file-format.html">PPT File Format</a> +</div> +</div> +<div onclick="SwitchMenu('menu_1.1.5', '../../skin/')" id="menu_1.1.5Title" class="menutitle">Word (HWPF/XWPF)</div> +<div id="menu_1.1.5" class="menuitemgroup"> +<div class="menuitem"> +<a href="../../components/document/index.html">Overview</a> +</div> +<div class="menuitem"> +<a href="../../components/document/quick-guide.html">HWPF Quick Guide</a> +</div> +<div class="menuitem"> +<a href="../../components/document/quick-guide-xwpf.html">XWPF Quick Guide</a> +</div> +<div class="menuitem"> +<a href="../../components/document/docoverview.html">HWPF Format</a> +</div> +<div class="menuitem"> +<a href="../../components/document/projectplan.html">HWPF Project plan</a> +</div> +</div> +<div class="menuitem"> +<a href="../../components/hsmf/index.html">Outlook (HSMF)</a> +</div> +<div class="menuitem"> +<a href="../../components/diagram/index.html">Visio (HDGF+XDGF)</a> +</div> +<div onclick="SwitchMenu('menu_1.1.8', '../../skin/')" id="menu_1.1.8Title" class="menutitle">Publisher (HPBF)</div> +<div id="menu_1.1.8" class="menuitemgroup"> +<div class="menuitem"> +<a href="../../components/hpbf/index.html">Overview</a> +</div> +<div class="menuitem"> +<a href="../../components/hpbf/file-format.html">File Format</a> +</div> +</div> +<div onclick="SwitchMenu('menu_1.1.9', '../../skin/')" id="menu_1.1.9Title" class="menutitle">OLE2 Filesystem (POIFS)</div> +<div id="menu_1.1.9" class="menuitemgroup"> +<div class="menuitem"> +<a href="../../components/poifs/index.html">Overview</a> +</div> +<div class="menuitem"> +<a href="../../components/poifs/how-to.html">How To</a> +</div> +<div class="menuitem"> +<a href="../../components/poifs/embeded.html">Embedded Documents</a> +</div> +<div class="menuitem"> +<a href="../../components/poifs/fileformat.html">File System Documentation</a> +</div> +<div class="menuitem"> +<a href="../../components/poifs/usecases.html">Use Cases</a> +</div> +<div class="menuitem"> +<a href="../../components/poifs/design.html">Design</a> +</div> +</div> +<div onclick="SwitchMenu('menu_1.1.10', '../../skin/')" id="menu_1.1.10Title" class="menutitle">OLE2 Document Props (HPSF)</div> +<div id="menu_1.1.10" class="menuitemgroup"> +<div class="menuitem"> +<a href="../../components/hpsf/index.html">Overview</a> +</div> +<div class="menuitem"> +<a href="../../components/hpsf/how-to.html">How To</a> +</div> +<div class="menuitem"> +<a href="../../components/hpsf/thumbnails.html">Thumbnails</a> +</div> +<div class="menuitem"> +<a href="../../components/hpsf/internals.html">Internals</a> +</div> +<div class="menuitem"> +<a href="../../components/hpsf/todo.html">To Do</a> +</div> +</div> +<div class="menuitem"> +<a href="../../components/hmef/index.html">TNEF (HMEF) for winmail.dat</a> +</div> +<div class="menuitem"> +<a href="../../components/oxml4j/index.html">OpenXML4J (OOXML)</a> +</div> +<div class="menuitem"> +<a href="../../components/logging.html">Logging framework</a> +</div> +</div> +<div id="credit"></div> +<div id="roundbottom"> +<img style="display: none" class="corner" height="15" width="15" alt="" src="../../skin/images/rc-b-l-15-1body-2menu-3menu.png"></div> +<!--+ + |alternative credits + +--> +<div id="credit2"> +<a href="https://donate.apache.org/"><img border="0" title="Support Apache" alt="Support Apache - logo" src="../../images/support-asf.png" style="width: 125px;height: 125px;"></a><a href="https://www.apache.org/foundation/press/kit/#poweredby"><img border="0" title="powered by POI" alt="powered by POI - logo" src="../../images/poweredby-poi-logo.png" style="width: 125px;height: 125px;"></a> +</div> +</div> +<!--+ + |end Menu + +--> +<!--+ + |start content + +--> +<div id="content"> +<h1>Rendering slideshows, WMF, EMF and EMF+</h1> +<div id="front-matter"></div> + +<a name="Rendering+slideshows%2C+WMF%2C+EMF+and+EMF%2B"></a> +<h2 class="boxed">Rendering slideshows, WMF, EMF and EMF+</h2> +<div class="section"> +<p> + For rendering slideshow (HSLF/XSLF), WMF, EMF and EMF+ pictures, POI provides an utility class + <a href="https://svn.apache.org/viewvc/poi/trunk/src/ooxml/java/org/apache/poi/xslf/util/PPTX2PNG.java?view=markup"> + PPTX2PNG</a>: + </p> +<div class="code"> +<div class="codeline"> +<span class="lineno"></span><span class="codebody"></span> +</div> +<div class="codeline"> +<span class="lineno"></span><span class="codebody">Usage: PPTX2PNG [options] <ppt or pptx file or 'stdin'</span> +</div> +<div class="codeline"> +<span class="lineno"></span><span class="codebody"></span> +</div> +<div class="codeline"> +<span class="lineno"></span><span class="codebody">Options:</span> +</div> +<div class="codeline"> +<span class="lineno"></span><span class="codebody"> -scale <float> scale factor</span> +</div> +<div class="codeline"> +<span class="lineno"></span><span class="codebody"> -fixSide <side> specify side (long,short,width,height) to fix - use <scale> as amount of pixels</span> +</div> +<div class="codeline"> +<span class="lineno"></span><span class="codebody"> -slide <integer> 1-based index of a slide to render</span> +</div> +<div class="codeline"> +<span class="lineno"></span><span class="codebody"> -format <type> png,gif,jpg (,null for testing)</span> +</div> +<div class="codeline"> +<span class="lineno"></span><span class="codebody"> -outdir <dir> output directory, defaults to origin of the ppt/pptx file</span> +</div> +<div class="codeline"> +<span class="lineno"></span><span class="codebody"> -outfile <file> output filename, defaults to "${basename}-${slideno}.${format}"</span> +</div> +<div class="codeline"> +<span class="lineno"></span><span class="codebody"> -outpat <pattern> output filename pattern, defaults to "${basename}-${slideno}.${format}"</span> +</div> +<div class="codeline"> +<span class="lineno"></span><span class="codebody"> patterns: basename, slideno, format, ext</span> +</div> +<div class="codeline"> +<span class="lineno"></span><span class="codebody"> -dump <file> dump the annotated records to a file</span> +</div> +<div class="codeline"> +<span class="lineno"></span><span class="codebody"> -quiet do not write to console (for normal processing)</span> +</div> +<div class="codeline"> +<span class="lineno"></span><span class="codebody"> -ignoreParse ignore parsing error and continue with the records read until the error</span> +</div> +<div class="codeline"> +<span class="lineno"></span><span class="codebody"> -extractEmbedded extract embedded parts</span> +</div> +<div class="codeline"> +<span class="lineno"></span><span class="codebody"></span> +</div> +<div class="codeline"> +<span class="lineno"></span><span class="codebody"></span> +</div> +</div> +</div> + +<a name="Integrate+rendering+in+your+code"></a> +<h2 class="boxed">Integrate rendering in your code</h2> +<div class="section"> +<a name="%231+-+Use+PPTX2PNG+via+file+or+stdin"></a> +<h3 class="boxed">#1 - Use PPTX2PNG via file or stdin</h3> +<p>For file system access, you need to save your slideshow/WMF/EMF/EMF+ first to disc and then call <span class="codefrag"> + PPTX2PNG.main() + </span> with the corresponding parameters. + </p> +<p>for stdin access, you need to redirect <span class="codefrag">System.in</span> before: + </p> +<div class="code"> +<div class="codeline"> +<span class="lineno"></span><span class="codebody"></span> +</div> +<div class="codeline"> +<span class="lineno"></span><span class="codebody">/* the file content */</span> +</div> +<div class="codeline"> +<span class="lineno"></span><span class="codebody">InputStream is = ...;</span> +</div> +<div class="codeline"> +<span class="lineno"></span><span class="codebody">/* Save and set System.in */</span> +</div> +<div class="codeline"> +<span class="lineno"></span><span class="codebody">InputStream oldIn = System.in;</span> +</div> +<div class="codeline"> +<span class="lineno"></span><span class="codebody">try {</span> +</div> +<div class="codeline"> +<span class="lineno"></span><span class="codebody"> System.setIn(is);</span> +</div> +<div class="codeline"> +<span class="lineno"></span><span class="codebody"></span> +</div> +<div class="codeline"> +<span class="lineno"></span><span class="codebody"> String[] args = {</span> +</div> +<div class="codeline"> +<span class="lineno"></span><span class="codebody"> "-format", "png", // png,gif,jpg or null for test</span> +</div> +<div class="codeline"> +<span class="lineno"></span><span class="codebody"> "-outdir", new File("out/").getCanonicalPath(),</span> +</div> +<div class="codeline"> +<span class="lineno"></span><span class="codebody"> "-outfile", "export.png",</span> +</div> +<div class="codeline"> +<span class="lineno"></span><span class="codebody"> "-fixside", "long",</span> +</div> +<div class="codeline"> +<span class="lineno"></span><span class="codebody"> "-scale", "800",</span> +</div> +<div class="codeline"> +<span class="lineno"></span><span class="codebody"> "-ignoreParse",</span> +</div> +<div class="codeline"> +<span class="lineno"></span><span class="codebody"> "stdin"</span> +</div> +<div class="codeline"> +<span class="lineno"></span><span class="codebody"> };</span> +</div> +<div class="codeline"> +<span class="lineno"></span><span class="codebody"> PPTX2PNG.main(args);</span> +</div> +<div class="codeline"> +<span class="lineno"></span><span class="codebody"></span> +</div> +<div class="codeline"> +<span class="lineno"></span><span class="codebody">} finally {</span> +</div> +<div class="codeline"> +<span class="lineno"></span><span class="codebody"> System.setIn(oldIn);</span> +</div> +<div class="codeline"> +<span class="lineno"></span><span class="codebody">}</span> +</div> +<div class="codeline"> +<span class="lineno"></span><span class="codebody"></span> +</div> +</div> +<a name="%232+-+Render+WMF+%2F+EMF+%2F+EMF%2B+via+the+*Picture+classes"></a> +<h3 class="boxed">#2 - Render WMF / EMF / EMF+ via the *Picture classes</h3> +<div class="code"> +<div class="codeline"> +<span class="lineno"></span><span class="codebody"></span> +</div> +<div class="codeline"> +<span class="lineno"></span><span class="codebody">File f = samples.getFile("santa.wmf");</span> +</div> +<div class="codeline"> +<span class="lineno"></span><span class="codebody">try (FileInputStream fis = new FileInputStream(f)) {</span> +</div> +<div class="codeline"> +<span class="lineno"></span><span class="codebody"> // for WMF</span> +</div> +<div class="codeline"> +<span class="lineno"></span><span class="codebody"> HwmfPicture wmf = new HwmfPicture(fis);</span> +</div> +<div class="codeline"> +<span class="lineno"></span><span class="codebody"></span> +</div> +<div class="codeline"> +<span class="lineno"></span><span class="codebody"> // for EMF / EMF+</span> +</div> +<div class="codeline"> +<span class="lineno"></span><span class="codebody"> HemfPicture emf = new HemfPicture(fis);</span> +</div> +<div class="codeline"> +<span class="lineno"></span><span class="codebody"></span> +</div> +<div class="codeline"> +<span class="lineno"></span><span class="codebody"> Dimension dim = wmf.getSize();</span> +</div> +<div class="codeline"> +<span class="lineno"></span><span class="codebody"> int width = Units.pointsToPixel(dim.getWidth());</span> +</div> +<div class="codeline"> +<span class="lineno"></span><span class="codebody"> // keep aspect ratio for height</span> +</div> +<div class="codeline"> +<span class="lineno"></span><span class="codebody"> int height = Units.pointsToPixel(dim.getHeight());</span> +</div> +<div class="codeline"> +<span class="lineno"></span><span class="codebody"> double max = Math.max(width, height);</span> +</div> +<div class="codeline"> +<span class="lineno"></span><span class="codebody"> if (max > 1500) {</span> +</div> +<div class="codeline"> +<span class="lineno"></span><span class="codebody"> width *= 1500/max;</span> +</div> +<div class="codeline"> +<span class="lineno"></span><span class="codebody"> height *= 1500/max;</span> +</div> +<div class="codeline"> +<span class="lineno"></span><span class="codebody"> }</span> +</div> +<div class="codeline"> +<span class="lineno"></span><span class="codebody"></span> +</div> +<div class="codeline"> +<span class="lineno"></span><span class="codebody"> BufferedImage bufImg = new BufferedImage(width, height, BufferedImage.TYPE_INT_ARGB);</span> +</div> +<div class="codeline"> +<span class="lineno"></span><span class="codebody"> Graphics2D g = bufImg.createGraphics();</span> +</div> +<div class="codeline"> +<span class="lineno"></span><span class="codebody"> g.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON);</span> +</div> +<div class="codeline"> +<span class="lineno"></span><span class="codebody"> g.setRenderingHint(RenderingHints.KEY_RENDERING, RenderingHints.VALUE_RENDER_QUALITY);</span> +</div> +<div class="codeline"> +<span class="lineno"></span><span class="codebody"> g.setRenderingHint(RenderingHints.KEY_INTERPOLATION, RenderingHints.VALUE_INTERPOLATION_BICUBIC);</span> +</div> +<div class="codeline"> +<span class="lineno"></span><span class="codebody"> g.setRenderingHint(RenderingHints.KEY_FRACTIONALMETRICS, RenderingHints.VALUE_FRACTIONALMETRICS_ON);</span> +</div> +<div class="codeline"> +<span class="lineno"></span><span class="codebody"></span> +</div> +<div class="codeline"> +<span class="lineno"></span><span class="codebody"> wmf.draw(g, new Rectangle2D.Double(0,0,width,height));</span> +</div> +<div class="codeline"> +<span class="lineno"></span><span class="codebody"></span> +</div> +<div class="codeline"> +<span class="lineno"></span><span class="codebody"> g.dispose();</span> +</div> +<div class="codeline"> +<span class="lineno"></span><span class="codebody"></span> +</div> +<div class="codeline"> +<span class="lineno"></span><span class="codebody"> ImageIO.write(bufImg, "PNG", new File("bla.png"));</span> +</div> +<div class="codeline"> +<span class="lineno"></span><span class="codebody">}</span> +</div> +<div class="codeline"> +<span class="lineno"></span><span class="codebody"></span> +</div> +<div class="codeline"> +<span class="lineno"></span><span class="codebody"></span> +</div> +</div> +<a name="%233+-+Render+slideshows+directly"></a> +<h3 class="boxed">#3 - Render slideshows directly</h3> +<div class="code"> +<div class="codeline"> +<span class="lineno"></span><span class="codebody"></span> +</div> +<div class="codeline"> +<span class="lineno"></span><span class="codebody">File file = new File("example.pptx");</span> +</div> +<div class="codeline"> +<span class="lineno"></span><span class="codebody">double scale = 1.5;</span> +</div> +<div class="codeline"> +<span class="lineno"></span><span class="codebody">try (SlideShow<?, ?> ss = SlideShowFactory.create(file, null, true)) {</span> +</div> +<div class="codeline"> +<span class="lineno"></span><span class="codebody"> Dimension pgsize = ss.getPageSize();</span> +</div> +<div class="codeline"> +<span class="lineno"></span><span class="codebody"> int width = (int) (pgsize.width * scale);</span> +</div> +<div class="codeline"> +<span class="lineno"></span><span class="codebody"> int height = (int) (pgsize.height * scale);</span> +</div> +<div class="codeline"> +<span class="lineno"></span><span class="codebody"></span> +</div> +<div class="codeline"> +<span class="lineno"></span><span class="codebody"> for (Slide<?, ?> slide : ss.getSlides()) {</span> +</div> +<div class="codeline"> +<span class="lineno"></span><span class="codebody"> BufferedImage img = new BufferedImage(width, height, BufferedImage.TYPE_INT_ARGB);</span> +</div> +<div class="codeline"> +<span class="lineno"></span><span class="codebody"> Graphics2D graphics = img.createGraphics();</span> +</div> +<div class="codeline"> +<span class="lineno"></span><span class="codebody"></span> +</div> +<div class="codeline"> +<span class="lineno"></span><span class="codebody"> // default rendering options</span> +</div> +<div class="codeline"> +<span class="lineno"></span><span class="codebody"> graphics.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON);</span> +</div> +<div class="codeline"> +<span class="lineno"></span><span class="codebody"> graphics.setRenderingHint(RenderingHints.KEY_RENDERING, RenderingHints.VALUE_RENDER_QUALITY);</span> +</div> +<div class="codeline"> +<span class="lineno"></span><span class="codebody"> graphics.setRenderingHint(RenderingHints.KEY_INTERPOLATION, RenderingHints.VALUE_INTERPOLATION_BICUBIC);</span> +</div> +<div class="codeline"> +<span class="lineno"></span><span class="codebody"> graphics.setRenderingHint(RenderingHints.KEY_FRACTIONALMETRICS, RenderingHints.VALUE_FRACTIONALMETRICS_ON);</span> +</div> +<div class="codeline"> +<span class="lineno"></span><span class="codebody"> graphics.setRenderingHint(Drawable.BUFFERED_IMAGE, new WeakReference<>(img));</span> +</div> +<div class="codeline"> +<span class="lineno"></span><span class="codebody"></span> +</div> +<div class="codeline"> +<span class="lineno"></span><span class="codebody"> graphics.scale(scale, scale);</span> +</div> +<div class="codeline"> +<span class="lineno"></span><span class="codebody"></span> +</div> +<div class="codeline"> +<span class="lineno"></span><span class="codebody"> // draw stuff</span> +</div> +<div class="codeline"> +<span class="lineno"></span><span class="codebody"> slide.draw(graphics);</span> +</div> +<div class="codeline"> +<span class="lineno"></span><span class="codebody"></span> +</div> +<div class="codeline"> +<span class="lineno"></span><span class="codebody"> ImageIO.write(img, "PNG", new File("output.png"));</span> +</div> +<div class="codeline"> +<span class="lineno"></span><span class="codebody"> graphics.dispose();</span> +</div> +<div class="codeline"> +<span class="lineno"></span><span class="codebody"> img.flush();</span> +</div> +<div class="codeline"> +<span class="lineno"></span><span class="codebody"> }</span> +</div> +<div class="codeline"> +<span class="lineno"></span><span class="codebody">}</span> +</div> +<div class="codeline"> +<span class="lineno"></span><span class="codebody"></span> +</div> +</div> +</div> + +</div> +<!--+ + |end content + +--> +<div class="clearboth"> </div> +</div> +<div id="footer"> +<!--+ + |start bottomstrip + +--> +<div class="lastmodified"> +<script type="text/javascript"><!-- +document.write("Last Published: " + document.lastModified); +// --></script> +</div> +<div class="copyright"> + Copyright © + 2001-2019 <a href="https://www.apache.org/">The Apache Software Foundation</a> +</div> +<div id="feedback"> + Send feedback about the website to: + <a id="feedbackto" href="mailto:d...@poi.apache.org?subject=Feedback%C2%A0components/slideshow/ppt-wmf-emf-renderer.html">d...@poi.apache.org</a> +</div> +<!--+ + |end bottomstrip + +--> +</div> +</body> +</html> --------------------------------------------------------------------- To unsubscribe, e-mail: commits-unsubscr...@poi.apache.org For additional commands, e-mail: commits-h...@poi.apache.org