X-Git-Url: http://git.phpeclipse.com
diff --git a/archive/net.sourceforge.phpeclipse.wiki/src/net/sourceforge/phpeclipse/wiki/export/pdf/WikiPDFExporter.java b/archive/net.sourceforge.phpeclipse.wiki/src/net/sourceforge/phpeclipse/wiki/export/pdf/WikiPDFExporter.java
index 8ab96ef..4ba33df 100644
--- a/archive/net.sourceforge.phpeclipse.wiki/src/net/sourceforge/phpeclipse/wiki/export/pdf/WikiPDFExporter.java
+++ b/archive/net.sourceforge.phpeclipse.wiki/src/net/sourceforge/phpeclipse/wiki/export/pdf/WikiPDFExporter.java
@@ -1,6 +1,6 @@
package net.sourceforge.phpeclipse.wiki.export.pdf;
-import java.io.FileNotFoundException;
+import java.awt.Color;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.StringReader;
@@ -25,9 +25,12 @@ import org.eclipse.jface.operation.IRunnableWithProgress;
import org.eclipse.ui.PlatformUI;
import org.eclipse.ui.dialogs.IOverwriteQuery;
+import com.lowagie.text.Chapter;
import com.lowagie.text.Document;
-import com.lowagie.text.DocumentException;
-import com.lowagie.text.html.HtmlParser;
+import com.lowagie.text.Font;
+import com.lowagie.text.FontFactory;
+import com.lowagie.text.PageSize;
+import com.lowagie.text.Paragraph;
import com.lowagie.text.pdf.PdfWriter;
//import de.java2html.converter.JavaSource2HTMLConverter;
@@ -182,7 +185,7 @@ public final class WikiPDFExporter implements IRunnableWithProgress {
*
* @see org.eclipse.jface.operation.IRunnableWithProgress#run(org.eclipse.core.runtime.IProgressMonitor)
*/
-public void run(IProgressMonitor monitor) throws InvocationTargetException, InterruptedException {
+ public void run(IProgressMonitor monitor) throws InvocationTargetException, InterruptedException {
WikiFilesVisitor visitor = new WikiFilesVisitor();
for (int i = 0; i < fResourcesToExport.size(); i++) {
@@ -195,66 +198,186 @@ public void run(IProgressMonitor monitor) throws InvocationTargetException, Inte
List list = visitor.getList();
Collections.sort(list, new IFileComparator());
- IFile file;
- StringBuffer htmlBuffer = new StringBuffer();
- htmlBuffer.append("
");
- for (int i = 0; i < list.size(); i++) {
- try {
- file = (IFile) list.get(i);
- monitor.subTask(WikiEditorPlugin.getResourceString("Export.exportFile") + file.getLocation());
- System.out.println(file.getLocation().toString());
- // TODO add the real title here:
- htmlBuffer.append(""+file.getName()+"
");
- CreatePageAction.createFragmentPage(file, htmlBuffer);
- if (i < list.size()-1) {
-// TODO create a boolean flag to determine, if we would like a new page or only horizontal ruler
- htmlBuffer.append("
");
- }
- System.out.println(htmlBuffer.toString());
- // CreatePageAction.createPage(templateFileName, (IFile) resources[i], exportDirectoryName, srcBasePath);
- monitor.worked(1);
- } catch (Exception e) {
- addError("PDF export exception", e);
- }
- }
- htmlBuffer.append("");
-
- StringReader stream = null;
- String pdffilename = fPath.toString();
+ IFile file = null;
+
FileOutputStream os = null;
+ String pdffilename = fPath.toString();
+
+ Document document = new Document(PageSize.A4);
+ PdfWriter pdfWriter = null;
try {
-
- HtmlParser parser = new HtmlParser();
- Document document = new Document();
- document.open();
os = new FileOutputStream(pdffilename);
- monitor.subTask("Generating PDF file: "+pdffilename);
- stream = new StringReader(htmlBuffer.toString());
- PdfWriter pdfWriter = PdfWriter.getInstance(document, os);
-// pdfWriter.s
- parser.go(document, stream);
- } catch (FileNotFoundException e) {
- e.printStackTrace();
+ pdfWriter = PdfWriter.getInstance(document, os);
+ pdfWriter.setViewerPreferences(PdfWriter.PageModeUseOutlines);
+
+ document.open();
+ document.resetPageCount();
+ int chapterNumber = 1;
+ for (int i = 0; i < list.size(); i++) {
+ try {
+ file = (IFile) list.get(i);
+ if (file.exists()) {
+ monitor.subTask(WikiEditorPlugin.getResourceString("Export.exportFile") + file.getLocation());
+
+ StringBuffer htmlBuffer = new StringBuffer();
+ htmlBuffer.append("");
+
+ boolean noContent = CreatePageAction.createFragmentPage(file, htmlBuffer);
+ htmlBuffer.append("");
+
+ if (!noContent) {
+ System.out.println(file.getLocation().toString());
+ System.out.println(htmlBuffer.toString());
+ String fileName = file.getName();
+ fileName = fileName.replaceAll("_", " ");
+ int dotIndex = fileName.lastIndexOf('.');
+ if (dotIndex>0) {
+ fileName = fileName.substring(0,dotIndex);
+ }
+ Paragraph title = new Paragraph(fileName, FontFactory.getFont(FontFactory.HELVETICA, 18, Font.BOLDITALIC,
+ Color.BLACK));
+ Chapter chapter = new Chapter(title, chapterNumber++);
+ document.add(chapter);
+ appendArticle(document, htmlBuffer);
+ }
+ monitor.worked(1);
+ }
+ } catch (Exception e) {
+ String error = "PDF export exception: "+e.getMessage();
+ if (file!=null) {
+ error = file.getLocation().toString()+" - "+e.getMessage();
+ }
+ addError(error, e);
+ }
+ }
} catch (Exception e) {
- e.printStackTrace();
+ String error = "PDF export exception: "+e.getMessage();
+ addError(error, e);
} finally {
- if (stream!=null) {
- stream.close();
+ document.close();
+ if (pdfWriter != null) {
+ pdfWriter.close();
}
- if (os!=null) {
+ if (os != null) {
try {
os.close();
} catch (IOException e1) {
}
}
+
}
System.out.println(fPath.toString());
}
+
+ /**
+ * @param document
+ * @param htmlBuffer
+ * @param monitor
+ */
+ private void appendArticle(Document document, StringBuffer htmlBuffer) {
+ StringReader stream = null;
+ try {
+ WPHtmlParser parser = new WPHtmlParser();
+ stream = new StringReader(htmlBuffer.toString());
+ parser.go(document, stream);
+ } catch (Exception e) {
+ addError("PDF export exception", e);
+ } finally {
+ if (stream != null) {
+ stream.close();
+ }
+ }
+ }
+
+ // public void run(IProgressMonitor monitor) throws InvocationTargetException, InterruptedException {
+ //
+ // WikiFilesVisitor visitor = new WikiFilesVisitor();
+ // for (int i = 0; i < fResourcesToExport.size(); i++) {
+ // try {
+ // ((IResource) fResourcesToExport.get(i)).accept(visitor);
+ // } catch (CoreException e) {
+ // e.printStackTrace();
+ // }
+ // }
+ //
+ // List list = visitor.getList();
+ // Collections.sort(list, new IFileComparator());
+ // IFile file;
+ //
+ // FileOutputStream os = null;
+ // String pdffilename = fPath.toString();
+ // try {
+ // os = new FileOutputStream(pdffilename);
+ // Document document = new Document(PageSize.A4);
+ // PdfWriter pdfWriter = PdfWriter.getInstance(document, os);
+ // document.open();
+ // document.resetPageCount();
+ // for (int i = 0; i < list.size(); i++) {
+ // try {
+ // file = (IFile) list.get(i);
+ // monitor.subTask(WikiEditorPlugin.getResourceString("Export.exportFile") + file.getLocation());
+ //// System.out.println(file.getLocation().toString());
+ // StringBuffer htmlBuffer = new StringBuffer();
+ // // TODO add the real title here:
+ // htmlBuffer.append("" + file.getName() + "
");
+ // boolean noContent = CreatePageAction.createFragmentPage(file, htmlBuffer);
+ // if (i < list.size() - 1) {
+ // // TODO create a boolean flag to determine, if we would like a new page or only horizontal ruler
+ // htmlBuffer.append("
");
+ // }
+ //// System.out.println(htmlBuffer.toString());
+ //
+ // if (!noContent) {
+ // appendArticle(document, htmlBuffer);
+ // }
+ // // CreatePageAction.createPage(templateFileName, (IFile) resources[i], exportDirectoryName, srcBasePath);
+ // monitor.worked(1);
+ // } catch (Exception e) {
+ // addError("PDF export exception", e);
+ // }
+ // }
+ // document.close();
+ // } catch (Exception e) {
+ // addError("PDF export exception", e);
+ // } finally {
+ // if (os != null) {
+ // try {
+ // os.close();
+ // } catch (IOException e1) {
+ // }
+ // }
+ // }
+ //
+ // System.out.println(fPath.toString());
+ // }
+ //
+ // /**
+ // * @param document
+ // * @param htmlBuffer
+ // * @param monitor
+ // */
+ // private void appendArticle(Document document, StringBuffer htmlBuffer) {
+ // StringReader stream = null;
+ // try {
+ //// WPHtmlParser parser = new WPHtmlParser();
+ // stream = new StringReader(htmlBuffer.toString());
+ //// parser.go(document, stream);
+ // new HTMLWorker(document).parse(stream);
+ // } catch (Exception e) {
+ // addError("PDF export exception", e);
+ // } finally {
+ // if (stream != null) {
+ // stream.close();
+ // }
+ // }
+ // }
+
/**
* Add a new entry to the error table with the passed information
*/
protected void addError(String message, Throwable e) {
+ e.printStackTrace();
errorTable.add(new Status(IStatus.ERROR, PlatformUI.PLUGIN_ID, 0, message, e));
}
@@ -282,21 +405,21 @@ public void run(IProgressMonitor monitor) throws InvocationTargetException, Inte
return new MultiStatus(PlatformUI.PLUGIN_ID, IStatus.OK, errors, "PDF export problems occured", //$NON-NLS-1$
null);
}
-
+
// test
-// public static void main(String[] args) {
-// try {
-// HtmlParser parser = new HtmlParser();
-// Document document = new Document();
-// String htmlfilename = "C:/eclipse/wikibooks/wpbin/Synästhesie.html";
-// String pdffilename = "C:/eclipse/wikibooks/wpbin/code_java1.pdf";
-//
-// PdfWriter.getInstance(document, new FileOutputStream(pdffilename));
-// parser.go(document, htmlfilename);
-// } catch (FileNotFoundException e) {
-// e.printStackTrace();
-// } catch (DocumentException e) {
-// e.printStackTrace();
-// }
-// }
+ // public static void main(String[] args) {
+ // try {
+ // WPHtmlParser parser = new WPHtmlParser();
+ // Document document = new Document();
+ // String htmlfilename = "C:/eclipse/wikibooks/wpbin/Synästhesie.html";
+ // String pdffilename = "C:/eclipse/wikibooks/wpbin/code_java1.pdf";
+ //
+ // PdfWriter.getInstance(document, new FileOutputStream(pdffilename));
+ // parser.go(document, htmlfilename);
+ // } catch (FileNotFoundException e) {
+ // e.printStackTrace();
+ // } catch (DocumentException e) {
+ // e.printStackTrace();
+ // }
+ // }
}
\ No newline at end of file