<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>malditoraton.com &#187; Java</title>
	<atom:link href="http://www.malditoraton.com/category/java/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.malditoraton.com</link>
	<description>Va a acabar conmigo</description>
	<lastBuildDate>Thu, 26 May 2011 18:18:05 +0000</lastBuildDate>
	<language>es</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=</generator>
		<item>
		<title>Eliminar imágenes de PDF con Java y iText</title>
		<link>http://www.malditoraton.com/erase-pdf-images-itext/</link>
		<comments>http://www.malditoraton.com/erase-pdf-images-itext/#comments</comments>
		<pubDate>Thu, 26 May 2011 18:16:28 +0000</pubDate>
		<dc:creator>Marat</dc:creator>
				<category><![CDATA[Java]]></category>
		<category><![CDATA[PDF]]></category>

		<guid isPermaLink="false">http://www.malditoraton.com/?p=181</guid>
		<description><![CDATA[A pesar del título, ya avanzo que no se trata de eliminar imégenes sino de ocultarlas a la vista y redimensionandolas para que no pesen. En mi deformación de copia-pega y después de buscar código que me permitiese eliminar todas las imágenes de un archivo pdf,me dí cuenta que la mejor solución sería utilizar las [...]]]></description>
			<content:encoded><![CDATA[<p>A pesar del título, ya avanzo que no se trata de eliminar imégenes sino de ocultarlas a la vista y redimensionandolas para que no pesen. En mi deformación de <em>copia-pega</em> y después de buscar código que me permitiese eliminar todas las imágenes de un archivo pdf,me dí cuenta que la mejor solución sería utilizar las librerías de <a title="iText" href="http://itextpdf.com/" target="_blank">iText</a>.<span id="more-181"></span></p>
<p>Con estas librerías podría redimensionar las imágenes existentes en el pdf. El código, completamente funcional que se presenta a continuación lo permite. Está basado en un código traducido de C# cuyo autor no he conseguido encontrar ( y a quien estaré encantado en atribuir si alguien me lo proporciona) y en un ejemplo propio de iText para redimensionar imágenes con referencia conocida.</p>
<p>La ventaja de mi código es que lee cualquier archivo sin protección, &#8220;oculta&#8221; todas las imágenes de todas las páginas y con cambios menores puede personalizarse cuantas y cuáles imágenes serán ocultadas.</p>
<p>En contados documentos, en algunos dispositivos como eReaders, teléfonos,&#8230; o versiones antiguas de Adobe Acrobat Reader puede ocasionar un ocultamiento del texto. Se investigará</p>
<p>&nbsp;</p>

<div class="wp_syntax"><div class="code"><pre class="java" style="font-family:monospace;"><span style="color: #666666; font-style: italic;">/*
 * ResizeImage.java
 * =========================
 * ===    ResizeImage       ===
 * =========================
 * ResizeImage is a sample, about resampling images within a PDF file
 * Some information is available at http://www.malditoraton.com/erase-pdf-images-itext/
 * Copyright (c) 2011 Owners ofwww.malditoraton.com,
 *
 *
 * This program is free software; you can redistribute it and/or modify
 * it under the terms of the GNU General Public License as published by
 * the Free Software Foundation; either version 2 of the License, or
 * (at your option) any later version.
 *
 * This program is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 * GNU General Public License for more details.
 * You should have received a copy of the GNU General Public License along
 * with this program; if not, write to the Free Software Foundation, Inc.,
 * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
 *
 * @author http://www.malditoraton.com
 */</span>
<span style="color: #000000; font-weight: bold;">package</span> <span style="color: #006699;">resizeimage</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #000000; font-weight: bold;">import</span> <span style="color: #006699;">java.io.FileOutputStream</span><span style="color: #339933;">;</span>
<span style="color: #000000; font-weight: bold;">import</span> <span style="color: #006699;">java.util.Iterator</span><span style="color: #339933;">;</span> 
&nbsp;
<span style="color: #000000; font-weight: bold;">import</span> <span style="color: #006699;">com.itextpdf.text.pdf.PdfDictionary</span><span style="color: #339933;">;</span>
<span style="color: #000000; font-weight: bold;">import</span> <span style="color: #006699;">com.itextpdf.text.pdf.PdfName</span><span style="color: #339933;">;</span>
<span style="color: #000000; font-weight: bold;">import</span> <span style="color: #006699;">com.itextpdf.text.pdf.PdfReader</span><span style="color: #339933;">;</span>
<span style="color: #000000; font-weight: bold;">import</span> <span style="color: #006699;">com.itextpdf.text.pdf.PdfObject</span><span style="color: #339933;">;</span>
<span style="color: #000000; font-weight: bold;">import</span> <span style="color: #006699;">com.itextpdf.text.pdf.PRStream</span><span style="color: #339933;">;</span>
<span style="color: #000000; font-weight: bold;">import</span> <span style="color: #006699;">com.itextpdf.text.pdf.PdfNumber</span><span style="color: #339933;">;</span>
<span style="color: #000000; font-weight: bold;">import</span> <span style="color: #006699;">com.itextpdf.text.pdf.PdfStamper</span><span style="color: #339933;">;</span>
<span style="color: #000000; font-weight: bold;">import</span> <span style="color: #006699;">com.itextpdf.text.pdf.parser.PdfImageObject</span><span style="color: #339933;">;</span>
<span style="color: #000000; font-weight: bold;">import</span> <span style="color: #006699;">java.awt.Graphics2D</span><span style="color: #339933;">;</span>
<span style="color: #000000; font-weight: bold;">import</span> <span style="color: #006699;">java.awt.geom.AffineTransform</span><span style="color: #339933;">;</span>
<span style="color: #000000; font-weight: bold;">import</span> <span style="color: #006699;">java.awt.image.BufferedImage</span><span style="color: #339933;">;</span>
<span style="color: #000000; font-weight: bold;">import</span> <span style="color: #006699;">java.io.ByteArrayOutputStream</span><span style="color: #339933;">;</span>
<span style="color: #000000; font-weight: bold;">import</span> <span style="color: #006699;">javax.imageio.ImageIO</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #000000; font-weight: bold;">public</span> <span style="color: #000000; font-weight: bold;">class</span> ResizeImage <span style="color: #009900;">&#123;</span>
    <span style="color: #000000; font-weight: bold;">public</span> <span style="color: #000000; font-weight: bold;">static</span> <span style="color: #003399;">String</span> SOURCE <span style="color: #339933;">=</span> <span style="color: #0000ff;">&quot;Full path to any pdf existing file&quot;</span><span style="color: #339933;">;</span>
    <span style="color: #000000; font-weight: bold;">public</span> <span style="color: #000000; font-weight: bold;">static</span> <span style="color: #003399;">String</span> RESULT <span style="color: #339933;">=</span> <span style="color: #0000ff;">&quot;Full path to the new pdf file&quot;</span><span style="color: #339933;">;</span>
    <span style="color: #000000; font-weight: bold;">public</span> <span style="color: #000000; font-weight: bold;">static</span> <span style="color: #000066; font-weight: bold;">float</span> FACTOR <span style="color: #339933;">=</span> 0.99f<span style="color: #339933;">;</span>
    <span style="color: #000000; font-weight: bold;">static</span>  <span style="color: #003399;">String</span> pdfFileName<span style="color: #339933;">;</span>
    <span style="color: #000000; font-weight: bold;">static</span> <span style="color: #000066; font-weight: bold;">int</span> i<span style="color: #339933;">=</span><span style="color: #cc66cc;">1</span><span style="color: #339933;">;</span>
    <span style="color: #000000; font-weight: bold;">public</span> <span style="color: #000000; font-weight: bold;">static</span> <span style="color: #000066; font-weight: bold;">void</span> main<span style="color: #009900;">&#40;</span><span style="color: #003399;">String</span><span style="color: #009900;">&#91;</span><span style="color: #009900;">&#93;</span> args<span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
        <span style="color: #000000; font-weight: bold;">try</span> <span style="color: #009900;">&#123;</span> 
&nbsp;
            PdfReader readPdf <span style="color: #339933;">=</span> <span style="color: #000000; font-weight: bold;">new</span> PdfReader<span style="color: #009900;">&#40;</span>SOURCE<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
            <span style="color: #000066; font-weight: bold;">int</span> n <span style="color: #339933;">=</span> readPdf.<span style="color: #006633;">getNumberOfPages</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
            <span style="color: #000000; font-weight: bold;">while</span><span style="color: #009900;">&#40;</span>i<span style="color: #339933;">&amp;</span>lt<span style="color: #339933;">;=</span>n<span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
                PdfDictionary pagDictionary <span style="color: #339933;">=</span> readPdf.<span style="color: #006633;">getPageN</span><span style="color: #009900;">&#40;</span>i<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
                PdfDictionary resDictionary <span style="color: #339933;">=</span> <span style="color: #009900;">&#40;</span>PdfDictionary<span style="color: #009900;">&#41;</span>PdfReader.<span style="color: #006633;">getPdfObject</span><span style="color: #009900;">&#40;</span>pagDictionary.<span style="color: #006633;">get</span><span style="color: #009900;">&#40;</span>PdfName.<span style="color: #006633;">RESOURCES</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
                PdfDictionary xobDictionary <span style="color: #339933;">=</span> <span style="color: #009900;">&#40;</span>PdfDictionary<span style="color: #009900;">&#41;</span>PdfReader.<span style="color: #006633;">getPdfObject</span><span style="color: #009900;">&#40;</span>resDictionary.<span style="color: #006633;">get</span><span style="color: #009900;">&#40;</span>PdfName.<span style="color: #006633;">XOBJECT</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
                <span style="color: #000000; font-weight: bold;">if</span> <span style="color: #009900;">&#40;</span>xobDictionary <span style="color: #339933;">!=</span> <span style="color: #000066; font-weight: bold;">null</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
                    <span style="color: #000000; font-weight: bold;">for</span> <span style="color: #009900;">&#40;</span><span style="color: #003399;">Iterator</span> it <span style="color: #339933;">=</span> xobDictionary.<span style="color: #006633;">getKeys</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span>.<span style="color: #006633;">iterator</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span> it.<span style="color: #006633;">hasNext</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span> <span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
                        PdfObject objPdf <span style="color: #339933;">=</span> xobDictionary.<span style="color: #006633;">get</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#40;</span>PdfName<span style="color: #009900;">&#41;</span>it.<span style="color: #006633;">next</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
                        <span style="color: #000000; font-weight: bold;">if</span> <span style="color: #009900;">&#40;</span>objPdf <span style="color: #339933;">!=</span> <span style="color: #000066; font-weight: bold;">null</span> <span style="color: #339933;">||</span> objPdf.<span style="color: #006633;">isStream</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #666666; font-style: italic;">/*obj.isIndirect()*/</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
                            PdfDictionary odfDictionary <span style="color: #339933;">=</span> <span style="color: #009900;">&#40;</span>PdfDictionary<span style="color: #009900;">&#41;</span>PdfReader.<span style="color: #006633;">getPdfObject</span><span style="color: #009900;">&#40;</span>objPdf<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
                            <span style="color: #000000; font-weight: bold;">if</span> <span style="color: #009900;">&#40;</span>odfDictionary <span style="color: #339933;">==</span> <span style="color: #000066; font-weight: bold;">null</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span><span style="color: #000000; font-weight: bold;">continue</span><span style="color: #339933;">;</span><span style="color: #009900;">&#125;</span>
                            PdfObject stObject <span style="color: #339933;">=</span> odfDictionary.<span style="color: #006633;">get</span><span style="color: #009900;">&#40;</span>PdfName.<span style="color: #006633;">SUBTYPE</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
                            <span style="color: #000000; font-weight: bold;">if</span> <span style="color: #009900;">&#40;</span>stObject <span style="color: #339933;">==</span> <span style="color: #000066; font-weight: bold;">null</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span><span style="color: #000000; font-weight: bold;">continue</span><span style="color: #339933;">;</span><span style="color: #009900;">&#125;</span>
                            PdfName type <span style="color: #339933;">=</span> <span style="color: #009900;">&#40;</span>PdfName<span style="color: #009900;">&#41;</span>PdfReader.<span style="color: #006633;">getPdfObject</span><span style="color: #009900;">&#40;</span>stObject<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
                            <span style="color: #000000; font-weight: bold;">if</span> <span style="color: #009900;">&#40;</span>PdfName.<span style="color: #006633;">IMAGE</span>.<span style="color: #006633;">equals</span><span style="color: #009900;">&#40;</span>type<span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
                                PdfObject obdObject <span style="color: #339933;">=</span> PdfReader.<span style="color: #006633;">getPdfObject</span><span style="color: #009900;">&#40;</span>objPdf,xobDictionary<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
                                PdfReader.<span style="color: #006633;">killIndirect</span><span style="color: #009900;">&#40;</span>objPdf<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
                                PRStream odbStream <span style="color: #339933;">=</span> <span style="color: #009900;">&#40;</span>PRStream<span style="color: #009900;">&#41;</span>obdObject<span style="color: #339933;">;</span>
                                PdfImageObject image <span style="color: #339933;">=</span> <span style="color: #000000; font-weight: bold;">new</span> PdfImageObject<span style="color: #009900;">&#40;</span>odbStream<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
                                <span style="color: #003399;">BufferedImage</span> bi <span style="color: #339933;">=</span> image.<span style="color: #006633;">getBufferedImage</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
                                <span style="color: #000000; font-weight: bold;">if</span> <span style="color: #009900;">&#40;</span>bi <span style="color: #339933;">==</span> <span style="color: #000066; font-weight: bold;">null</span><span style="color: #009900;">&#41;</span> <span style="color: #000000; font-weight: bold;">continue</span><span style="color: #339933;">;</span>
                                <span style="color: #000066; font-weight: bold;">int</span> width <span style="color: #339933;">=</span> <span style="color: #009900;">&#40;</span><span style="color: #000066; font-weight: bold;">int</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#40;</span>bi.<span style="color: #006633;">getWidth</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span> <span style="color: #339933;">*</span> FACTOR<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
                                <span style="color: #000066; font-weight: bold;">int</span> height <span style="color: #339933;">=</span> <span style="color: #009900;">&#40;</span><span style="color: #000066; font-weight: bold;">int</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#40;</span>bi.<span style="color: #006633;">getHeight</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span> <span style="color: #339933;">*</span> FACTOR<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
                                <span style="color: #000000; font-weight: bold;">if</span><span style="color: #009900;">&#40;</span>width<span style="color: #339933;">==</span><span style="color: #cc66cc;">0</span><span style="color: #009900;">&#41;</span> width <span style="color: #339933;">=</span> <span style="color: #cc66cc;">1</span><span style="color: #339933;">;</span>
                                <span style="color: #000000; font-weight: bold;">if</span><span style="color: #009900;">&#40;</span>height<span style="color: #339933;">==</span><span style="color: #cc66cc;">0</span><span style="color: #009900;">&#41;</span> height <span style="color: #339933;">=</span> <span style="color: #cc66cc;">1</span><span style="color: #339933;">;</span>
                                <span style="color: #003399;">BufferedImage</span> img <span style="color: #339933;">=</span> <span style="color: #000000; font-weight: bold;">new</span> <span style="color: #003399;">BufferedImage</span><span style="color: #009900;">&#40;</span>width,
                                        height, <span style="color: #003399;">BufferedImage</span>.<span style="color: #006633;">TYPE_INT_RGB</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
                                <span style="color: #003399;">AffineTransform</span> at <span style="color: #339933;">=</span> <span style="color: #003399;">AffineTransform</span>.<span style="color: #006633;">getScaleInstance</span><span style="color: #009900;">&#40;</span>FACTOR, FACTOR<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
                                <span style="color: #003399;">Graphics2D</span> g <span style="color: #339933;">=</span> img.<span style="color: #006633;">createGraphics</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
                                g.<span style="color: #006633;">drawRenderedImage</span><span style="color: #009900;">&#40;</span>bi, at<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
                                <span style="color: #003399;">ByteArrayOutputStream</span> imgBytes <span style="color: #339933;">=</span> <span style="color: #000000; font-weight: bold;">new</span> <span style="color: #003399;">ByteArrayOutputStream</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
                                ImageIO.<span style="color: #006633;">write</span><span style="color: #009900;">&#40;</span>img, <span style="color: #0000ff;">&quot;JPG&quot;</span>, imgBytes<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
                                odbStream.<span style="color: #006633;">clear</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
                                odbStream.<span style="color: #006633;">setData</span><span style="color: #009900;">&#40;</span>imgBytes.<span style="color: #006633;">toByteArray</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span>, <span style="color: #000066; font-weight: bold;">false</span>, PRStream.<span style="color: #006633;">BEST_SPEED</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
                                odbStream.<span style="color: #006633;">put</span><span style="color: #009900;">&#40;</span>PdfName.<span style="color: #006633;">TYPE</span>, PdfName.<span style="color: #006633;">XOBJECT</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
                                odbStream.<span style="color: #006633;">put</span><span style="color: #009900;">&#40;</span>PdfName.<span style="color: #006633;">SUBTYPE</span>, PdfName.<span style="color: #006633;">IMAGE</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
                                odbStream.<span style="color: #006633;">put</span><span style="color: #009900;">&#40;</span>PdfName.<span style="color: #006633;">FILTER</span>, PdfName.<span style="color: #006633;">DCTDECODE</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
                                odbStream.<span style="color: #006633;">put</span><span style="color: #009900;">&#40;</span>PdfName.<span style="color: #006633;">WIDTH</span>, <span style="color: #000000; font-weight: bold;">new</span> PdfNumber<span style="color: #009900;">&#40;</span>width<span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
                                odbStream.<span style="color: #006633;">put</span><span style="color: #009900;">&#40;</span>PdfName.<span style="color: #006633;">HEIGHT</span>, <span style="color: #000000; font-weight: bold;">new</span> PdfNumber<span style="color: #009900;">&#40;</span>height<span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
                                odbStream.<span style="color: #006633;">put</span><span style="color: #009900;">&#40;</span>PdfName.<span style="color: #006633;">BITSPERCOMPONENT</span>, <span style="color: #000000; font-weight: bold;">new</span> PdfNumber<span style="color: #009900;">&#40;</span><span style="color: #cc66cc;">8</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
                                odbStream.<span style="color: #006633;">put</span><span style="color: #009900;">&#40;</span>PdfName.<span style="color: #006633;">COLORSPACE</span>, PdfName.<span style="color: #006633;">DEVICERGB</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
                            <span style="color: #009900;">&#125;</span> 
&nbsp;
                        <span style="color: #009900;">&#125;</span>
                    <span style="color: #009900;">&#125;</span>
                <span style="color: #009900;">&#125;</span>
                i<span style="color: #339933;">=</span>i<span style="color: #339933;">+</span><span style="color: #cc66cc;">1</span><span style="color: #339933;">;</span>
            <span style="color: #009900;">&#125;</span>
            <span style="color: #003399;">FileOutputStream</span> foStream <span style="color: #339933;">=</span> <span style="color: #000000; font-weight: bold;">new</span> <span style="color: #003399;">FileOutputStream</span><span style="color: #009900;">&#40;</span>RESULT<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
            PdfStamper stamper <span style="color: #339933;">=</span> <span style="color: #000000; font-weight: bold;">new</span> PdfStamper<span style="color: #009900;">&#40;</span>readPdf, foStream<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
            stamper.<span style="color: #006633;">close</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
        <span style="color: #009900;">&#125;</span>
        <span style="color: #000000; font-weight: bold;">catch</span> <span style="color: #009900;">&#40;</span><span style="color: #003399;">Exception</span> ex<span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
            <span style="color: #003399;">System</span>.<span style="color: #006633;">out</span>.<span style="color: #006633;">println</span><span style="color: #009900;">&#40;</span>ex<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
        <span style="color: #009900;">&#125;</span>
    <span style="color: #009900;">&#125;</span>
<span style="color: #009900;">&#125;</span></pre></div></div>

]]></content:encoded>
			<wfw:commentRss>http://www.malditoraton.com/erase-pdf-images-itext/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Arduino 0017 y Java</title>
		<link>http://www.malditoraton.com/arduino-0017-y-java/</link>
		<comments>http://www.malditoraton.com/arduino-0017-y-java/#comments</comments>
		<pubDate>Sun, 08 Nov 2009 17:00:33 +0000</pubDate>
		<dc:creator>Marat</dc:creator>
				<category><![CDATA[Arduino]]></category>
		<category><![CDATA[Java]]></category>

		<guid isPermaLink="false">http://www.malditoraton.com/?p=133</guid>
		<description><![CDATA[Todos los que empezamos a cacharrear con Arduino y, además nos encantaría hacerlo con Java en general y, con el IDE Netbeans en particular, acabamos encontrándonos con el post de Siverira Nieto en su web. Interesante artículo que nos permite empezar a explorar las posibilidades de ambos mundos. Sin embargo, la versión de arduino usada [...]]]></description>
			<content:encoded><![CDATA[<p>Todos los que empezamos a cacharrear con Arduino y, además nos encantaría hacerlo con Java en general y, con el IDE Netbeans en particular, acabamos encontrándonos  con el <a href="http://silveiraneto.net/2009/03/01/arduino-and-java/">post de Siverira Nieto en su web</a>.<br />
Interesante artículo que nos permite empezar a explorar las posibilidades de ambos mundos. Sin embargo, la versión de arduino usada en dicho artículo es la 0013 y desde entonces ha habido un cambio en una clase, de la que depende Arduino (Preferences), que hace que el código de ejemplo servido por Silveira sea inusable.<br />
Dicha librería tira un error de acceso protegido en Preferences.init(). La solución está en extender la clase Preferences. Así el código del tutorial de Silveira Nieto quedaría del siguiente modo:</p>

<div class="wp_syntax"><div class="code"><pre class="java" style="font-family:monospace;"><span style="color: #666666; font-style: italic;">/*
 * Original from http://silveiraneto.net/2009/03/01/arduino-and-java/
 * Modified for Arduino 0017 by http://www.malditoraton.com
 */</span>
&nbsp;
<span style="color: #000000; font-weight: bold;">package</span> <span style="color: #006699;">serialtalker</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #000000; font-weight: bold;">import</span> <span style="color: #006699;">gnu.io.CommPortIdentifier</span><span style="color: #339933;">;</span>
<span style="color: #000000; font-weight: bold;">import</span> <span style="color: #006699;">gnu.io.SerialPort</span><span style="color: #339933;">;</span>
<span style="color: #000000; font-weight: bold;">import</span> <span style="color: #006699;">java.io.InputStream</span><span style="color: #339933;">;</span>
<span style="color: #000000; font-weight: bold;">import</span> <span style="color: #006699;">java.io.OutputStream</span><span style="color: #339933;">;</span>
<span style="color: #000000; font-weight: bold;">import</span> <span style="color: #006699;">processing.app.Preferences</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #000000; font-weight: bold;">public</span> <span style="color: #000000; font-weight: bold;">class</span> Main <span style="color: #009900;">&#123;</span>
&nbsp;
    <span style="color: #000000; font-weight: bold;">static</span> <span style="color: #003399;">InputStream</span> input<span style="color: #339933;">;</span>
    <span style="color: #000000; font-weight: bold;">static</span> <span style="color: #003399;">OutputStream</span> output<span style="color: #339933;">;</span>
    <span style="color: #000000; font-weight: bold;">static</span> <span style="color: #000000; font-weight: bold;">public</span> <span style="color: #000000; font-weight: bold;">class</span> MyPrefs <span style="color: #000000; font-weight: bold;">extends</span> Preferences <span style="color: #009900;">&#123;</span>
        <span style="color: #000000; font-weight: bold;">static</span> <span style="color: #000000; font-weight: bold;">public</span> <span style="color: #000066; font-weight: bold;">void</span> init<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
            Preferences.<span style="color: #006633;">init</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;/home/malditoraton/.arduino/preferences.txt&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
        <span style="color: #009900;">&#125;</span>
    <span style="color: #009900;">&#125;</span>
&nbsp;
    <span style="color: #000000; font-weight: bold;">public</span> <span style="color: #000000; font-weight: bold;">static</span> <span style="color: #000066; font-weight: bold;">void</span> main<span style="color: #009900;">&#40;</span><span style="color: #003399;">String</span><span style="color: #009900;">&#91;</span><span style="color: #009900;">&#93;</span> args<span style="color: #009900;">&#41;</span> <span style="color: #000000; font-weight: bold;">throws</span> <span style="color: #003399;">Exception</span><span style="color: #009900;">&#123;</span>
        MyPrefs.<span style="color: #006633;">init</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
        <span style="color: #003399;">System</span>.<span style="color: #006633;">out</span>.<span style="color: #006633;">println</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;Using port: &quot;</span> <span style="color: #339933;">+</span> MyPrefs.<span style="color: #006633;">get</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;serial.port&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
        <span style="color: #003399;">System</span>.<span style="color: #006633;">out</span>.<span style="color: #006633;">println</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;Using board: &quot;</span> <span style="color: #339933;">+</span> MyPrefs.<span style="color: #006633;">get</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;board&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
        CommPortIdentifier portId <span style="color: #339933;">=</span> CommPortIdentifier.<span style="color: #006633;">getPortIdentifier</span><span style="color: #009900;">&#40;</span>
                MyPrefs.<span style="color: #006633;">get</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;serial.port&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
        SerialPort port <span style="color: #339933;">=</span> <span style="color: #009900;">&#40;</span>SerialPort<span style="color: #009900;">&#41;</span>portId.<span style="color: #006633;">open</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;serial talker&quot;</span>, <span style="color: #cc66cc;">4000</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
        input <span style="color: #339933;">=</span> port.<span style="color: #006633;">getInputStream</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
        output <span style="color: #339933;">=</span> port.<span style="color: #006633;">getOutputStream</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
        port.<span style="color: #006633;">setSerialPortParams</span><span style="color: #009900;">&#40;</span>MyPrefs.<span style="color: #006633;">getInteger</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;serial.debug_rate&quot;</span><span style="color: #009900;">&#41;</span>,
                SerialPort.<span style="color: #006633;">DATABITS_8</span>,
                SerialPort.<span style="color: #006633;">STOPBITS_1</span>,
                SerialPort.<span style="color: #006633;">PARITY_NONE</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
        <span style="color: #000000; font-weight: bold;">while</span><span style="color: #009900;">&#40;</span><span style="color: #000066; font-weight: bold;">true</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
            <span style="color: #000000; font-weight: bold;">while</span><span style="color: #009900;">&#40;</span>input.<span style="color: #006633;">available</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">&amp;</span>gt<span style="color: #339933;">;</span><span style="color: #cc66cc;">0</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
                <span style="color: #003399;">System</span>.<span style="color: #006633;">out</span>.<span style="color: #006633;">print</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#40;</span><span style="color: #000066; font-weight: bold;">char</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#40;</span>input.<span style="color: #006633;">read</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
            <span style="color: #009900;">&#125;</span>
        <span style="color: #009900;">&#125;</span>
    <span style="color: #009900;">&#125;</span>
<span style="color: #009900;">&#125;</span></pre></div></div>

<p>Ahora que está resuelto ya podemos seguir con nuestro desarrollos en Arduino con Java.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.malditoraton.com/arduino-0017-y-java/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

