2017-11-19 1 views
-1

최대한 완성을 위해 노력할 것입니다.Java (with Itext)가 포함 된 PDF로 tableview를 작성하는 방법은 무엇입니까?

나는 iText를 5

와 PDF에서 "의 tableview"을 쓰고 싶어하지만 난 찾을 수 없습니다 : PDF 파일에서의 tableview를 작성하는 선이 무엇인지.

나는 scenebuilder로 tableview를 만듭니다.

응용 프로그램이 청구서를 인쇄하는 것이므로 tableview는 제품 목록입니다.

@FXML 
private TableView<Product> tableProduct; 


//Create table products 
final ObservableList<Product> productSelected = FXCollections.observableArrayList(
     new Product("Product name 1",23,23,1.0), 
     new Product("Product name 2",23,4,11.0), 
     new Product("Product name 3",45,3,11.0) 
); 

@Override 
    public void initialize(URL location, ResourceBundle resources) { 

    index.set(-1); //Ligne de code pour supprimer que quand on selcection: 


    namecolumn.setCellValueFactory(new PropertyValueFactory<Product, String>("name")); 
    tvacolumn.setCellValueFactory(new PropertyValueFactory<Product, Integer>("tva")); 
    quantitycolumn.setCellValueFactory(new PropertyValueFactory<Product, Integer>("quantity")); 
    pucolumn.setCellValueFactory(new PropertyValueFactory<Product, Double>("pu")); 
    totalcolumn.setCellValueFactory(new PropertyValueFactory<Product, Double>("total")); 

    tableProduct.setItems(productSelected); 

    //get the index when clicking on table row(ligne) 
     tableProduct.getSelectionModel().selectedItemProperty().addListener(new ChangeListener<Object>() { 
      @Override 
      public void changed(ObservableValue<?> observable, Object oldValue, Object newValue) { 
       index.set(productSelected.indexOf(newValue)); 
       //System.out.println("Ok index is:"+productSelected.indexOf(newValue)); 
      } 
     }); 

} 
===================================PDF===================================== 
Document document = new Document(); 
try { 
    PdfWriter.getInstance(document, new FileOutputStream(chemin)); 

    document.open(); 
    document.add(tableProduct); //Error 
    document.add(tableProduct.getItems().toString()); //Error 

catch (DocumentException de) { 
     de.printStackTrace(); 
    Logger.getLogger(PDFgenerator.class.getName()).log(Level.SEVERE, null, de); 
    } catch (IOException ioe) { 
    ioe.printStackTrace(); 
    } catch (Exception e) { 
    e.printStackTrace(); 
    } 

    document.close(); 

내가 솔루션을 계속 검색거야 :

내 시도가 있습니다. 내가 찾으면 그걸 넣는다. 가 너무 빨리하는 데 도움이 당신 주셔서 감사합니다;

+1

또한 당신이 작성하는 데 사용되는 코드를 추가하십시오 'tableView' – Quad

+0

또한 : 귀하의 질문에 따르면, 나는 당신이 iText의 이전 버전을 사용하고 있다고 가정합니다. 현재 버전은 iText 7이며 iText 5 또는 이전 버전을 사용하고 있습니다. 이것이 첫 번째 iText 프로젝트라면 iText 7을 사용하고 [테이블에 관한 튜토리얼] (https://developers.itextpdf.com/content/itext-7-building-blocks/chapter-5-adding-abstractelement-objects- 2 부). –

+0

테이블을 만들고 싶지 않습니다. 내 응용 프로그램의 테이블을 가져 와서 PDF로 작성하고 싶습니다. "tableview"를 작성할 수있는 Itext 클래스가 무엇인지 말해 줄 수 있습니까? 확장 가능한 테이블? 감사합니다. –

답변

-1

이 iTextPDF에게 PDF with Table 예를 여기

import com.itextpdf.text.Document; 
import com.itextpdf.text.DocumentException; 
import com.itextpdf.text.pdf.PdfPTable; 
import com.itextpdf.text.pdf.PdfWriter; 

import java.io.File; 
import java.io.FileOutputStream; 
import java.io.IOException; 



public class SimplePDFTable { 

    public static void main(String[] args) throws IOException, 
      DocumentException { 
     new SimplePDFTable().createPdf("sample.pdf"); 
    } 
    public void createPdf(String dest) throws IOException, DocumentException { 
     Document document = new Document(); 
     PdfWriter.getInstance(document, new FileOutputStream(dest)); 
     document.open(); 
     PdfPTable table = new PdfPTable(8); 
     for(int aw = 0; aw < 16; aw++){ 
      table.addCell("hi"); 
     } 
     document.add(table); 
     document.close(); 
    } 

} 
+0

스택 오버플로에서는 링크 전용 답변을 사용할 수 없습니다. 답변은 자체적으로 포함되어야하며 질문의 맥락에서 관련이 있어야합니다. –

+0

이 링크는 질문에 대답 할 수 있지만 답변의 핵심 부분을 여기에 포함시키고 참조 용 링크를 제공하는 것이 좋습니다. 링크 된 페이지가 변경되면 링크 전용 답변이 유효하지 않게 될 수 있습니다. - [검토 중] (리뷰/저품각 게시물/17997770) – Sentry

+1

지속적인 질문으로 답변드립니다 ... thanks –

0

을 참조하십시오)는 내가 proprose 솔루션이다)

public PdfPTable TableauPrincipale() { 

    PdfPTable table = new PdfPTable(5); 
    table.setWidthPercentage(100); 
    //------------------------On créer l'objet cellule-------------------- 

    PdfPCell cell = null; 
    //Description 
    table. addCell (getCell("Description",PdfPCell.ALIGN_CENTER)); 



    //TVA 
    table. addCell (getCell("TVA",PdfPCell.ALIGN_CENTER)); 

    //Quantity 
    table. addCell (getCell("Quantity",PdfPCell.ALIGN_CENTER)); 

    //P.U 
    table. addCell (getCell("P.U",PdfPCell.ALIGN_CENTER)); 

    //Total 
    table. addCell (getCell("Total",PdfPCell.ALIGN_CENTER)); 


    //CONTENU DU TABLEAU 
    for(int i = 0; i <=NombresProduits ; i++) 
    { 
     table. addCell (getCell(tableProduct.getItems().get(i).getName(),PdfPCell.ALIGN_CENTER)); 
     table.addCell(getCell(Integer.toString(tableProduct.getItems().get(i).getTva())+"%",PdfPCell.ALIGN_CENTER)); 
     table.addCell(getCell((Integer.toString(tableProduct.getItems().get(i).getQuantity())),PdfPCell.ALIGN_CENTER)); 
     table.addCell(getCell((Double.toString(tableProduct.getItems().get(i).getPu())),PdfPCell.ALIGN_CENTER)); 
     table.addCell(getCell((Double.toString(tableProduct.getItems().get(i).getTotal()))+"€",PdfPCell.ALIGN_CENTER)); 
    } 

    return table; 
} //Corps principale de l'appli 

private PdfPCell getCell(String text, int alignment) { 
    PdfPCell cell = new PdfPCell(new Phrase(text)); 
    cell.setPadding(0); 
    cell.setHorizontalAlignment(alignment); 
    cell.setBorder(PdfPCell.NO_BORDER); 
    return cell; 
} 
+0

질문에 대한 댓글에서 "나는 테이블을 만들고 싶지 않습니다"라고 선언했습니다 * 그러나 당신이 제안한 솔루션에서 그것은 당신이하는 일입니다. – mkl

+0

사실, 처음으로, 나는 tableview의 가치를 얻고 싶었습니다. 그것은 제 질문이었습니다. 내 응용 프로그램에 대한 후, 나는 값을 중심으로 테이블을 사용합니다. 정확성에 감사드립니다. –

관련 문제