private void savePDF(boolean multiplePages)
	{
		interrupted = false;
		saveOperationIsRunning = true;
		UIConvertDialog.this.multiplePages = multiplePages;

		currentSaveOperation = new Thread(new Runnable()
		{
			public void run()
			{
				if (UIConvertDialog.this.multiplePages)
				{
					try
					{
						FileOutputStream fileOutputStream = null;

						ArrayList<String> keywords = new ArrayList<String>();

						String buffer = keywordsField.getText().replaceAll(" ", "");

						StringTokenizer stringTokenizer = new StringTokenizer(buffer, ",");

						while (stringTokenizer.hasMoreTokens())
						{ 
							keywords.add(stringTokenizer.nextToken());
						}

						String title;
						String path;
						Writer writer;

						System.gc();

						title = pdfSaveAsField.getText();
						path = FilePath.createAbsolutePath(pdfWhereField.getText(), title, "pdf");

						fileOutputStream = new FileOutputStream(path);

						DocInfoDict docInfoDict = new DocInfoDict(title,
								authorField.getText(),
								subjectField.getText(),
								keywords);

						writer = new BufferedWriter(new OutputStreamWriter(fileOutputStream , "ISO-8859-1"));
						writer.write(PDFModule.getPDFData(tableModel.vectorFiles, docInfoDict));
						writer.close();
						writer = null;

						fileOutputStream.close();

						title = null;
						path = null;
						fileOutputStream = null;
						writer = null;

						System.gc();

						progressBar.setValue(progressBar.getValue() + 1);

						keywords = null;
						saveOperationIsRunning = false;
						close();
					}
					catch (Exception exception)
					{
						saveOperationIsRunning = false;
						close();

						IOException ioException= new IOException(EXCEPTION_ENGINE_CODE_CONVERT);

						UIExceptionDialog.showDialog(ioException);
					}
				}
				else
				{
					try
					{
						FileOutputStream fileOutputStream = null;

						ArrayList<String> keywords = new ArrayList<String>();

						String buffer = keywordsField.getText().replaceAll(" ", "");

						StringTokenizer stringTokenizer = new StringTokenizer(buffer, ",");

						while (stringTokenizer.hasMoreTokens())
						{ 
							keywords.add(stringTokenizer.nextToken());
						}

						ArrayList<VectorFile> vectorFiles;

						String title;
						String path;
						Writer writer;

						for (int i = 0, n = tableModel.vectorFiles.size(); i < n; i++)
						{
							if (interrupted)
							{
								break;
							}
							else
							{
								System.gc();

								title = tableModel.vectorFiles.get(i).getTitle();
								path = FilePath.createAbsolutePath(whereField.getText(), title, "pdf");

								fileOutputStream = new FileOutputStream(path);

								DocInfoDict docInfoDict = new DocInfoDict(title,
										authorField.getText(),
										subjectField.getText(),
										keywords);

								vectorFiles = new ArrayList<VectorFile>();
								vectorFiles.add(tableModel.vectorFiles.get(i));

								writer = new BufferedWriter(new OutputStreamWriter(fileOutputStream , "ISO-8859-1"));
								writer.write(PDFModule.getPDFData(vectorFiles, docInfoDict));
								writer.close();
								writer = null;

								fileOutputStream.close();

								vectorFiles = null;
								title = null;
								path = null;
								fileOutputStream = null;
								writer = null;

								System.gc();

								progressBar.setValue(progressBar.getValue() + 1);
							}
						}

						vectorFiles = null;
						keywords = null;
						saveOperationIsRunning = false;
						close();
					}
					catch (Exception exception)
					{
						saveOperationIsRunning = false;
						close();

						IOException ioException= new IOException(EXCEPTION_ENGINE_CODE_CONVERT);

						UIExceptionDialog.showDialog(ioException);
					}
				}
			}
		});

		currentSaveOperation.start();
	}