Revision 9504

View differences:

org.gvsig.pdf/tags/org.gvsig.pdf-1.0.152/org.gvsig.pdf.app/pom.xml
1
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
2
  <modelVersion>4.0.0</modelVersion>
3
  <parent>
4
    <groupId>org.gvsig</groupId>
5
    <artifactId>org.gvsig.pdf</artifactId>
6
    <version>1.0.152</version>
7
  </parent>
8
  <artifactId>org.gvsig.pdf.app</artifactId>
9
  <packaging>pom</packaging>
10
  <name>${project.artifactId}</name>
11
  <modules>
12
  	<module>org.gvsig.pdf.app.mainplugin</module>
13
  </modules>
14
</project>
org.gvsig.pdf/tags/org.gvsig.pdf-1.0.152/org.gvsig.pdf.app/org.gvsig.pdf.app.mainplugin/buildNumber.properties
1
#Fri Apr 12 11:50:55 CEST 2024
2
buildNumber=155
org.gvsig.pdf/tags/org.gvsig.pdf-1.0.152/org.gvsig.pdf.app/org.gvsig.pdf.app.mainplugin/src/main/assembly/gvsig-plugin-package.xml
1
<!--
2

  
3
    gvSIG. Desktop Geographic Information System.
4

  
5
    Copyright (C) 2007-2013 gvSIG Association.
6

  
7
    This program is free software; you can redistribute it and/or
8
    modify it under the terms of the GNU General Public License
9
    as published by the Free Software Foundation; either version 3
10
    of the License, or (at your option) any later version.
11

  
12
    This program is distributed in the hope that it will be useful,
13
    but WITHOUT ANY WARRANTY; without even the implied warranty of
14
    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
15
    GNU General Public License for more details.
16

  
17
    You should have received a copy of the GNU General Public License
18
    along with this program; if not, write to the Free Software
19
    Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
20
    MA  02110-1301, USA.
21

  
22
    For any additional information, do not hesitate to contact us
23
    at info AT gvsig.com, or visit our website www.gvsig.com.
24

  
25
-->
26
<assembly>
27
    <id>gvsig-plugin-package</id>
28
    <formats>
29
        <format>zip</format>
30
    </formats>
31
    <baseDirectory>${project.artifactId}</baseDirectory>
32
    <includeBaseDirectory>true</includeBaseDirectory>
33
    <files>
34
        <file>
35
            <source>target/${project.artifactId}-${project.version}.jar</source>
36
            <outputDirectory>lib</outputDirectory>
37
        </file>
38
        <file>
39
            <source>target/package.info</source>
40
        </file>
41
    </files>
42

  
43
    <fileSets>
44
        <fileSet>
45
            <directory>src/main/resources-plugin</directory>
46
            <outputDirectory>.</outputDirectory>
47
        </fileSet>
48
    </fileSets>
49

  
50

  
51
    <dependencySets>
52
        <dependencySet>
53
            <useProjectArtifact>false</useProjectArtifact>
54
            <useTransitiveDependencies>false</useTransitiveDependencies>
55
            <outputDirectory>lib</outputDirectory>
56
            <includes>
57
                <include>org.gvsig:org.gvsig.pdf.lib.api</include>
58
                <include>org.gvsig:org.gvsig.pdf.lib.impl</include>
59
                <include>org.gvsig:org.gvsig.pdf.swing.api</include>
60
                <include>org.gvsig:org.gvsig.pdf.swing.impl</include>
61
                <include>org.icepdf.os:icepdf-viewer</include>
62
                <include>org.icepdf.os:icepdf-core</include>
63

  
64
                <include>javax.media:jai_core</include>
65
                <include>org.bouncycastle:bcpkix-jdk15on</include>
66
                
67
                <include>org.apache.pdfbox:pdfbox</include>
68
                <include>de.rototor.pdfbox:graphics2d</include>
69
                <include>org.apache.pdfbox:xmpbox</include>
70
                <include>org.apache.pdfbox:fontbox</include>
71
                <include>org.apache.tika:tika-core</include>
72

  
73
                <include>com.openhtmltopdf:openhtmltopdf-objects</include>
74
                <include>com.openhtmltopdf:openhtmltopdf-core</include>
75
                <include>com.openhtmltopdf:openhtmltopdf-java2d</include>
76
                <include>com.openhtmltopdf:openhtmltopdf-slf4j</include>
77
                <include>com.openhtmltopdf:openhtmltopdf-rtl-support</include>
78
                <include>com.openhtmltopdf:openhtmltopdf-svg-support</include>
79
                <include>com.openhtmltopdf:openhtmltopdf-pdfbox</include>
80

  
81
                <include>org.jsoup:jsoup</include>
82
                
83
                <!--
84
                <include>com.ibm.icu:icu4j</include>
85
                <include>org.apache.xmlgraphics:batik-transcoder</include>
86
                <include>org.apache.xmlgraphics:batik-shared-resources</include>
87
                <include>org.apache.xmlgraphics:batik-svggen</include>
88
                <include>org.apache.xmlgraphics:batik-codec</include>
89
                <include>org.apache.xmlgraphics:xmlgraphics-commons</include>
90
                -->
91
                
92
                
93
                
94
                <!--
95
                Estos dos jars ya se los esta llevando andami
96
                <include>org.bouncycastle:bcprov-jdk15on</include>
97
                <include>org.bouncycastle:bcprov-ext-jdk15on</include>
98
                -->
99
            </includes>
100
        </dependencySet>
101
    </dependencySets>
102

  
103
</assembly>
104

  
org.gvsig.pdf/tags/org.gvsig.pdf-1.0.152/org.gvsig.pdf.app/org.gvsig.pdf.app.mainplugin/src/main/java/org/gvsig/pdf/app/mainplugin/PDFExtension.java
1
/**
2
 * gvSIG. Desktop Geographic Information System.
3
 *
4
 * Copyright (C) 2007-2013 gvSIG Association.
5
 *
6
 * This program is free software; you can redistribute it and/or
7
 * modify it under the terms of the GNU General Public License
8
 * as published by the Free Software Foundation; either version 3
9
 * of the License, or (at your option) any later version.
10
 *
11
 * This program is distributed in the hope that it will be useful,
12
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
13
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
14
 * GNU General Public License for more details.
15
 *
16
 * You should have received a copy of the GNU General Public License
17
 * along with this program; if not, write to the Free Software
18
 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
19
 * MA  02110-1301, USA.
20
 *
21
 * For any additional information, do not hesitate to contact us
22
 * at info AT gvsig.com, or visit our website www.gvsig.com.
23
 */
24
package org.gvsig.pdf.app.mainplugin;
25

  
26
import javax.swing.JOptionPane;
27
import org.apache.commons.lang3.StringUtils;
28
import org.gvsig.andami.plugins.Extension;
29
import org.gvsig.pdf.lib.api.PDFDocument;
30
import org.gvsig.pdf.lib.api.PDFLocator;
31
import org.gvsig.pdf.lib.api.PDFManager;
32
import org.gvsig.pdf.swing.api.PDFSwingLocator;
33
import org.gvsig.pdf.swing.api.PDFSwingManager;
34
import org.gvsig.pdf.swing.api.PDFViewer;
35
import org.gvsig.tools.ToolsLocator;
36
import org.gvsig.tools.arguments.Arguments;
37
import org.gvsig.tools.exception.BaseException;
38
import org.gvsig.tools.i18n.I18nManager;
39
import org.gvsig.tools.swing.api.ToolsSwingLocator;
40
import org.gvsig.tools.swing.api.threadsafedialogs.ThreadSafeDialogsManager;
41
import org.gvsig.tools.swing.api.windowmanager.WindowManager;
42

  
43
/**
44
 *
45
 * @author jjdelcerro
46
 */
47
public class PDFExtension extends Extension {
48

  
49
    @Override
50
    public void initialize() {
51

  
52
    }
53

  
54
    @Override
55
    public void postInitialize() {
56
    }
57

  
58
    @Override
59
    public void execute(String action) {
60
    }
61

  
62
    @Override
63
    public void execute(String command, Object[] args) {
64
        if(StringUtils.equalsIgnoreCase(command, "show-pdf")) {
65
            Arguments arguments = Arguments.create(args);
66
            String title = (String) arguments.get("title", "PDF");
67
            WindowManager.MODE mode = (WindowManager.MODE) arguments.get("mode", WindowManager.MODE.WINDOW);
68
            if(arguments.contains("pdfdoc")){
69
                PDFDocument pdfdoc = (PDFDocument) arguments.get("pdfdoc");
70
                showPdf(pdfdoc, title, mode);
71
                return;
72
            }
73
            if(arguments.contains("source")){
74
                Object source = arguments.get("source");
75
                showPdf(source, title, mode);
76
                return;
77
            }
78
        }
79
    }
80
    
81
    
82

  
83
    @Override
84
    public boolean isEnabled() {
85
        return true;
86
    }
87

  
88
    @Override
89
    public boolean isVisible() {
90
        return false;
91
    }
92
    
93
    public void showPdf(Object source, String title, WindowManager.MODE mode) {
94
        PDFManager pdfManager = PDFLocator.getPDFManager();
95
        PDFDocument pdfDoc = pdfManager.createPDFDocument();
96
        pdfDoc.setSource(source);
97
        showPdf(pdfDoc, title, mode);
98
    }
99

  
100
    public void showPdf(PDFDocument pdfDoc, String title, WindowManager.MODE mode) {
101
        try {
102

  
103
            final PDFSwingManager pdfSwingManager = PDFSwingLocator.getPDFSwingManager();
104
            PDFViewer viewer = pdfSwingManager.createPDFViewer();
105
            viewer.put(pdfDoc);
106
            viewer.setMode(PDFViewer.MODE_LIGHT);
107
            WindowManager winManager = ToolsSwingLocator.getWindowManager();
108
            winManager.showWindow(viewer.asJComponent(), title, mode);
109
        } catch (Exception ex) {
110
            logger.warn("Can't show Pdf.'", ex);
111
            I18nManager i18n = ToolsLocator.getI18nManager();
112
            ThreadSafeDialogsManager dialogs = ToolsSwingLocator.getThreadSafeDialogsManager();
113
            dialogs.messageDialog(
114
                    i18n.getTranslation("_Cant_show_pdf") + ")\n\n" + BaseException.getMessageStack(ex, 0),
115
                    i18n.getTranslation("_Show_pdf"),
116
                    JOptionPane.WARNING_MESSAGE
117
            );
118
        }
119

  
120
    }
121
}
org.gvsig.pdf/tags/org.gvsig.pdf-1.0.152/org.gvsig.pdf.app/org.gvsig.pdf.app.mainplugin/src/main/resources-plugin/config.xml
1
<?xml version="1.0" encoding="ISO-8859-1"?>
2
<!-- gvSIG. Desktop Geographic Information System. Copyright (C) 2007-2014 gvSIG
3
  Association. This program is free software; you can redistribute it and/or modify
4
  it under the terms of the GNU General Public License as published by the Free Software
5
  Foundation; either version 3 of the License, or (at your option) any later version.
6
  This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY;
7
  without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
8
  PURPOSE. See the GNU General Public License for more details. You should have received
9
  a copy of the GNU General Public License along with this program; if not, write to
10
  the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301,
11
  USA. For any additional information, do not hesitate to contact us at info AT gvsig.com,
12
  or visit our website www.gvsig.com. -->
13
<plugin-config>
14
  <depends plugin-name="org.gvsig.app.mainplugin" />
15
  <resourceBundle name="text" />
16
  <libraries library-dir="lib" />
17
  <extensions>
18

  
19

  
20
      <extension class-name="org.gvsig.pdf.app.mainplugin.PDFExtension"
21
                 description="" active="true" priority="1">
22
        
23
          <action
24
              name= "show-pdf"
25
              label="_Show_pdf"
26
              tooltip="_Show_pdf"
27
              action-command="show-pdf"
28
              icon="show-pdf"
29
              position="1"
30
              accelerator=""
31
          />
32

  
33
      </extension>
34

  
35

  
36
  </extensions>
37
</plugin-config>
org.gvsig.pdf/tags/org.gvsig.pdf-1.0.152/org.gvsig.pdf.app/org.gvsig.pdf.app.mainplugin/src/main/resources-plugin/i18n/text.properties
1
#Translations for language [es]
2
#Thu Nov 20 10:10:09 CET 2014
3
_Open=Abrir
4
_Print_form=Imprimir formulario
5
_Simple_form=Formulario sencillo
6
_Reports=Informes
7
_Copy_template=Copiar plantilla
org.gvsig.pdf/tags/org.gvsig.pdf-1.0.152/org.gvsig.pdf.app/org.gvsig.pdf.app.mainplugin/src/main/resources-plugin/i18n/text_en.properties
1
#Translations for language [en]
2
#Thu Nov 20 10:10:15 CET 2014
3
_Open=Open
4
_Print_form=Print form
5
_Simple_form=Simple form
6
_Reports=Reports
7
_Copy_template=Copy template
org.gvsig.pdf/tags/org.gvsig.pdf-1.0.152/org.gvsig.pdf.app/org.gvsig.pdf.app.mainplugin/pom.xml
1
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
2
    <modelVersion>4.0.0</modelVersion>
3
    <parent>
4
        <groupId>org.gvsig</groupId>
5
        <artifactId>org.gvsig.pdf.app</artifactId>
6
        <version>1.0.152</version>
7
    </parent>
8
    <artifactId>org.gvsig.pdf.app.mainplugin</artifactId>
9
    <name>${project.artifactId}</name>
10
    <dependencies>
11
        <dependency>
12
            <groupId>org.gvsig</groupId>
13
            <artifactId>org.gvsig.app.mainplugin</artifactId>
14
            <scope>compile</scope>
15
        </dependency>
16
        <dependency>
17
            <groupId>org.gvsig</groupId>
18
            <artifactId>org.gvsig.andami</artifactId>
19
            <scope>compile</scope>
20
        </dependency>
21
        <dependency>
22
            <groupId>org.gvsig</groupId>
23
            <artifactId>org.gvsig.pdf.lib.api</artifactId>
24
            <scope>compile</scope>
25
        </dependency>
26
        <dependency>
27
            <groupId>org.gvsig</groupId>
28
            <artifactId>org.gvsig.pdf.lib.impl</artifactId>
29
            <scope>runtime</scope>
30
        </dependency>
31
        <dependency>
32
            <groupId>org.gvsig</groupId>
33
            <artifactId>org.gvsig.pdf.swing.api</artifactId>
34
            <scope>compile</scope>
35
        </dependency>
36
        <dependency>
37
            <groupId>org.gvsig</groupId>
38
            <artifactId>org.gvsig.pdf.swing.impl</artifactId>
39
            <scope>runtime</scope>
40
        </dependency>
41
        <dependency>
42
            <groupId>org.icepdf.os</groupId>
43
            <artifactId>icepdf-core</artifactId>
44
            <scope>runtime</scope>
45
        </dependency>
46
        <dependency>
47
            <groupId>org.icepdf.os</groupId>
48
            <artifactId>icepdf-viewer</artifactId>
49
            <scope>runtime</scope>
50
        </dependency>
51
        <dependency>
52
            <groupId>javax.media</groupId>
53
            <artifactId>jai_core</artifactId>
54
            <scope>runtime</scope>
55
        </dependency>
56
        <dependency>
57
            <groupId>org.jsoup</groupId>
58
            <artifactId>jsoup</artifactId>
59
            <scope>runtime</scope>
60
        </dependency>        
61
        <dependency>
62
            <groupId>org.bouncycastle</groupId>
63
            <artifactId>bcpkix-jdk15on</artifactId>
64
            <scope>runtime</scope>
65
        </dependency>
66
        <dependency>
67
            <groupId>org.bouncycastle</groupId>
68
            <artifactId>bcprov-jdk15on</artifactId>
69
            <scope>runtime</scope>
70
        </dependency>
71
        <dependency>
72
            <groupId>org.bouncycastle</groupId>
73
            <artifactId>bcprov-ext-jdk15on</artifactId>
74
            <scope>runtime</scope>
75
        </dependency>
76
        <dependency>
77
            <groupId>org.apache.pdfbox</groupId>
78
            <artifactId>pdfbox</artifactId>
79
            <scope>runtime</scope>
80
        </dependency>
81
        <dependency>
82
            <groupId>org.apache.pdfbox</groupId>
83
            <artifactId>fontbox</artifactId>
84
            <scope>runtime</scope>
85
        </dependency>
86
        <dependency>
87
            <groupId>de.rototor.pdfbox</groupId>
88
            <artifactId>graphics2d</artifactId>
89
            <scope>runtime</scope>
90
        </dependency>
91
        <dependency>
92
            <groupId>org.apache.tika</groupId>
93
            <artifactId>tika-core</artifactId>
94
        </dependency>
95
        
96
        <dependency>
97
            <groupId>com.openhtmltopdf</groupId>
98
            <artifactId>openhtmltopdf-objects</artifactId>
99
            <scope>runtime</scope>
100
        </dependency>
101
        <dependency>
102
            <groupId>com.openhtmltopdf</groupId>
103
            <artifactId>openhtmltopdf-core</artifactId>
104
            <scope>runtime</scope>
105
        </dependency>
106
        <dependency>
107
            <groupId>com.openhtmltopdf</groupId>
108
            <artifactId>openhtmltopdf-java2d</artifactId>
109
            <scope>runtime</scope>
110
        </dependency>
111
        <dependency>
112
            <groupId>com.openhtmltopdf</groupId>
113
            <artifactId>openhtmltopdf-slf4j</artifactId>
114
            <scope>runtime</scope>
115
        </dependency>
116
        <dependency>
117
            <groupId>com.openhtmltopdf</groupId>
118
            <artifactId>openhtmltopdf-rtl-support</artifactId>
119
            <scope>runtime</scope>
120
        </dependency>
121
        <dependency>
122
            <groupId>com.openhtmltopdf</groupId>
123
            <artifactId>openhtmltopdf-svg-support</artifactId>
124
            <scope>runtime</scope>
125
        </dependency>
126
        <dependency>
127
            <groupId>com.openhtmltopdf</groupId>
128
            <artifactId>openhtmltopdf-pdfbox</artifactId>
129
            <scope>compile</scope>
130
        </dependency>
131
        <dependency>
132
            <groupId>org.apache.pdfbox</groupId>
133
            <artifactId>xmpbox</artifactId>
134
            <scope>runtime</scope>
135
            <!--<type>bundle</type>-->
136
            <version>2.0.16</version>
137
        </dependency>
138
        
139
        <!--
140
        <dependency>
141
            <groupId>com.ibm.icu</groupId>
142
            <artifactId>icu4j</artifactId>
143
            <scope>runtime</scope>
144
        </dependency>
145
        <dependency>
146
            <groupId>org.apache.xmlgraphics</groupId>
147
            <artifactId>batik-transcoder</artifactId>
148
            <scope>runtime</scope>
149
        </dependency>
150
        <dependency>
151
            <groupId>org.apache.xmlgraphics</groupId>
152
            <artifactId>batik-shared-resources</artifactId>
153
            <scope>runtime</scope>
154
        </dependency>
155
        <dependency>
156
            <groupId>org.apache.xmlgraphics</groupId>
157
            <artifactId>batik-svggen</artifactId>
158
            <scope>runtime</scope>
159
        </dependency>
160
        <dependency>
161
            <groupId>org.apache.xmlgraphics</groupId>
162
            <artifactId>batik-codec</artifactId>
163
            <scope>runtime</scope>
164
        </dependency>
165
        <dependency>
166
            <groupId>org.apache.xmlgraphics</groupId>
167
            <artifactId>xmlgraphics-commons</artifactId>
168
            <scope>runtime</scope>
169
        </dependency>
170
        -->
171
    </dependencies>
172

  
173
    <properties>
174
        <gvsig.package.info.state>testing</gvsig.package.info.state>
175
        <gvsig.package.info.official>true</gvsig.package.info.official>
176
        <gvsig.package.info.dependencies>required: org.gvsig.app -ge 2.2.0</gvsig.package.info.dependencies>
177
        <gvsig.package.info.categories />
178
        <gvsig.package.info.name>PDF framework</gvsig.package.info.name>
179
        <gvsig.package.info.description>PDF framework and basic rules</gvsig.package.info.description>
180
        <gvsig.package.info.owner>gvSIG Association</gvsig.package.info.owner>
181
        <gvsig.package.info.javaVM>j1_8</gvsig.package.info.javaVM>
182
        <gvsig.package.info.sourcesURL>${project.scm.url}</gvsig.package.info.sourcesURL>
183
        <gvsig.package.info.poolURL>https://devel.gvsig.org/download/projects/gvsig-pdf/pool</gvsig.package.info.poolURL>
184
    </properties>
185

  
186
</project>
0 187

  
org.gvsig.pdf/tags/org.gvsig.pdf-1.0.152/org.gvsig.pdf.lib/org.gvsig.pdf.lib.api/src/main/resources/META-INF/services/org.gvsig.tools.library.Library
1
org.gvsig.pdf.lib.api.PDFLibrary
org.gvsig.pdf/tags/org.gvsig.pdf-1.0.152/org.gvsig.pdf.lib/org.gvsig.pdf.lib.api/src/main/java/org/gvsig/pdf/lib/api/PDFLibrary.java
1
/**
2
 * gvSIG. Desktop Geographic Information System.
3
 *
4
 * Copyright (C) 2007-2013 gvSIG Association.
5
 *
6
 * This program is free software; you can redistribute it and/or
7
 * modify it under the terms of the GNU General Public License
8
 * as published by the Free Software Foundation; either version 3
9
 * of the License, or (at your option) any later version.
10
 *
11
 * This program is distributed in the hope that it will be useful,
12
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
13
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
14
 * GNU General Public License for more details.
15
 *
16
 * You should have received a copy of the GNU General Public License
17
 * along with this program; if not, write to the Free Software
18
 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
19
 * MA  02110-1301, USA.
20
 *
21
 * For any additional information, do not hesitate to contact us
22
 * at info AT gvsig.com, or visit our website www.gvsig.com.
23
 */
24
package org.gvsig.pdf.lib.api;
25

  
26
import org.gvsig.fmap.dal.DALLibrary;
27
import org.gvsig.tools.ToolsLibrary;
28
import org.gvsig.tools.library.AbstractLibrary;
29
import org.gvsig.tools.library.LibraryException;
30

  
31
/**
32
 *
33
 * @author jjdelcerro
34
 */
35
public class PDFLibrary extends AbstractLibrary {
36

  
37
    @Override
38
    public void doRegistration() {
39
        super.doRegistration();
40
        registerAsAPI(PDFLibrary.class);
41
        this.require(ToolsLibrary.class);
42
        this.require(DALLibrary.class);
43
    }
44

  
45
    @Override
46
    protected void doInitialize() throws LibraryException {
47
    }
48

  
49
    @Override
50
    protected void doPostInitialize() throws LibraryException {
51
    }
52

  
53
}
org.gvsig.pdf/tags/org.gvsig.pdf-1.0.152/org.gvsig.pdf.lib/org.gvsig.pdf.lib.api/src/main/java/org/gvsig/pdf/lib/api/PDFManager.java
1
/**
2
 * gvSIG. Desktop Geographic Information System.
3
 *
4
 * Copyright (C) 2007-2013 gvSIG Association.
5
 *
6
 * This program is free software; you can redistribute it and/or
7
 * modify it under the terms of the GNU General Public License
8
 * as published by the Free Software Foundation; either version 3
9
 * of the License, or (at your option) any later version.
10
 *
11
 * This program is distributed in the hope that it will be useful,
12
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
13
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
14
 * GNU General Public License for more details.
15
 *
16
 * You should have received a copy of the GNU General Public License
17
 * along with this program; if not, write to the Free Software
18
 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
19
 * MA  02110-1301, USA.
20
 *
21
 * For any additional information, do not hesitate to contact us
22
 * at info AT gvsig.com, or visit our website www.gvsig.com.
23
 */
24
package org.gvsig.pdf.lib.api;
25

  
26
import java.io.File;
27
import java.io.OutputStream;
28
import java.util.List;
29
import org.gvsig.tools.task.SimpleTaskStatus;
30

  
31
/**
32
 *
33
 * @author jjdelcerro
34
 */
35
public interface PDFManager {
36
    
37
    public PDFDocument createPDFDocument(byte[] document);
38
    public PDFDocument createPDFDocument(String document);
39
    public PDFDocument createPDFDocument(File document);
40
    public PDFDocument createPDFDocument(); 
41
    public PDFWriter createPDFWriter();
42
    public void merge(List<PDFDocument> inputs, 
43
            OutputStream output, 
44
            long maxMemoryToUse, 
45
            String title, 
46
            String creator, 
47
            String subject
48
    );
49
    
50
    public void merge(List inputPdfs, File outputFile, String title, String creator, String subject, SimpleTaskStatus status);
51
    
52
    public void merge(List inputPdfs, OutputStream outputPdf, String title, String creator, String subject, SimpleTaskStatus status);
53
    
54
}
org.gvsig.pdf/tags/org.gvsig.pdf-1.0.152/org.gvsig.pdf.lib/org.gvsig.pdf.lib.api/src/main/java/org/gvsig/pdf/lib/api/PDFWriter.java
1
package org.gvsig.pdf.lib.api;
2

  
3
import java.awt.Graphics2D;
4

  
5
/**
6
 *
7
 * @author osc
8
 */
9
public interface PDFWriter {
10

  
11
    public static final int PAGE_LETTER = 1;
12
    public static final int PAGE_LEGAL = 2;
13
    public static final int PAGE_A4 = 4;
14
    public static final int PAGE_A5 = 5;
15

  
16
    public void open(int pageSize);
17

  
18
    public void close();
19

  
20
    public float getWidth();
21

  
22
    public float getHeight();
23

  
24
    public Graphics2D getGraphics2D();
25
    
26
    public byte[] toByteArray();
27
    
28
    public PDFDocument toDocument();
29
}
org.gvsig.pdf/tags/org.gvsig.pdf-1.0.152/org.gvsig.pdf.lib/org.gvsig.pdf.lib.api/src/main/java/org/gvsig/pdf/lib/api/PDFDocument.java
1
/*
2
 * To change this license header, choose License Headers in Project Properties.
3
 * To change this template file, choose Tools | Templates
4
 * and open the template in the editor.
5
 */
6
package org.gvsig.pdf.lib.api;
7

  
8
import java.io.IOException;
9
import java.io.InputStream;
10
import org.gvsig.tools.dispose.Disposable;
11
import org.gvsig.tools.swing.api.SimpleImage;
12

  
13
/**
14
 *
15
 * @author osc
16
 */
17
public interface PDFDocument extends Disposable {
18
    public InputStream getInputStream() throws IOException ;
19
    
20
    public void setSource(Object source);
21

  
22
    public byte[] toByteArray();
23
    
24
    public String toHexString();
25
    
26
    public int getNumberOfPages();
27
    
28
    public SimpleImage toImage();
29
    
30
    public SimpleImage toImage(int page);
31
    
32
    public SimpleImage toImage(int page, int dpis);
33
}
org.gvsig.pdf/tags/org.gvsig.pdf-1.0.152/org.gvsig.pdf.lib/org.gvsig.pdf.lib.api/src/main/java/org/gvsig/pdf/lib/api/PDFLocator.java
1
/**
2
 * gvSIG. Desktop Geographic Information System.
3
 *
4
 * Copyright (C) 2007-2013 gvSIG Association.
5
 *
6
 * This program is free software; you can redistribute it and/or
7
 * modify it under the terms of the GNU General Public License
8
 * as published by the Free Software Foundation; either version 3
9
 * of the License, or (at your option) any later version.
10
 *
11
 * This program is distributed in the hope that it will be useful,
12
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
13
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
14
 * GNU General Public License for more details.
15
 *
16
 * You should have received a copy of the GNU General Public License
17
 * along with this program; if not, write to the Free Software
18
 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
19
 * MA  02110-1301, USA.
20
 *
21
 * For any additional information, do not hesitate to contact us
22
 * at info AT gvsig.com, or visit our website www.gvsig.com.
23
 */
24
package org.gvsig.pdf.lib.api;
25

  
26
import org.gvsig.tools.locator.AbstractLocator;
27
import org.gvsig.tools.locator.Locator;
28
import org.gvsig.tools.locator.LocatorException;
29

  
30
@SuppressWarnings("rawtypes")
31
public class PDFLocator extends AbstractLocator {
32

  
33
	private static final String LOCATOR_NAME = "PDFLocator";
34
	
35
	public static final String PDF_MANAGER_NAME =
36
			"PDFManager";
37

  
38
	private static final String PDF_MANAGER_DESCRIPTION =
39
			"PDF Manager of gvSIG";
40
	
41
	private static final PDFLocator instance = new PDFLocator();
42

  
43
	private PDFLocator() {
44

  
45
	}
46

  
47
	/**
48
	 * Return the singleton instance.
49
	 * 
50
	 * @return the singleton instance
51
	 */
52
	public static PDFLocator getInstance() {
53
		return instance;
54
	}
55

  
56
        @Override
57
	public String getLocatorName() {
58
		return LOCATOR_NAME;
59
	}
60

  
61
	/**
62
	 * Return a reference to PDFManager.
63
	 * 
64
	 * @return a reference to PDFManager
65
	 * @throws LocatorException
66
	 *             if there is no access to the class or the class cannot be
67
	 *             instantiated
68
	 * @see Locator#get(String)
69
	 */
70
	public static PDFManager getPDFManager()
71
			throws LocatorException {
72
		return (PDFManager) getInstance().get(PDF_MANAGER_NAME);
73
	}
74

  
75
	/**
76
	 * Registers the Class implementing the PDFManager interface.
77
	 * 
78
	 * @param clazz
79
	 *            implementing the PDFManager interface
80
	 */
81
//	public static void registerPDFManager(Class clazz) {
82
//		getInstance().register(PDF_MANAGER_NAME,
83
//				PDF_MANAGER_DESCRIPTION, clazz);
84
//	}
85

  
86
	public static void registerDefaultPDFManager(Class clazz) {
87
		getInstance().registerDefault(PDF_MANAGER_NAME,
88
				PDF_MANAGER_DESCRIPTION, clazz);
89
	}
90

  
91

  
92
}
org.gvsig.pdf/tags/org.gvsig.pdf-1.0.152/org.gvsig.pdf.lib/org.gvsig.pdf.lib.api/pom.xml
1
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
2
  <modelVersion>4.0.0</modelVersion>
3
  <parent>
4
    <groupId>org.gvsig</groupId>
5
    <artifactId>org.gvsig.pdf.lib</artifactId>
6
    <version>1.0.152</version>
7
  </parent>
8
  <artifactId>org.gvsig.pdf.lib.api</artifactId>
9
  <name>${project.artifactId}</name>
10
  <dependencies>
11
    <dependency>
12
      <groupId>org.gvsig</groupId>
13
      <artifactId>org.gvsig.tools.lib</artifactId>
14
      <scope>compile</scope>
15
    </dependency>
16
    <dependency>
17
      <groupId>org.gvsig</groupId>
18
      <artifactId>org.gvsig.tools.swing.api</artifactId>
19
      <scope>compile</scope>
20
    </dependency>
21
<dependency>
22
      <groupId>org.gvsig</groupId>
23
      <artifactId>org.gvsig.fmap.dal.api</artifactId>
24
      <scope>compile</scope>
25
    </dependency>
26
  </dependencies>
27

  
28
</project>
0 29

  
org.gvsig.pdf/tags/org.gvsig.pdf-1.0.152/org.gvsig.pdf.lib/pom.xml
1
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
2
  <modelVersion>4.0.0</modelVersion>
3
  <parent>
4
    <groupId>org.gvsig</groupId>
5
    <artifactId>org.gvsig.pdf</artifactId>
6
    <version>1.0.152</version>
7
  </parent>
8
  <artifactId>org.gvsig.pdf.lib</artifactId>
9
  <packaging>pom</packaging>
10
  <name>${project.artifactId}</name>
11
  <modules>
12
  	<module>org.gvsig.pdf.lib.api</module>
13
  	<module>org.gvsig.pdf.lib.impl</module>
14
  </modules>
15
</project>
org.gvsig.pdf/tags/org.gvsig.pdf-1.0.152/org.gvsig.pdf.lib/org.gvsig.pdf.lib.impl/src/main/resources/org/gvsig/pdf/lib/impl/dejavu/LICENSE
1
Fonts are (c) Bitstream (see below). DejaVu changes are in public domain.
2
Glyphs imported from Arev fonts are (c) Tavmjong Bah (see below)
3

  
4
Bitstream Vera Fonts Copyright
5
------------------------------
6

  
7
Copyright (c) 2003 by Bitstream, Inc. All Rights Reserved. Bitstream Vera is
8
a trademark of Bitstream, Inc.
9

  
10
Permission is hereby granted, free of charge, to any person obtaining a copy
11
of the fonts accompanying this license ("Fonts") and associated
12
documentation files (the "Font Software"), to reproduce and distribute the
13
Font Software, including without limitation the rights to use, copy, merge,
14
publish, distribute, and/or sell copies of the Font Software, and to permit
15
persons to whom the Font Software is furnished to do so, subject to the
16
following conditions:
17

  
18
The above copyright and trademark notices and this permission notice shall
19
be included in all copies of one or more of the Font Software typefaces.
20

  
21
The Font Software may be modified, altered, or added to, and in particular
22
the designs of glyphs or characters in the Fonts may be modified and
23
additional glyphs or characters may be added to the Fonts, only if the fonts
24
are renamed to names not containing either the words "Bitstream" or the word
25
"Vera".
26

  
27
This License becomes null and void to the extent applicable to Fonts or Font
28
Software that has been modified and is distributed under the "Bitstream
29
Vera" names.
30

  
31
The Font Software may be sold as part of a larger software package but no
32
copy of one or more of the Font Software typefaces may be sold by itself.
33

  
34
THE FONT SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
35
OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OF MERCHANTABILITY,
36
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF COPYRIGHT, PATENT,
37
TRADEMARK, OR OTHER RIGHT. IN NO EVENT SHALL BITSTREAM OR THE GNOME
38
FOUNDATION BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, INCLUDING
39
ANY GENERAL, SPECIAL, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL DAMAGES,
40
WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF
41
THE USE OR INABILITY TO USE THE FONT SOFTWARE OR FROM OTHER DEALINGS IN THE
42
FONT SOFTWARE.
43

  
44
Except as contained in this notice, the names of Gnome, the Gnome
45
Foundation, and Bitstream Inc., shall not be used in advertising or
46
otherwise to promote the sale, use or other dealings in this Font Software
47
without prior written authorization from the Gnome Foundation or Bitstream
48
Inc., respectively. For further information, contact: fonts at gnome dot
49
org. 
50

  
51
Arev Fonts Copyright
52
------------------------------
53

  
54
Copyright (c) 2006 by Tavmjong Bah. All Rights Reserved.
55

  
56
Permission is hereby granted, free of charge, to any person obtaining
57
a copy of the fonts accompanying this license ("Fonts") and
58
associated documentation files (the "Font Software"), to reproduce
59
and distribute the modifications to the Bitstream Vera Font Software,
60
including without limitation the rights to use, copy, merge, publish,
61
distribute, and/or sell copies of the Font Software, and to permit
62
persons to whom the Font Software is furnished to do so, subject to
63
the following conditions:
64

  
65
The above copyright and trademark notices and this permission notice
66
shall be included in all copies of one or more of the Font Software
67
typefaces.
68

  
69
The Font Software may be modified, altered, or added to, and in
70
particular the designs of glyphs or characters in the Fonts may be
71
modified and additional glyphs or characters may be added to the
72
Fonts, only if the fonts are renamed to names not containing either
73
the words "Tavmjong Bah" or the word "Arev".
74

  
75
This License becomes null and void to the extent applicable to Fonts
76
or Font Software that has been modified and is distributed under the 
77
"Tavmjong Bah Arev" names.
78

  
79
The Font Software may be sold as part of a larger software package but
80
no copy of one or more of the Font Software typefaces may be sold by
81
itself.
82

  
83
THE FONT SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
84
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OF
85
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT
86
OF COPYRIGHT, PATENT, TRADEMARK, OR OTHER RIGHT. IN NO EVENT SHALL
87
TAVMJONG BAH BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
88
INCLUDING ANY GENERAL, SPECIAL, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL
89
DAMAGES, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
90
FROM, OUT OF THE USE OR INABILITY TO USE THE FONT SOFTWARE OR FROM
91
OTHER DEALINGS IN THE FONT SOFTWARE.
92

  
93
Except as contained in this notice, the name of Tavmjong Bah shall not
94
be used in advertising or otherwise to promote the sale, use or other
95
dealings in this Font Software without prior written authorization
96
from Tavmjong Bah. For further information, contact: tavmjong @ free
97
. fr.
98

  
99
$Id: LICENSE 2133 2007-11-28 02:46:28Z lechimp $
org.gvsig.pdf/tags/org.gvsig.pdf-1.0.152/org.gvsig.pdf.lib/org.gvsig.pdf.lib.impl/src/main/resources/META-INF/services/org.gvsig.tools.library.Library
1
org.gvsig.pdf.lib.impl.PDFImplLibrary
org.gvsig.pdf/tags/org.gvsig.pdf-1.0.152/org.gvsig.pdf.lib/org.gvsig.pdf.lib.impl/src/main/java/org/gvsig/pdf/lib/impl/DefaultPDFManager.java
1
/**
2
 * gvSIG. Desktop Geographic Information System.
3
 *
4
 * Copyright (C) 2007-2013 gvSIG Association.
5
 *
6
 * This program is free software; you can redistribute it and/or
7
 * modify it under the terms of the GNU General Public License
8
 * as published by the Free Software Foundation; either version 3
9
 * of the License, or (at your option) any later version.
10
 *
11
 * This program is distributed in the hope that it will be useful,
12
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
13
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
14
 * GNU General Public License for more details.
15
 *
16
 * You should have received a copy of the GNU General Public License
17
 * along with this program; if not, write to the Free Software
18
 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
19
 * MA  02110-1301, USA.
20
 *
21
 * For any additional information, do not hesitate to contact us
22
 * at info AT gvsig.com, or visit our website www.gvsig.com.
23
 */
24
package org.gvsig.pdf.lib.impl;
25

  
26
import java.io.BufferedOutputStream;
27
import java.io.ByteArrayOutputStream;
28
import java.io.File;
29
import java.io.FileOutputStream;
30
import java.io.IOException;
31
import java.io.InputStream;
32
import java.io.OutputStream;
33
import java.util.Calendar;
34
import java.util.List;
35
import org.apache.commons.io.IOUtils;
36
import org.apache.commons.io.output.CloseShieldOutputStream;
37
import org.apache.pdfbox.cos.COSStream;
38
import org.apache.pdfbox.io.MemoryUsageSetting;
39
import org.apache.pdfbox.multipdf.PDFMergerUtility;
40
import org.apache.pdfbox.pdmodel.PDDocumentInformation;
41
import org.apache.pdfbox.pdmodel.common.PDMetadata;
42
import org.apache.xmpbox.XMPMetadata;
43
import org.apache.xmpbox.schema.DublinCoreSchema;
44
import org.apache.xmpbox.schema.PDFAIdentificationSchema;
45
import org.apache.xmpbox.schema.XMPBasicSchema;
46
import org.apache.xmpbox.xml.XmpSerializer;
47
import org.gvsig.pdf.lib.api.PDFDocument;
48
import org.gvsig.pdf.lib.api.PDFManager;
49
import org.gvsig.pdf.lib.api.PDFWriter;
50
import org.gvsig.tools.ToolsLocator;
51
import org.gvsig.tools.folders.FoldersManager;
52
import org.gvsig.tools.task.SimpleTaskStatus;
53

  
54
public class DefaultPDFManager implements PDFManager {
55

  
56
    @Override
57
    public PDFDocument createPDFDocument(byte[] document) {
58
        DefaultPDFDocument doc = new DefaultPDFDocument();
59
        doc.setSource(document);
60
        return doc;
61
    }
62

  
63
    @Override
64
    public PDFDocument createPDFDocument(String document) {
65
        DefaultPDFDocument doc = new DefaultPDFDocument();
66
        doc.setSource(document);
67
        return doc;
68
    }
69

  
70
    @Override
71
    public PDFDocument createPDFDocument(File document) {
72
        DefaultPDFDocument doc = new DefaultPDFDocument();
73
        doc.setSource(document);
74
        return doc;
75
    }
76
   
77
    @Override
78
    public PDFDocument createPDFDocument() {
79
        DefaultPDFDocument doc = new DefaultPDFDocument();
80
        return doc;
81
    }
82

  
83
    @Override
84
    public PDFWriter createPDFWriter() {
85
        return new DefaultPDFWriter();
86
    }
87
    
88
    @Override
89
    public void merge(List<PDFDocument> inputs, OutputStream output, long maxMemoryToUse, String title, String creator, String subject) {
90
        try {
91
            PDFMergerUtility pdfMerger = new PDFMergerUtility();
92
            pdfMerger.setDestinationStream(output);
93

  
94
            PDDocumentInformation documentInformation = new PDDocumentInformation();
95
            documentInformation.setTitle(title);
96
            documentInformation.setCreator(creator);
97
            documentInformation.setSubject(subject);
98

  
99
            for (PDFDocument input : inputs) {
100
                pdfMerger.addSource(input.getInputStream());
101
            }
102
            FoldersManager folderManager = ToolsLocator.getFoldersManager();
103
            pdfMerger.mergeDocuments(
104
                    MemoryUsageSetting.setupMixed(maxMemoryToUse)
105
                            .setTempDir(folderManager.getTemporaryFolder())
106
            );        
107
        } catch (IOException ex) {
108
            throw new RuntimeException("Can't merge pdf documents", ex);
109
        }
110
    }
111
    
112
    @Override
113
    public void merge(List inputPdfs, File outputFile, String title, String creator, String subject, SimpleTaskStatus status) {
114
        FileOutputStream os = null;
115
        try {
116
            os = new FileOutputStream(outputFile);
117
            merge(inputPdfs, os, title, creator, subject, status);
118
        } catch (Exception ex) {
119
            throw new RuntimeException("Can't merge pdf's", ex);
120
        } finally {
121
            IOUtils.closeQuietly(os);
122
        }
123
        
124
    }
125
    
126
    @Override
127
    public void merge(List inputPdfs, OutputStream outputPdf, String title, String creator, String subject, SimpleTaskStatus status) {
128
        COSStream cosStream = null;
129
        OutputStream bos = null;
130
        try {
131
            status.push();
132
            status.setRangeOfValues(1, inputPdfs.size());
133
            PDFMergerUtility pdfMerger = new PDFMergerUtility();
134
            cosStream = new COSStream();
135
            if(outputPdf instanceof BufferedOutputStream){
136
                bos = CloseShieldOutputStream.wrap(outputPdf);
137
            } else {
138
                bos = new BufferedOutputStream(CloseShieldOutputStream.wrap(outputPdf));
139
            }
140
            pdfMerger.setDestinationStream(bos);
141
            PDDocumentInformation pdfDocumentInfo = createPDFDocumentInfo(title, creator, subject);
142
            PDMetadata xmpMetadata = createXMPMetadata(cosStream, title, creator, subject);
143
            pdfMerger.setDestinationDocumentInformation(pdfDocumentInfo);
144
            pdfMerger.setDestinationMetadata(xmpMetadata);
145
            for (Object pdf : inputPdfs) {
146
                if(pdf instanceof File){
147
                    pdfMerger.addSource((File)pdf);
148
                } else if(pdf instanceof PDFDocument){
149
                    pdfMerger.addSource(((PDFDocument)pdf).getInputStream());
150
                } else if(pdf instanceof InputStream){
151
                    pdfMerger.addSource((InputStream)pdf);
152
                }
153
                status.incrementCurrentValue();
154
            }
155
            pdfMerger.mergeDocuments(MemoryUsageSetting.setupTempFileOnly());
156
        } catch (Exception ex) {
157
            throw new RuntimeException("Can't merge pdf's", ex);
158
        } finally {
159
            IOUtils.closeQuietly(bos);
160
            IOUtils.closeQuietly(cosStream);
161
            status.pop();
162
        }
163

  
164
    }
165
    
166
    private PDDocumentInformation createPDFDocumentInfo(String title, String creator, String subject)
167
    {
168
//        LOG.info("Setting document info (title, author, subject) for merged PDF");
169
        PDDocumentInformation documentInformation = new PDDocumentInformation();
170
        documentInformation.setTitle(title);
171
        documentInformation.setCreator(creator);
172
        documentInformation.setSubject(subject);
173
        return documentInformation;
174
    }
175

  
176
    private PDMetadata createXMPMetadata(COSStream cosStream, String title, String creator, String subject)
177
            throws Exception
178
    {
179
//        LOG.info("Setting XMP metadata (title, author, subject) for merged PDF");
180
        XMPMetadata xmpMetadata = XMPMetadata.createXMPMetadata();
181

  
182
        // PDF/A-1b properties
183
        PDFAIdentificationSchema pdfaSchema = xmpMetadata.createAndAddPFAIdentificationSchema();
184
        pdfaSchema.setPart(1);
185
        pdfaSchema.setConformance("B");
186

  
187
        // Dublin Core properties
188
        DublinCoreSchema dublinCoreSchema = xmpMetadata.createAndAddDublinCoreSchema();
189
        dublinCoreSchema.setTitle(title);
190
        dublinCoreSchema.addCreator(creator);
191
        dublinCoreSchema.setDescription(subject);
192

  
193
        // XMP Basic properties
194
        XMPBasicSchema basicSchema = xmpMetadata.createAndAddXMPBasicSchema();
195
        Calendar creationDate = Calendar.getInstance();
196
        basicSchema.setCreateDate(creationDate);
197
        basicSchema.setModifyDate(creationDate);
198
        basicSchema.setMetadataDate(creationDate);
199
        basicSchema.setCreatorTool(creator);
200

  
201
        // Create and return XMP data structure in XML format
202
        try (ByteArrayOutputStream xmpOutputStream = new ByteArrayOutputStream();
203
             OutputStream cosXMPStream = cosStream.createOutputStream())
204
        {
205
            new XmpSerializer().serialize(xmpMetadata, xmpOutputStream, true);
206
            cosXMPStream.write(xmpOutputStream.toByteArray());
207
            return new PDMetadata(cosStream);
208
        }
209
    }    
210
    
211

  
212
}
org.gvsig.pdf/tags/org.gvsig.pdf-1.0.152/org.gvsig.pdf.lib/org.gvsig.pdf.lib.impl/src/main/java/org/gvsig/pdf/lib/impl/PDFProfile.java
1
/*
2
 * To change this license header, choose License Headers in Project Properties.
3
 * To change this template file, choose Tools | Templates
4
 * and open the template in the editor.
5
 */
6
package org.gvsig.pdf.lib.impl;
7

  
8
import java.io.File;
9
import org.gvsig.fmap.dal.feature.AbstractDataProfile;
10
import org.gvsig.pdf.lib.api.PDFDocument;
11
import org.gvsig.pdf.lib.api.PDFLocator;
12
import org.gvsig.pdf.lib.api.PDFManager;
13
import org.gvsig.tools.dataTypes.CoercionException;
14
import org.gvsig.tools.dataTypes.DataType;
15
import org.gvsig.tools.dataTypes.DataTypes;
16
import org.gvsig.tools.dynobject.Tags;
17

  
18
public class PDFProfile extends AbstractDataProfile {
19

  
20
    /*friend*/PDFProfile() {
21
        super("PDF", File.class);
22
    }
23

  
24
    @Override
25
    protected Object doCreateData(Object pdf, Tags tags) {
26
        PDFManager manager = PDFLocator.getPDFManager();
27
        PDFDocument pdfdoc = manager.createPDFDocument();
28
        pdfdoc.setSource(pdf);
29
        return pdfdoc;
30
    }
31

  
32
    @Override
33
    protected Object doCoerce(DataType dataType, Object data, Tags tags) throws CoercionException {
34
        PDFDocument document;
35
        try {
36
            switch (dataType.getType()) {
37
                case DataTypes.BYTEARRAY:
38
                    document = PDFLocator.getPDFManager().createPDFDocument();
39
                    document.setSource(data);
40
                    return document.toByteArray();
41
                case DataTypes.FILE:
42
                    if (data instanceof File) {
43
                        return data;
44
                    }
45
                case DataTypes.STRING:
46
                    document = PDFLocator.getPDFManager().createPDFDocument();
47
                    document.setSource(data);
48
                    return document.toHexString();
49
                default:
50
                    break;
51
            }
52
        } catch (Exception ex) {
53
            throw new CoercionException("Can't convert pdf to " + dataType.getName(), ex);
54
        }
55
        throw new CoercionException("Can't convert pdf to " + dataType.getName());
56
    }
57

  
58
}
org.gvsig.pdf/tags/org.gvsig.pdf-1.0.152/org.gvsig.pdf.lib/org.gvsig.pdf.lib.impl/src/main/java/org/gvsig/pdf/lib/impl/DefaultPDFWriter.java
1
package org.gvsig.pdf.lib.impl;
2

  
3
import de.rototor.pdfbox.graphics2d.PdfBoxGraphics2D;
4
import java.awt.Graphics2D;
5
import java.io.IOException;
6
import org.apache.commons.io.output.ByteArrayOutputStream;
7
import org.apache.pdfbox.pdmodel.PDDocument;
8
import org.apache.pdfbox.pdmodel.PDPage;
9
import org.apache.pdfbox.pdmodel.common.PDRectangle;
10
import org.gvsig.pdf.lib.api.PDFDocument;
11
import org.gvsig.pdf.lib.api.PDFWriter;
12

  
13
/**
14
 *
15
 * @author gvSIG Team
16
 */
17

  
18
@SuppressWarnings("UseSpecificCatch")
19
public class DefaultPDFWriter implements PDFWriter {
20

  
21
    private PDRectangle pageSize;
22
    private PdfBoxGraphics2D graphics;
23
    private PDDocument document;
24
    private byte[] data;
25

  
26
    public DefaultPDFWriter() {
27

  
28
    }
29

  
30
    @Override
31
    public void open(int pageSize) {
32
        switch (pageSize) {
33
            case PDFWriter.PAGE_A4:
34
                this.pageSize = PDRectangle.A4;
35
                break;
36
            case PDFWriter.PAGE_A5:
37
                this.pageSize = PDRectangle.A5;
38
                break;
39
            case PDFWriter.PAGE_LEGAL:
40
                this.pageSize = PDRectangle.LEGAL;
41
                break;
42
            case PDFWriter.PAGE_LETTER:
43
                this.pageSize = PDRectangle.LETTER;
44
                break;
45
            default:
46
                throw new IllegalArgumentException("Invalid value of page format");
47
        }
48
        this.close();
49
        this.data = null;
50
    }
51

  
52
    @Override
53
    public void close() {
54
        if( this.graphics!=null ) {
55
            this.graphics.dispose();
56
            this.graphics = null;
57
        }
58
        if( this.document!=null ) {
59
            try {
60
                ByteArrayOutputStream os = new ByteArrayOutputStream();
61
                this.document.save(os);
62
                this.data = os.toByteArray();
63
            } catch (IOException ex) {
64
                this.data = null;
65
            }
66
            this.document = null;
67
        }
68
    }
69

  
70
    @Override
71
    public Graphics2D getGraphics2D() {
72
        try {
73
            if (this.graphics != null) {
74
                return this.graphics;
75
            }
76

  
77
            if (this.document == null) {
78
                this.document = new PDDocument();
79
                PDPage page = new PDPage(this.pageSize);
80
                this.document.addPage(page);
81
            }
82
            this.graphics = new PdfBoxGraphics2D(
83
                    this.document,
84
                    this.pageSize
85
            );
86
            return this.graphics;
87
        } catch (Exception ex) {
88
            throw new RuntimeException("Can't create graphics.", ex);
89
        }
90
    }
91

  
92
    @Override
93
    public float getWidth() {
94
        return this.pageSize.getWidth();
95
    }
96

  
97
    @Override
98
    public float getHeight() {
... This diff was truncated because it exceeds the maximum size that can be displayed.

Also available in: Unified diff