2011-09-06 6 views
2

Je suis à la recherche d'une solution pour créer un fichier pdf avec MonoDroid. Ce pourrait aussi être une forme pdf dans laquelle je remplirais le contenu. J'ai essayé différentes librarys comme pdfsharp_on_mono ou iTextSharp, mais il ne fonctionne pas. Créer un nouveau fichier pdf vide n'est pas un problème. Mais quand j'essaie de remplir le contenu, il y a toujours des erreurs.créer ou remplir un pdf avec MonoDroid

Mon but est d'avoir un fichier PDF, qui à un moment ultérieur devrait être rempli par un fichier xml. En ce moment, je serais heureux si je ne pouvais tout simplement créer un pdf et quelque chose « d'écriture » en elle. Quelqu'un at-il un soupçon, comment je peux le réaliser? Je suis vraiment un noob en monodroid.

Si vous avez besoin des messages de code ou d'erreur, dites. J'ai essayé différentes solutions. acclame anna

ps: désolé pour mon mauvais anglais.

Répondre

0

How to create PDFs in an Android app?

Vous pouvez écrire la classe java qui fera tout travail avec PDF à l'aide des solutions existantes pour Java, puis en utilisant JNIEnv créer la classe proxy pour elle et l'utiliser dans le code managé. En utilisant la bibliothèque iText, nous pouvons créer un fichier pdf dans l'application Android.

0

import java.io.FileNotFoundException; 
import java.io.FileOutputStream; 
import com.itextpdf.text.Anchor; 
import com.itextpdf.text.BadElementException; 
import com.itextpdf.text.Chapter; 
import com.itextpdf.text.Document; 
import com.itextpdf.text.DocumentException; 
import com.itextpdf.text.Element; 
import com.itextpdf.text.Font; 
import com.itextpdf.text.Paragraph; 
import com.itextpdf.text.Phrase; 
import com.itextpdf.text.Section; 
import com.itextpdf.text.pdf.PdfPCell; 
import com.itextpdf.text.pdf.PdfPTable; 
import com.itextpdf.text.pdf.PdfWriter; 

import android.support.v7.app.ActionBarActivity; 
import android.os.Bundle; 
import android.os.Environment; 
import android.view.Menu; 
import android.view.MenuItem; 
import android.view.View; 
import android.view.View.OnClickListener; 
import android.widget.Button; 
public class CreatePdf extends ActionBarActivity implements OnClickListener { 

private static String FILE = Environment.getExternalStorageDirectory() 
     .getAbsolutePath() + "/filename.pdf"; 
private static Font catFont = new Font(Font.FontFamily.TIMES_ROMAN, 18, 
     Font.BOLD); 
private static Font subFont = new Font(Font.FontFamily.TIMES_ROMAN, 16, 
     Font.BOLD); 
Button createPdf; 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_create_pdf); 
    createPdf = (Button) findViewById(R.id.createBtn); 
    createPdf.setOnClickListener(this); 

} 

private void createPdf() { 
    try { 
     Document document = new Document(); 
     PdfWriter.getInstance(document, new FileOutputStream(FILE)); 
     document.open(); 
     addContent(document); 
     document.close(); 
    } catch (FileNotFoundException e) { 
     e.printStackTrace(); 
    } catch (DocumentException e) { 
     e.printStackTrace(); 
    } 
} 

private static void addContent(Document document) throws DocumentException { 

    Anchor anchor = new Anchor("Anchor", catFont); 
    anchor.setName("Hello PDF"); 

    // Second parameter is the number of the chapter 
    Chapter catPart = new Chapter(0); 

    Paragraph subPara = new Paragraph("Android PDF Created", subFont); 
    addEmptyLine(subPara, 1); 
    Section subCatPart = catPart.addSection(subPara); 

    Paragraph paragraph = new Paragraph(); 
    addEmptyLine(paragraph, 5); 
    // subCatPart.add(paragraph); 
    // Add a table 
    createTable(subCatPart); 
    // Now add all this to the document 
    document.add(catPart); 

} 

private static void createTable(Section subCatPart) 
     throws BadElementException { 

    PdfPTable table = new PdfPTable(4); 
    PdfPCell c1 = new PdfPCell(new Phrase("Cell 1")); 
    c1.setHorizontalAlignment(Element.ALIGN_CENTER); 
    table.addCell(c1); 

    c1 = new PdfPCell(new Phrase("Cell 2")); 
    c1.setHorizontalAlignment(Element.ALIGN_CENTER); 
    table.addCell(c1); 

    c1 = new PdfPCell(new Phrase("Cell 3")); 
    c1.setHorizontalAlignment(Element.ALIGN_CENTER); 
    table.addCell(c1); 

    c1 = new PdfPCell(new Phrase("Cell 4")); 
    c1.setHorizontalAlignment(Element.ALIGN_CENTER); 
    table.addCell(c1); 
    subCatPart.add(table); 
} 

// method to add empty line 
private static void addEmptyLine(Paragraph paragraph, int number) { 
    for (int i = 0; i < number; i++) { 
     paragraph.add(new Paragraph(" ")); 
    } 
} 

@Override 
public boolean onCreateOptionsMenu(Menu menu) { 
    // Inflate the menu; this adds items to the action bar if it is present. 
    getMenuInflater().inflate(R.menu.create_pdf, menu); 
    return true; 
} 

@Override 
public boolean onOptionsItemSelected(MenuItem item) { 
    // Handle action bar item clicks here. The action bar will 
    // automatically handle clicks on the Home/Up button, so long 
    // as you specify a parent activity in AndroidManifest.xml. 
    int id = item.getItemId(); 
    if (id == R.id.action_settings) { 
     return true; 
    } 
    return super.onOptionsItemSelected(item); 
} 

@Override 
public void onClick(View v) { 
    switch (v.getId()) { 
    case R.id.createBtn: 

     createPdf(); 
     break; 

    default: 
     break; 
    } 
} 
}