Tôi đang sử dụng thư viện iText để tạo tệp pdf trong Java. Tôi đang viết dữ liệu trong pdfptable, làm thế nào tôi có thể làm cho các biên giới của bảng vô hình?Đường viền vô hình của pdfptable
Trả lời
Các thành phần biên giới của PdfPTable được xác định bởi PdfPCell được thêm vào bảng. Mỗi ô sẽ có kiểu/định dạng riêng. Đây là API: http://api.itextpdf.com/
Ví dụ
PdfPTable table = new PdfPTable(2);
PdfPCell cellOne = new PdfPCell(new Phrase("Hello"));
PdfPCell cellTwo = new PdfPCell(new Phrase("World"));
cellOne.setBorder(Rectangle.NO_BORDER);
cellOne.setBackgroundColor(new Color(255,255,45));
cellTwo.setBorder(Rectangle.BOX);
table.addCell(cellOne);
table.addCell(cellTwo);
Nếu bạn muốn biết thêm chi tiết về các giá trị/Border Rectangle, hãy nhìn vào các iText phần giá trị liên tục cho Rectangle, ở đây: http://api.itextpdf.com/constant-values.html
PdfPTable nestedTable = new PdfPTable();
nestedTable.DefaultCell.Border = 0;
nestedTable.AddCell(new Phrase("First");
nestedTable.AddCell(new Phrase("Second");
nestedTable.AddCell(new Phrase("2515");
PdfPCell nestCell= new PdfPCell(nestedTable);
'nestedTable.DefaultCell.Border = 0;' - điều đó không đúng. Khi thử nghiệm tôi cũng thấy rằng không hoạt động. Trừ khi các thuộc tính DefaultCell và Border được công khai, điều này không bao giờ có thể hoạt động. – wmdvanzyl
Nó có thể hoạt động - nhưng chỉ trong C# (xem trường hợp của các thuộc tính và phương thức gọi), trong khi OP hỏi về giải pháp Java. Ngoài ra, còn thiếu dấu ngoặc đơn trong dòng 4-6. – mareckmareck
Trong ứng dụng của tôi, nó hoạt động như sau:
PdfPTable table = new PdfPTable(2);
table.getDefaultCell().setBorder(0);
...
Điều này không hiệu quả đối với tôi. – wmdvanzyl
'Hình chữ nhật.NO_BORDER' giống với' 0' Tôi muốn sử dụng tên hằng số, dễ đọc hơn và luôn tương thích khi nâng cấp trong phiên bản. – chillworld
Phương pháp này dường như không hoạt động trong phiên bản 5.5.6. Câu trả lời của Sean là chính xác: cellOne.setBorder (Rectangle.NO_BORDER); –
Phần bên dưới phù hợp với tôi.
table.getDefaultCell().setBorderWidth(0f);
Không, nó không hoạt động –
đặt màu trắng. cellOne.setBorderColor (BaseColor.WHITE);
Cảm ơn, đó là những gì tôi muốn. – yogsma
Tôi đã thử cả hai cách độc lập và cả hai dường như làm cho đường biên vô hình. Sự khác biệt chính xác giữa 'cellOne.setBorder (Rectangle.NO_BORDER);' và 'cellTwo.setBorder (Rectangle.BOX);'? – Qohelet
cảm ơn, hãy làm việc tốt !! –