estoy creando una app en java y quiero colocar la opcion de generar un pdf para la factura pero tengo algunos errores y no se por que, estoy utilizando la libreria de itextpdf 7, estoy trabajando en NetBeans.
`public void pdfPedido(int id_pedido) {
String fechaPedido = null, usuario = null, total = null,
sala = null, num_mesa = null;
try {
FileOutputStream archivo;
String url = FileSystemView.getFileSystemView().getDefaultDirectory().getPath();
File salida = new File(url + File.separator + "pedido.pdf");
archivo = new FileOutputStream(salida);
Document doc = new Document();
PdfWriter.getInstance((com.itextpdf.text.Document) doc, archivo);
**doc.open();**
Image img = Image.**getInstance**(getClass().getResource("/Imagenes/logo_Sant.png"));
//Fecha
String informacion = "SELECT p.*, s.nombre FROM pedidos p INNER JOIN salas s ON p.id_sala = s.id WHERE p.id = ?";
try {
ps = con.prepareStatement(informacion);
ps.setInt(1, id_pedido);
rs = ps.executeQuery();
if (rs.next()) {
num_mesa = rs.getString("num_mesa");
sala = rs.getString("nombre");
fechaPedido = rs.getString("fecha");
usuario = rs.getString("usuario");
total = rs.getString("total");
}
} catch (SQLException e) {
System.out.println(e.toString());
}
PdfPTable Encabezado = new PdfPTable(4);
Encabezado.setWidthPercentage(100);
Encabezado.getDefaultCell().setBorder(0);
float[] columnWidthsEncabezado = new float[]{20f, 20f, 60f, 60f};
Encabezado.setWidths(columnWidthsEncabezado);
Encabezado.setHorizontalAlignment(Element.ALIGN_LEFT);
Encabezado.addCell(img);
**Encabezado.addCell("");**
//info empresa
String config = "SELECT * FROM config";
String mensaje = "";
try {
con = cn.getConnection();
ps = con.prepareStatement(config);
rs = ps.executeQuery();
if (rs.next()) {
mensaje = rs.getString("mensaje");
Encabezado.addCell("Ruc: " + rs.getString("ruc")
+ "\nNombre: " + rs.getString("nombre")
+ "\nTeléfono: " + rs.getString("telefono")
+ "\nDirección: " + rs.getString("direccion")
);
}
} catch (SQLException e) {
System.out.println(e.toString());
}
//
Paragraph info = new Paragraph();
Font negrita = new Font(Font.FontFamily.TIMES_ROMAN, 12, Font.BOLD, BaseColor.BLUE);
info.add("Atendido: " + usuario
+ "\nN° Pedido: " + id_pedido
+ "\nFecha: " + fechaPedido
+ "\nSala: " + sala
+ "\nN° Mesa: " + num_mesa
);
Encabezado.addCell(info);
doc.**add**(Encabezado);
doc.**add**(Chunk.NEWLINE);
PdfPTable tabla = new PdfPTable(4);
tabla.setWidthPercentage(100);
tabla.getDefaultCell().setBorder(0);
float[] columnWidths = new float[]{10f, 50f, 15f, 15f};
tabla.setWidths(columnWidths);
tabla.setHorizontalAlignment(Element.ALIGN_LEFT);
PdfPCell c1 = new PdfPCell(new Phrase("Cant.", negrita));
PdfPCell c2 = new PdfPCell(new Phrase("Plato.", negrita));
PdfPCell c3 = new PdfPCell(new Phrase("P. unt.", negrita));
PdfPCell c4 = new PdfPCell(new Phrase("P. Total", negrita));
c1.setBorder(Rectangle.NO_BORDER);
c2.setBorder(Rectangle.NO_BORDER);
c3.setBorder(Rectangle.NO_BORDER);
c4.setBorder(Rectangle.NO_BORDER);
c1.setBackgroundColor(BaseColor.LIGHT_GRAY);
c2.setBackgroundColor(BaseColor.LIGHT_GRAY);
c3.setBackgroundColor(BaseColor.LIGHT_GRAY);
c4.setBackgroundColor(BaseColor.LIGHT_GRAY);
tabla.addCell(c1);
tabla.addCell(c2);
tabla.addCell(c3);
tabla.addCell(c4);
String product = "SELECT d.* FROM pedidos p INNER JOIN detalle_pedidos d ON p.id = d.id_pedido WHERE p.id = ?";
try {
ps = con.prepareStatement(product);
ps.setInt(1, id_pedido);
rs = ps.executeQuery();
while (rs.next()) {
double subTotal = rs.getInt("cantidad") * rs.getDouble("precio");
tabla.addCell(rs.getString("cantidad"));
tabla.addCell(rs.getString("nombre"));
tabla.addCell(rs.getString("precio"));
tabla.addCell(String.valueOf(subTotal));
}
} catch (SQLException e) {
System.out.println(e.toString());
}
doc.**add**(tabla);
Paragraph agra = new Paragraph();
agra.add(Chunk.NEWLINE);
agra.add("Total S/: " + total);
agra.setAlignment(Element.ALIGN_RIGHT);
doc.add(agra);
Paragraph firma = new Paragraph();
firma.add(Chunk.NEWLINE);
firma.add("Cancelacion \n\n");
firma.add("------------------------------------\n");
firma.**add**("Firma \n");
firma.setAlignment(Element.ALIGN_CENTER);
doc.add(firma);
Paragraph gr = new Paragraph();
gr.add(Chunk.NEWLINE);
gr.add(mensaje);
gr.setAlignment(Element.ALIGN_CENTER);
doc.**add**(gr);
doc.**close**();
archivo.close();
Desktop.getDesktop().open(salida);
} catch (DocumentException | IOException e) {
System.out.println(e.toString());
}finally{
try {
con.close();
} catch (SQLException e) {
System.out.println(e.toString());
}
}
}`
ese es el codigo que tengo implementado y las partes que estan con negrita(osea con **) es donde me arroja errores