2015-04-10 4 views
-1

Я использую эту функцию для экспорта данных из базы данных в формат PDF, но его выход как таблицы ... я хочу, чтобы экспортировать specfic строки в формате, как:мне нужно экспортировать данные в формат PDF в формате specfic

id : 
Name : 
Gender : 
Salary : 

как я это сделать .. заранее спасибо

public void ExportToPDF() 
    { 
     SqlCommand cmd = new SqlCommand("SELECT EmployeeId , EmployeeName , EmployeeGender , EmployeeSalary , isActive FROM Employee", con); 
     DataSet ds = new DataSet(); 
     SqlDataAdapter da = new SqlDataAdapter(cmd); 
     da.Fill(ds); 
     GridView gridview1 = new GridView(); 
     gridview1.AllowPaging = false; 
     gridview1.DataSource = ds; 
     gridview1.DataBind(); 

     Response.ContentType = "application/pdf"; 
     Response.AddHeader("content-disposition", "attachment;filename=DataSet.pdf"); 
     Response.Cache.SetCacheability(HttpCacheability.NoCache); 
     StringWriter sw = new StringWriter(); 
     HtmlTextWriter hw = new HtmlTextWriter(sw); 
     gridview1.RenderControl(hw); 
     StringReader sr = new StringReader(sw.ToString()); 
     Document pdfDoc = new Document(PageSize.A4 , 10f , 10f , 10f , 0f); 
     HTMLWorker htmlparser = new HTMLWorker(pdfDoc); 
     PdfWriter.GetInstance(pdfDoc , Response.OutputStream); 
     pdfDoc.Open(); 
     htmlparser.Parse(sr); 
     pdfDoc.Close(); 
     Response.Write(pdfDoc); 
     Response.End(); 
    } 
+0

Добавить ваши данные в html, чтобы вы могли получить тот же макет в формате PDF, а также –

+0

Это много разных способов решить эту проблему @MohdSadiqGaur, но сначала преобразуйте данные в HTML, а затем используйте «HTMLWorker» для создания PDF-файла. вероятно, самый худший вариант. –

ответ

1

Пожалуйста, обратите внимание на UnitedStates примере. Для простоты я не использую базу данных, а CSV-файл. Очень просто адаптировать пример, чтобы он принимал данные из базы данных, а не анализировал CSV.

Ключевой класс, в котором вы нуждаетесь, - PdfPTable. Например, если databaseObject это объект, который вы создали для хранения данных из базы данных (например, содержимое записи), вам нужно что-то вроде этого: 0

PdfPTable table = new PdfPTable(2); 
table.addCell("Id:"); 
table.addCell(databaseObject.getId()); 
table.addCell("Name:"); 
table.addCell(databaseObject.getName()); 

Я вижу, что вы используете HTMLWorker в вашем код. Это проблематично по двум причинам:

  1. Это означает, что вы сначала конвертируете все свои данные в XHTML. Это требует времени обработки, и если вам не нужен XHTML, тогда это время будет потрачено впустую.
  2. Класс HTMLWorker устарел. Он больше не поддерживается. Если вы хотите преобразовать таблицы XHTML в PDF, вы должны использовать XML Worker, как это сделано в этих примерах.

Очевидно, что вы можете решить вашу проблему многими другими способами. Смотрите this video и вы обнаружите, что вы могли бы также создать шаблон (см, например, state.pdf), а затем заполнить эту форму, как это:

public void manipulatePdf(String src, String dest) throws DocumentException, IOException { 
    PdfReader reader = new PdfReader(src); 
    PdfStamper stamper = new PdfStamper(reader, 
      new FileOutputStream(dest)); 
    AcroFields fields = stamper.getAcroFields(); 
    fields.setField("name", "CALIFORNIA"); 
    fields.setField("abbr", "CA"); 
    fields.setField("capital", "Sacramento"); 
    fields.setField("city", "Los Angeles"); 
    fields.setField("population", "36,961,664"); 
    fields.setField("surface", "163,707"); 
    fields.setField("timezone1", "PT (UTC-8)"); 
    fields.setField("timezone2", "-"); 
    fields.setField("dst", "YES"); 
    stamper.close(); 
    reader.close(); 
} 

Это показано на примере FillForm.

Жаль, что с обилием документации, которую можно найти в Интернете (из которой я использую только несколько примеров), вы выбрали фрагмент кода, который не подходит для того, чтобы делать то, что вы хотели сделать.

+0

(String src, String dest) Что это значит ??? –

+0

Прочтите пример: 'src' - путь к форме; 'dest' - это путь к полученному PDF-файлу. Существует ** много документации **, пожалуйста, прочитайте! –