Facciamo uso della libreria itext# repribile qui.
La libreria è molto potente e consente di fare un'altra miriade di operazioni, trovate tutta la documentazione a riguardo qui.
Di seguito il codice per includere la libreria:
using iTextSharp.text;using iTextSharp.text.pdf;using iTextSharp.text.xml;
E qui il codice per lo split:
stay tuned!!
public static void InizioSplit(string srcfile)
{
try
{
// creaiamo il reader per un documento pdf
PdfReader reader = new PdfReader(@srcfile);
// prendiamo il numero totale di pagine
int n = reader.NumberOfPages;
MessageBox.Show("Ci sono " + n + " pagine nel file originale.");
PdfImportedPage page;
int rotation;
int i = 0;
// inseriamo il contenuto
while (i < n)
{
i++;
// step 1: creazione dei document-object
Document document1 = new Document(reader.GetPageSizeWithRotation(i));
// step 2: creiamo un writer per scrivere i documenti con nome uguale al numero pagina
PdfWriter writer1 = PdfWriter.GetInstance(document1, new FileStream(i + ".pdf", FileMode.Create));
// step 3: apriamo il documento
document1.Open();
PdfContentByte cb1 = writer1.DirectContent;
document1.SetPageSize(reader.GetPageSizeWithRotation(i));
document1.NewPage();
page = writer1.GetImportedPage(reader, i);
rotation = reader.GetPageRotation(i);
if (rotation == 90 || rotation == 270)
{
cb1.AddTemplate(page, 0, -1f, 1f, 0, 0, reader.GetPageSizeWithRotation(i).Height);
}
else
{
cb1.AddTemplate(page, 1f, 0, 0, 1f, 0, 0);
}
// step 5: chiudiamo il documento
document1.Close();
}
MessageBox.Show("Files creati " + i);
}
catch (Exception e)
{
MessageBox.Show(e.Message);
MessageBox.Show(e.StackTrace);
}
}
Dovrei fare una cosa simile, ma io voglio controllare il size e l'inclinazione di un intero doc pdf. Cosa devo modificare rispetto a questo metodo?
RispondiElimina