Создавать много PDF-файлов подряд Java iTextPDFJAVA

Программисты JAVA общаются здесь
Ответить Пред. темаСлед. тема
Anonymous
 Создавать много PDF-файлов подряд Java iTextPDF

Сообщение Anonymous »

Я пытаюсь создать много PDF-файлов.
Когда я делаю только один, проблем не возникает, никогда не получается.
Но когда я помещаю его в цикл, иногда он создается, иногда 2 раза. , иногда 5, но некоторые с ошибками...
Я думаю, что это проблема с памятью, но не могу найти qвот в чем проблема
Пытался закрыть DocWriter, но дает мне исключение
Я даю вам код:
public class ImprimirRecogida {

Font font = FontFactory.getFont(FontFactory.HELVETICA, 10);
private PdfWriter docWriter = null;
private PdfContentByte cb;
FileOutputStream fOS;
Document document = new Document(PageSize.A4);//(842,
public String crearAutodeclaracion(String[] cli, String rutaFirma) {
try{

String codigo = cli[0];
String nombre = cli[1];
String direccion = cli[2];
String codPostal = cli[3];
String poblacion = cli[4];
Calendar cal = Calendar.getInstance();
SimpleDateFormat sdf = new SimpleDateFormat("yyyy");
File ruta = new File("C:\\Informes\\autodeclaraciones\\");

try{
String NOMBRE = new String();
NOMBRE = "AUTODECLARACION_"+codigo+"_"+sdf.format(cal.getTime())+".pdf";
String str = "C:\\Informes\\autodeclaraciones\\"+NOMBRE;
fOS = new FileOutputStream(str);
docWriter = PdfWriter.getInstance(document, fOS);//new FileOutputStream(FILE));//+System.currentTimeMillis()+".pdf"));
document.open();
cb = docWriter.getDirectContent();
document.open();
PdfReader reader = new PdfReader(ruta.getPath()+"\\"+"ISCC.pdf");
PdfImportedPage page;
page = docWriter.getImportedPage(reader, 1);
Image instance = Image.getInstance(page);
document.newPage();
document.add(instance);

try{

Image firmaCliente = Image.getInstance(rutaFirma);
firmaCliente.setAlignment(Image.RIGHT | Image.TEXTWRAP);
firmaCliente.scaleAbsolute(80, 45);
firmaCliente.setAbsolutePosition(425, 70);
document.add(firmaCliente);

} catch (Exception e) {
e.printStackTrace();
}
try{
addCB(225, 670 , nombre);
addCB(225, 610 , direccion);
addCB(225, 590 , codPostal+", "+poblacion);
addCB(225, 550 , "ESPAÑA");
addCB(225, 530 , " S.A.");
addCB(560, 315 , "X");
addCB(102, 90 , poblacion+","+ obtenerFechaParaAutodeclaracion());
} catch (Exception e) {
e.printStackTrace();
}
document.close();
fOS.close();
return ruta.getPath()+"/"+NOMBRE;
} catch (Exception e) {
e.printStackTrace();
}
} catch (Exception ee){
ee.printStackTrace();
}
return "";
}

private void addCB(float x, float y, String texto) {
try {
if(null == texto) {
texto = "";
}
cb.beginText();
BaseFont bFRegular;
bFRegular = BaseFont.createFont(BaseFont.HELVETICA, BaseFont.CP1252, BaseFont.NOT_EMBEDDED);
cb.setFontAndSize(bFRegular, 12);
cb.setTextMatrix(x, y); //(xPos, yPos)
cb.showText(texto);
cb.endText();
}
catch (Exception e) {
e.printStackTrace();
}
}
public String obtenerFechaParaAutodeclaracion() {
//15-19,22-26(incluidos)
try {
Random rand = new Random();

// nextInt is normally exclusive of the top value,
// so add 1 to make it inclusive
int randomNum = rand.nextInt((29 - 15) + 1) + 15;
StringBuilder sBFechaAutodec = new StringBuilder();
sBFechaAutodec.append(randomNum);
sBFechaAutodec.append("/01/");
sBFechaAutodec.append(UtilsVictor.getCurrentYear4Digits());
boolean encontrado = false;
while (!encontrado) {
Calendar cal = Calendar.getInstance();
SimpleDateFormat sdf = new SimpleDateFormat("dd/MM/yyyy");
cal.setTime(sdf.parse(sBFechaAutodec.toString()));
if ((cal.get(Calendar.DAY_OF_WEEK) != Calendar.SATURDAY && cal.get(Calendar.DAY_OF_WEEK) != Calendar.SUNDAY)){
encontrado = true;
return sBFechaAutodec.toString();
} else {
encontrado = false;
}
}
} catch (ParseException e) {
e.printStackTrace();
}
return "";
}
}

И вызов метода:
for(int i=0;i

Подробнее здесь: https://stackoverflow.com/questions/783 ... a-itextpdf
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «JAVA»