mirror of
https://github.com/martijnvanbrummelen/nwipe.git
synced 2026-02-20 13:42:14 +00:00
PDFGen3 - further work on PDF certificate
1. Changed most titles in certificate to gray with the data in black. Started adding real data to template including: Model, serial no., method, verify, size. more code to follow...
This commit is contained in:
@@ -264,6 +264,9 @@ struct pdf_path_operation {
|
||||
/*! Utility macro to provide white */
|
||||
#define PDF_WHITE PDF_RGB(0xff, 0xff, 0xff)
|
||||
|
||||
/*! Utility macro to provide gray */
|
||||
#define PDF_GRAY PDF_RGB(0x5A, 0x5A, 0x5A)
|
||||
|
||||
/*!
|
||||
* Utility macro to provide a transparent colour
|
||||
* This is used in some places for 'fill' colours, where no fill is required
|
||||
|
||||
133
src/create_pdf.c
133
src/create_pdf.c
@@ -17,17 +17,35 @@
|
||||
* 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
|
||||
*
|
||||
*/
|
||||
|
||||
#include <stdint.h>
|
||||
#include "stdarg.h"
|
||||
#include "stdio.h"
|
||||
#include "stdlib.h"
|
||||
#include "string.h"
|
||||
#include "nwipe.h"
|
||||
#include "context.h"
|
||||
#include "create_pdf.h"
|
||||
#include "PDFGen/pdfgen.h"
|
||||
#include "version.h"
|
||||
#include <string.h>
|
||||
#include "src/embedded_images/shred_db.jpg.h"
|
||||
#include "src/embedded_images/tick_erased.jpg.h"
|
||||
//#include "logging.h"
|
||||
#include "method.h"
|
||||
#include "embedded_images/shred_db.jpg.h"
|
||||
#include "embedded_images/tick_erased.jpg.h"
|
||||
#include "logging.h"
|
||||
#include "options.h"
|
||||
|
||||
int create_pdf( void )
|
||||
|
||||
int create_pdf( nwipe_context_t* ptr )
|
||||
{
|
||||
char pdf_footer[MAX_PDF_FOOTER_TEXT_LENGTH];
|
||||
nwipe_context_t* c;
|
||||
c = ptr;
|
||||
char model_header[50]; /* Model text in the header */
|
||||
char serial_header[30]; /* Serial number text in the header */
|
||||
char barcode[80]; /* Contents of the barcode, i.e model:serial */
|
||||
char dimm[50]; /* Disk Information: Model */
|
||||
char verify[20]; /* Verify option text */
|
||||
|
||||
|
||||
struct pdf_info info = { .creator = "https://github.com/PartialVolume/shredos.x86_64",
|
||||
.producer = "https://github.com/martijnvanbrummelen/nwipe",
|
||||
@@ -35,7 +53,8 @@ int create_pdf( void )
|
||||
.author = "Nwipe",
|
||||
.subject = "Disk Erase Certificate",
|
||||
.date = "Today" };
|
||||
// nwipe_log( NWIPE_LOG_INFO, "Create the PDF erasure certificate" );
|
||||
|
||||
//nwipe_log( NWIPE_LOG_NOTICE, "Create the PDF disk erasure certificate" );
|
||||
struct pdf_doc* pdf = pdf_create( PDF_A4_WIDTH, PDF_A4_HEIGHT, &info );
|
||||
|
||||
/* Create footer text string and append the version */
|
||||
@@ -51,62 +70,92 @@ int create_pdf( void )
|
||||
pdf_add_line( pdf, NULL, 50, 650, 550, 650, 3, PDF_BLACK );
|
||||
pdf_add_image_data( pdf, NULL, 45, 670, 128, 128, bin2c_shred_db_jpg, 27063 );
|
||||
pdf_add_image_data( pdf, NULL, 430, 670, 128, 128, bin2c_te_jpg, 54896 );
|
||||
pdf_add_text( pdf, NULL, "Model:Hitachi HDS72105", 14, 215, 720, PDF_BLACK );
|
||||
pdf_add_text( pdf, NULL, "S/N:MSK4215T145K8G", 14, 212, 700, PDF_BLACK );
|
||||
snprintf(model_header, sizeof(model_header), " %s:%s ", "Model", c->device_model );
|
||||
pdf_add_text( pdf, NULL, model_header, 14, 215, 720, PDF_BLACK );
|
||||
snprintf(serial_header, sizeof(serial_header), " %s:%s ", "S/N", c->device_serial_no );
|
||||
pdf_add_text( pdf, NULL, serial_header, 14, 212, 700, PDF_BLACK );
|
||||
pdf_add_text( pdf, NULL, "Disk Erasure Report", 24, 195, 670, PDF_BLACK );
|
||||
pdf_add_barcode( pdf, NULL, PDF_BARCODE_128A, 195, 748, 200, 50, "MSK4215T145K8G", PDF_BLACK );
|
||||
snprintf(barcode, sizeof(barcode), " %s:%s ", c->device_model, c->device_serial_no );
|
||||
pdf_add_barcode( pdf, NULL, PDF_BARCODE_128A, 195, 748, 200, 50, barcode, PDF_BLACK );
|
||||
|
||||
/* Organisation Information */
|
||||
pdf_add_line( pdf, NULL, 50, 550, 550, 550, 1, PDF_BLACK );
|
||||
pdf_add_line( pdf, NULL, 50, 550, 550, 550, 1, PDF_GRAY );
|
||||
pdf_add_text( pdf, NULL, "Organisation Performing The Disk Erasure", 12, 50, 630, PDF_BLUE );
|
||||
pdf_add_text( pdf, NULL, "Business Name:", 12, 60, 610, PDF_BLACK );
|
||||
pdf_add_text( pdf, NULL, "Business Address:", 12, 60, 590, PDF_BLACK );
|
||||
pdf_add_text( pdf, NULL, "Contact Name:", 12, 60, 570, PDF_BLACK );
|
||||
pdf_add_text( pdf, NULL, "Contact Phone:", 12, 300, 570, PDF_BLACK );
|
||||
pdf_add_text( pdf, NULL, "Business Name:", 12, 60, 610, PDF_GRAY );
|
||||
pdf_add_text( pdf, NULL, "Business Address:", 12, 60, 590, PDF_GRAY );
|
||||
pdf_add_text( pdf, NULL, "Contact Name:", 12, 60, 570, PDF_GRAY );
|
||||
pdf_add_text( pdf, NULL, "Contact Phone:", 12, 300, 570, PDF_GRAY );
|
||||
|
||||
/* Customer Information */
|
||||
pdf_add_line( pdf, NULL, 50, 450, 550, 450, 1, PDF_BLACK );
|
||||
pdf_add_line( pdf, NULL, 50, 450, 550, 450, 1, PDF_GRAY );
|
||||
pdf_add_text( pdf, NULL, "Customer Details", 12, 50, 530, PDF_BLUE );
|
||||
pdf_add_text( pdf, NULL, "Name:", 12, 60, 510, PDF_BLACK );
|
||||
pdf_add_text( pdf, NULL, "Address:", 12, 60, 490, PDF_BLACK );
|
||||
pdf_add_text( pdf, NULL, "Contact Name:", 12, 60, 470, PDF_BLACK );
|
||||
pdf_add_text( pdf, NULL, "Contact Phone:", 12, 300, 470, PDF_BLACK );
|
||||
pdf_add_text( pdf, NULL, "Name:", 12, 60, 510, PDF_GRAY );
|
||||
pdf_add_text( pdf, NULL, "Address:", 12, 60, 490, PDF_GRAY );
|
||||
pdf_add_text( pdf, NULL, "Contact Name:", 12, 60, 470, PDF_GRAY );
|
||||
pdf_add_text( pdf, NULL, "Contact Phone:", 12, 300, 470, PDF_GRAY );
|
||||
|
||||
/* Technician/Operator ID */
|
||||
pdf_add_line( pdf, NULL, 50, 390, 550, 390, 1, PDF_BLACK );
|
||||
pdf_add_line( pdf, NULL, 50, 390, 550, 390, 1, PDF_GRAY );
|
||||
pdf_add_text( pdf, NULL, "Technician/Operator ID", 12, 50, 430, PDF_BLUE );
|
||||
pdf_add_text( pdf, NULL, "Name:", 12, 60, 410, PDF_BLACK );
|
||||
pdf_add_text( pdf, NULL, "ID:", 12, 300, 410, PDF_BLACK );
|
||||
pdf_add_text( pdf, NULL, "Name:", 12, 60, 410, PDF_GRAY );
|
||||
pdf_add_text( pdf, NULL, "ID:", 12, 300, 410, PDF_GRAY );
|
||||
|
||||
/* Disk Information */
|
||||
pdf_add_line( pdf, NULL, 50, 270, 550, 270, 1, PDF_BLACK );
|
||||
pdf_add_line( pdf, NULL, 50, 270, 550, 270, 1, PDF_GRAY );
|
||||
pdf_add_text( pdf, NULL, "Disk Information", 12, 50, 370, PDF_BLUE );
|
||||
pdf_add_text( pdf, NULL, "Make/Model:", 12, 60, 350, PDF_BLACK );
|
||||
pdf_add_text( pdf, NULL, "Serial:", 12, 300, 350, PDF_BLACK );
|
||||
pdf_add_text( pdf, NULL, "Size:", 12, 60, 330, PDF_BLACK );
|
||||
pdf_add_text( pdf, NULL, "Bus:", 12, 300, 330, PDF_BLACK );
|
||||
pdf_add_text( pdf, NULL, "Health:", 12, 60, 310, PDF_BLACK );
|
||||
pdf_add_text( pdf, NULL, "Remapped Sectors:", 12, 300, 310, PDF_BLACK );
|
||||
pdf_add_text( pdf, NULL, "HPA(pre-erase):", 12, 60, 290, PDF_BLACK );
|
||||
pdf_add_text( pdf, NULL, "DCO(pre-erase):", 12, 300, 290, PDF_BLACK );
|
||||
|
||||
pdf_add_text( pdf, NULL, "Make/Model:", 12, 60, 350, PDF_GRAY );
|
||||
pdf_add_text( pdf, NULL, c->device_model, 12, 135, 350, PDF_BLACK );
|
||||
|
||||
pdf_add_text( pdf, NULL, "Serial:", 12, 300, 350, PDF_GRAY );
|
||||
pdf_add_text( pdf, NULL, c->device_serial_no, 12, 350, 350, PDF_GRAY );
|
||||
|
||||
pdf_add_text( pdf, NULL, "Size:", 12, 60, 330, PDF_GRAY );
|
||||
pdf_add_text( pdf, NULL, c->device_size_text, 12, 85, 330, PDF_BLACK );
|
||||
|
||||
pdf_add_text( pdf, NULL, "Bus:", 12, 300, 330, PDF_GRAY );
|
||||
pdf_add_text( pdf, NULL, "Health:", 12, 60, 310, PDF_GRAY );
|
||||
pdf_add_text( pdf, NULL, "Remapped Sectors:", 12, 300, 310, PDF_GRAY );
|
||||
pdf_add_text( pdf, NULL, "HPA(pre-erase):", 12, 60, 290, PDF_GRAY );
|
||||
pdf_add_text( pdf, NULL, "DCO(pre-erase):", 12, 300, 290, PDF_GRAY );
|
||||
|
||||
/* Erasure Details */
|
||||
pdf_add_text( pdf, NULL, "Disk Erasure Details", 12, 50, 250, PDF_BLUE );
|
||||
pdf_add_text( pdf, NULL, "Start/End Time:", 12, 60, 230, PDF_BLACK );
|
||||
pdf_add_text( pdf, NULL, "Duration:", 12, 300, 230, PDF_BLACK );
|
||||
pdf_add_text( pdf, NULL, "Method:", 12, 60, 210, PDF_BLACK );
|
||||
pdf_add_text( pdf, NULL, "PRNG algorithm:", 12, 300, 210, PDF_BLACK );
|
||||
pdf_add_text( pdf, NULL, "Final Blanking Pass(Zeros/Ones/None):", 12, 60, 190, PDF_BLACK );
|
||||
pdf_add_text( pdf, NULL, "Verification Pass(Last pass/All/None):", 12, 300, 190, PDF_BLACK );
|
||||
pdf_add_text( pdf, NULL, "Status:", 12, 60, 170, PDF_BLACK );
|
||||
pdf_add_text( pdf, NULL, "Rounds:", 12, 300, 170, PDF_BLACK );
|
||||
pdf_add_text( pdf, NULL, "HPA(post-erase):", 12, 60, 150, PDF_BLACK );
|
||||
pdf_add_text( pdf, NULL, "DCO(post-erase):", 12, 300, 150, PDF_BLACK );
|
||||
pdf_add_text( pdf, NULL, "Information:", 12, 60, 130, PDF_BLACK );
|
||||
pdf_add_text( pdf, NULL, "Start/End Time:", 12, 60, 230, PDF_GRAY );
|
||||
pdf_add_text( pdf, NULL, "Duration:", 12, 300, 230, PDF_GRAY );
|
||||
pdf_add_text( pdf, NULL, "Method:", 12, 60, 210, PDF_GRAY );
|
||||
pdf_add_text( pdf, NULL, nwipe_method_label( nwipe_options.method ), 12, 110, 210, PDF_BLACK );
|
||||
pdf_add_text( pdf, NULL, "PRNG algorithm:", 12, 300, 210, PDF_GRAY );
|
||||
pdf_add_text( pdf, NULL, "Final Pass(Zeros/Ones/None):", 12, 60, 190, PDF_GRAY );
|
||||
|
||||
/* Verify abbreviations used in summary table */
|
||||
switch( nwipe_options.verify )
|
||||
{
|
||||
case NWIPE_VERIFY_NONE:
|
||||
strcpy( verify, "Verify None" );
|
||||
break;
|
||||
|
||||
case NWIPE_VERIFY_LAST:
|
||||
strcpy( verify, "Verify Last" );
|
||||
break;
|
||||
|
||||
case NWIPE_VERIFY_ALL:
|
||||
strcpy( verify, "Verify All" );
|
||||
break;
|
||||
}
|
||||
pdf_add_text( pdf, NULL, "Verify Pass(Last/All/None):", 12, 300, 190, PDF_GRAY );
|
||||
pdf_add_text( pdf, NULL, verify, 12, 450, 190, PDF_BLACK );
|
||||
|
||||
pdf_add_text( pdf, NULL, "Status:", 12, 60, 170, PDF_GRAY );
|
||||
pdf_add_text( pdf, NULL, "Rounds:", 12, 300, 170, PDF_GRAY );
|
||||
pdf_add_text( pdf, NULL, "HPA(post-erase):", 12, 60, 150, PDF_GRAY );
|
||||
pdf_add_text( pdf, NULL, "DCO(post-erase):", 12, 300, 150, PDF_GRAY );
|
||||
pdf_add_text( pdf, NULL, "Information:", 12, 60, 130, PDF_GRAY );
|
||||
|
||||
/* Certificate Date/Time */
|
||||
|
||||
pdf_save( pdf, "output.pdf" );
|
||||
pdf_destroy( pdf );
|
||||
//nwipe_log( NWIPE_LOG_NOTICE, "PDF disk erasure certificate sucessfully created." );
|
||||
return 0;
|
||||
}
|
||||
|
||||
@@ -23,6 +23,6 @@
|
||||
|
||||
#define MAX_PDF_FOOTER_TEXT_LENGTH 50
|
||||
|
||||
int create_pdf( void );
|
||||
int create_pdf( nwipe_context_t* ptr );
|
||||
|
||||
#endif /* CREATE_PDF_H_ */
|
||||
|
||||
@@ -36,6 +36,7 @@
|
||||
#include "prng.h"
|
||||
#include "options.h"
|
||||
#include "logging.h"
|
||||
#include "create_pdf.h"
|
||||
|
||||
/* Global array to hold log values to print when logging to STDOUT */
|
||||
char** log_lines;
|
||||
@@ -635,7 +636,12 @@ void nwipe_log_summary( nwipe_context_t** ptr, int nwipe_selected )
|
||||
{
|
||||
/* Prints two summary tables, the first is the device pass and verification summary
|
||||
* and the second is the main summary table detaining the drives, status, throughput,
|
||||
* model and serial number */
|
||||
* model and serial number.
|
||||
*
|
||||
* This function also calls the create_pdf() function that creates the PDF erasure
|
||||
* report file. A page report on the success or failure of the erasure operation
|
||||
*/
|
||||
|
||||
int i;
|
||||
int idx_src;
|
||||
int idx_dest;
|
||||
@@ -854,6 +860,9 @@ void nwipe_log_summary( nwipe_context_t** ptr, int nwipe_selected )
|
||||
seconds,
|
||||
model,
|
||||
serial_no );
|
||||
|
||||
/* Create the PDF certificate */
|
||||
create_pdf( c[i] );
|
||||
}
|
||||
|
||||
/* Determine the size of throughput so that the correct nomenclature can be used */
|
||||
@@ -1004,4 +1013,5 @@ int nwipe_strip_path( char* output, char* input )
|
||||
output[idx_dest--] = input[idx_src--];
|
||||
}
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
@@ -50,7 +50,6 @@
|
||||
#include <parted/parted.h>
|
||||
#include <parted/debug.h>
|
||||
#include "version.h"
|
||||
#include "create_pdf.h"
|
||||
|
||||
int terminate_signal;
|
||||
int user_abort;
|
||||
@@ -162,9 +161,6 @@ int main( int argc, char** argv )
|
||||
exit( 1 );
|
||||
}
|
||||
|
||||
/* WARNING Temporary call to create_pdf() while in development */
|
||||
create_pdf();
|
||||
|
||||
/* Log the System information */
|
||||
nwipe_log_sysinfo();
|
||||
|
||||
|
||||
Reference in New Issue
Block a user