diff --git a/dspace-api/pom.xml b/dspace-api/pom.xml
index 297e08d2f4..28a15eb7b5 100644
--- a/dspace-api/pom.xml
+++ b/dspace-api/pom.xml
@@ -620,16 +620,9 @@
- com.itextpdf
- itextpdf
- 5.1.2
- jar
-
-
- com.itextpdf.tool
- xmlworker
- 1.1.0
- jar
+ org.apache.pdfbox
+ pdfbox
+ 1.8.7
diff --git a/dspace-api/src/main/java/org/dspace/disseminate/CitationDocument.java b/dspace-api/src/main/java/org/dspace/disseminate/CitationDocument.java
index bbbc24b23b..52b45ce76f 100644
--- a/dspace-api/src/main/java/org/dspace/disseminate/CitationDocument.java
+++ b/dspace-api/src/main/java/org/dspace/disseminate/CitationDocument.java
@@ -7,11 +7,14 @@
*/
package org.dspace.disseminate;
-import com.itextpdf.text.*;
-import com.itextpdf.text.pdf.*;
-import com.itextpdf.text.pdf.draw.LineSeparator;
import org.apache.commons.lang.StringUtils;
import org.apache.log4j.Logger;
+import org.apache.pdfbox.exceptions.COSVisitorException;
+import org.apache.pdfbox.pdmodel.PDDocument;
+import org.apache.pdfbox.pdmodel.PDPage;
+import org.apache.pdfbox.pdmodel.edit.PDPageContentStream;
+import org.apache.pdfbox.pdmodel.font.PDFont;
+import org.apache.pdfbox.pdmodel.font.PDType1Font;
import org.dspace.authorize.AuthorizeException;
import org.dspace.authorize.AuthorizeManager;
import org.dspace.content.*;
@@ -281,16 +284,69 @@ public class CitationDocument {
* @param bitstream The source bitstream being cited. This must be a PDF.
* @param cMeta The citation information used to generate the coverpage.
* @return The temporary File that is the finished, cited document.
- * @throws com.itextpdf.text.DocumentException
* @throws java.io.FileNotFoundException
* @throws SQLException
* @throws org.dspace.authorize.AuthorizeException
*/
private File makeCitedDocument(Bitstream bitstream, CitationMeta cMeta)
- throws DocumentException, IOException, SQLException, AuthorizeException {
+ throws IOException, SQLException, AuthorizeException, COSVisitorException {
//Read the source bitstream
- PdfReader source = new PdfReader(bitstream.retrieve());
+ //PdfReader source = new PdfReader(bitstream.retrieve());
+ log.info("0");
+ PDDocument document = new PDDocument();
+
+ PDDocument sourceDocument = new PDDocument();
+ sourceDocument = sourceDocument.load(bitstream.retrieve());
+ log.info("1");
+ String tempDirString = ConfigurationManager.getProperty("dspace.dir") + "/temp";
+ File tempDir = new File(tempDirString);
+ if(!tempDir.exists()) {
+ boolean success = tempDir.mkdir();
+ if(success) {
+ log.info("Created temp dir");
+ } else {
+ log.info("Not created temp dir");
+ }
+ } else {
+ log.info(tempDir + " exists");
+ }
+
+ log.info("2");
+ PDPage coverPage = new PDPage(PDPage.PAGE_SIZE_LETTER);
+ log.info("3");
+ document.addPage(coverPage);
+ log.info("3.1");
+ PDFont font = PDType1Font.HELVETICA_BOLD;
+ PDPageContentStream contentStream = new PDPageContentStream(document, coverPage);
+ log.info("4");
+ contentStream.beginText();
+ contentStream.setFont(font, 12);
+ contentStream.moveTextPositionByAmount(100, 700);
+ contentStream.drawString("Hello World");
+ contentStream.endText();
+ contentStream.close();
+
+
+ log.info("5");
+ List sourcePageList = sourceDocument.getDocumentCatalog().getAllPages();
+ log.info("6");
+ for(PDPage sourcePage : sourcePageList) {
+ log.info("7.page");
+ document.addPage(sourcePage);
+ }
+ sourcePageList.clear();
+
+ log.info("8");
+ document.save(tempDir.getAbsolutePath() + "/bitstream.cover.pdf");
+ log.info("9");
+ document.close();
+ log.info("10");
+ sourceDocument.close();
+ return new File(tempDir.getAbsolutePath() + "/bitstream.cover.pdf");
+
+
+ /*
Document citedDoc = new Document(PageSize.LETTER);
File coverTemp = File.createTempFile(bitstream.getName(), ".cover.pdf");
@@ -345,7 +401,7 @@ public class CitationDocument {
coverTemp.delete();
citedTemp.deleteOnExit();
- return citedTemp;
+ return citedTemp;*/
}
/**
@@ -359,7 +415,7 @@ public class CitationDocument {
* @throws IOException
* @throws DocumentException
*/
- private void generateCoverPage(Document cDoc, PdfWriter writer, CitationMeta cMeta) throws DocumentException {
+ /*private void generateCoverPage(Document cDoc, PdfWriter writer, CitationMeta cMeta) throws DocumentException {
cDoc.open();
writer.setCompressionLevel(0);
@@ -475,7 +531,7 @@ public class CitationDocument {
cDoc.add(license);
cDoc.close();
- }
+ }*/
/**
* Attempts to add a Logo to the document from the given resource. Returns
@@ -490,7 +546,7 @@ public class CitationDocument {
*
* @return Succesfully added logo to document.
*/
- private boolean addLogoToDocument(Document doc, PdfWriter writer, String res) {
+ /*private boolean addLogoToDocument(Document doc, PdfWriter writer, String res) {
boolean ret = false;
try {
//First we try to get the logo as if it is a Java Resource
@@ -543,7 +599,7 @@ public class CitationDocument {
ret = false;
}
return ret;
- }
+ }*/
public String getOwningCommunity(Item item) {
try {