C#/VB.NET: estrae tabelle da PDF
Installato tramite NuGet
PM> Install-Package Spire.PDF
Link correlati
Il PDF è uno dei formati di documento più popolari per la condivisione e la scrittura di dati. Potresti incontrare la situazione in cui è necessario estrarre dati da documenti PDF, in particolare i dati nelle tabelle. Ad esempio, ci sono informazioni utili memorizzate nelle tabelle delle tue fatture PDF e desideri estrarre i dati per ulteriori analisi o calcoli. Questo articolo illustra come estrarre i dati dalle tabelle PDF e salvarlo in un file TXT utilizzando Spire.PDF for .NET.
Installa Spire.PDF for .NET
Per cominciare, è necessario aggiungere i file DLL inclusi nel pacchetto Spire.PDF for.NET come riferimenti nel progetto .NET. I file DLL possono essere scaricati da questo link o installato tramite NuGet.
- Package Manager
PM> Install-Package Spire.PDF
Estrai dati da tabelle PDF
Di seguito sono riportati i passaggi principali per estrarre le tabelle da un documento PDF.
- Crea un'istanza della classe PdfDocument.
- Caricare il documento PDF di esempio utilizzando il metodo PdfDocument.LoadFromFile().
- Estrai le tabelle da una pagina specifica utilizzando il metodo PdfTableExtractor.ExtractTable(int pageIndex).
- Ottieni il testo di una determinata cella della tabella utilizzando il metodo PdfTable.GetText(int rowIndex, int columnIndex).
- Salva i dati estratti in un file .txt.
- C#
- VB.NET
using System.IO; using System.Text; using Spire.Pdf; using Spire.Pdf.Utilities; namespace ExtractPdfTable { class Program { static void Main(string[] args) { //Create a PdfDocument object PdfDocument doc = new PdfDocument(); //Load the sample PDF file doc.LoadFromFile(@"C:\Users\Administrator\Desktop\table.pdf"); //Create a StringBuilder object StringBuilder builder = new StringBuilder(); //Initialize an instance of PdfTableExtractor class PdfTableExtractor extractor = new PdfTableExtractor(doc); //Declare a PdfTable array PdfTable[] tableList = null; //Loop through the pages for (int pageIndex = 0; pageIndex < doc.Pages.Count; pageIndex++) { //Extract tables from a specific page tableList = extractor.ExtractTable(pageIndex); //Determine if the table list is null if (tableList != null && tableList.Length > 0) { //Loop through the table in the list foreach (PdfTable table in tableList) { //Get row number and column number of a certain table int row = table.GetRowCount(); int column = table.GetColumnCount(); //Loop though the row and colunm for (int i = 0; i < row; i++) { for (int j = 0; j < column; j++) { //Get text from the specific cell string text = table.GetText(i, j); //Add text to the string builder builder.Append(text + " "); } builder.Append("\r\n"); } } } } //Write to a .txt file File.WriteAllText("Table.txt", builder.ToString()); } } }
Imports System.IO Imports System.Text Imports Spire.Pdf Imports Spire.Pdf.Utilities Namespace ExtractPdfTable Class Program Shared Sub Main(ByVal args() As String) 'Create a PdfDocument object Dim doc As PdfDocument = New PdfDocument() 'Load the sample PDF file doc.LoadFromFile("C:\Users\Administrator\Desktop\table.pdf") 'Create a StringBuilder object Dim builder As StringBuilder = New StringBuilder() 'Initialize an instance of PdfTableExtractor class Dim extractor As PdfTableExtractor = New PdfTableExtractor(doc) 'Declare a PdfTable array Dim tableList() As PdfTable = Nothing 'Loop through the pages Dim pageIndex As Integer For pageIndex = 0 To doc.Pages.Count- 1 Step pageIndex + 1 'Extract tables from a specific page tableList = extractor.ExtractTable(pageIndex) 'Determine if the table list is null If tableList <> Nothing And tableList.Length > 0 Then 'Loop through the table in the list Dim table As PdfTable For Each table In tableList 'Get row number and column number of a certain table Dim row As Integer = table.GetRowCount() Dim column As Integer = table.GetColumnCount() 'Loop though the row and colunm Dim i As Integer For i = 0 To row- 1 Step i + 1 Dim j As Integer For j = 0 To column- 1 Step j + 1 'Get text from the specific cell Dim text As String = table.GetText(i,j) 'Add text to the string builder builder.Append(text + " ") Next builder.Append("\r\n") Next Next End If Next 'Write to a .txt file File.WriteAllText("Table.txt", builder.ToString()) End Sub End Class End Namespace
Richiedi una licenza temporanea
Se desideri rimuovere il messaggio di valutazione dai documenti generati o eliminare le limitazioni delle funzioni, per favore richiedere una licenza di prova di 30 giorni per te.
C#/VB.NET: crea tabelle in PDF
Sommario
Installato tramite NuGet
PM> Install-Package Spire.PDF
Link correlati
Una tabella fornisce un accesso rapido ed efficiente ai dati visualizzati in righe e colonne in modo visivamente accattivante. Quando vengono presentati in una tabella, i dati hanno un impatto maggiore rispetto a quando vengono usati solo come parole e consentono ai lettori di confrontare e comprendere facilmente le relazioni tra di loro. In questo articolo imparerai come creare una tabella in PDF in C# e VB.NET utilizzando Spire.PDF for .NET.
Spire.PDF for .NET offre la classe PdfTable e PdfGrid per lavorare con le tabelle in un documento PDF. La classe PdfTable viene utilizzata per creare rapidamente tabelle semplici e regolari senza troppa formattazione, mentre la classe PdfGrid viene utilizzata per creare tabelle più complesse.
La tabella seguente elenca le differenze tra queste due classi.
PdfTable | PdfGrid | |
Formattazione | ||
Riga | Può essere impostato tramite eventi. Nessun supporto API. | Può essere impostato tramite API. |
Colonna | Può essere impostato tramite API (StringFormat). | Può essere impostato tramite API (StringFormat). |
Cellula | Può essere impostato tramite eventi. Nessun supporto API. | Può essere impostato tramite API. |
Altri | ||
Intervallo di colonne | Non supporto. | Può essere impostato tramite API. |
Intervallo di fila | Può essere impostato tramite eventi. Nessun supporto API. | Può essere impostato tramite API. |
Tavolo annidato | Può essere impostato tramite eventi. Nessun supporto API. | Può essere impostato tramite API. |
Eventi | BeginCellLayout, EndCellLayout, BeginRowLayout, EndRowLayout, BeginPageLayout, EndPageLayout. | InizioLayoutPagina, FineLayoutPagina. |
Le sezioni seguenti mostrano come creare una tabella in PDF utilizzando rispettivamente la classe PdfTable e la classe PdfGrid.
Installa Spire.PDF for .NET
Per cominciare, è necessario aggiungere i file DLL inclusi nel pacchetto Spire.PDF for.NET come riferimenti nel progetto .NET. I file DLL possono essere scaricati da questo link o installato tramite NuGet.
PM> Install-Package Spire.PDF
Creare una tabella utilizzando la classe PdfTable
Di seguito sono riportati i passaggi per creare una tabella utilizzando la classe PdfTable.
- Creare un oggetto PdfDocument.
- Aggiungi una pagina usando il metodo PdfDocument.Pages.Add().
- Crea un oggetto Pdftable.
- Impostare lo stile della tabella tramite la proprietà PdfTable.Style.
- Inserire i dati nella tabella tramite la proprietà PdfTable.DataSource.
- Imposta l'altezza e il colore della riga tramite l'evento BeginRowLayout.
- Disegna la tabella sulla pagina PDF usando il metodo PdfTable.Draw().
- Salvare il documento in un file PDF utilizzando il metodo PdfDocument.SaveToFile().
- C#
- VB.NET
using System; using System.Data; using System.Drawing; using Spire.Pdf; using Spire.Pdf.Graphics; using Spire.Pdf.Tables; namespace CreateTable { class Program { static void Main(string[] args) { //Create a PdfDocument object PdfDocument doc = new PdfDocument(); //Add a page PdfPageBase page = doc.Pages.Add(PdfPageSize.A4, new PdfMargins(40)); //Create a PdfTable object PdfTable table = new PdfTable(); //Set font for header and the rest cells table.Style.DefaultStyle.Font = new PdfTrueTypeFont(new Font("Times New Roman", 12f, FontStyle.Regular), true); table.Style.HeaderStyle.Font = new PdfTrueTypeFont(new Font("Times New Roman", 12f, FontStyle.Bold), true); //Crate a DataTable DataTable dataTable = new DataTable(); dataTable.Columns.Add("ID"); dataTable.Columns.Add("Name"); dataTable.Columns.Add("Department"); dataTable.Columns.Add("Position"); dataTable.Columns.Add("Level"); dataTable.Rows.Add(new string[] { "1", "David", "IT", "Manager", "1" }); dataTable.Rows.Add(new string[] { "3", "Julia", "HR", "Manager", "1" }); dataTable.Rows.Add(new string[] { "4", "Sophie", "Marketing", "Manager", "1" }); dataTable.Rows.Add(new string[] { "7", "Wickey", "Marketing", "Sales Rep", "2" }); dataTable.Rows.Add(new string[] { "9", "Wayne", "HR", "HR Supervisor", "2" }); dataTable.Rows.Add(new string[] { "11", "Mia", "Dev", "Developer", "2" }); //Set the datatable as the data source of table table.DataSource = dataTable; //Show header(the header is hidden by default) table.Style.ShowHeader = true; //Set font color and backgroud color of header row table.Style.HeaderStyle.BackgroundBrush = PdfBrushes.Gray; table.Style.HeaderStyle.TextBrush = PdfBrushes.White; //Set text alignment in header row table.Style.HeaderStyle.StringFormat = new PdfStringFormat(PdfTextAlignment.Center, PdfVerticalAlignment.Middle); //Set text alignment in other cells for (int i = 0; i < table.Columns.Count; i++) { table.Columns[i].StringFormat = new PdfStringFormat(PdfTextAlignment.Center, PdfVerticalAlignment.Middle); } //Register with BeginRowLayout event table.BeginRowLayout += Table_BeginRowLayout; //Draw table on the page table.Draw(page, new PointF(0, 30)); //Save the document to a PDF file doc.SaveToFile("PdfTable.pdf"); } //Event handler private static void Table_BeginRowLayout(object sender, BeginRowLayoutEventArgs args) { //Set row height args.MinimalHeight = 20f; //Alternate row color if (args.RowIndex < 0) { return; } if (args.RowIndex % 2 == 1) { args.CellStyle.BackgroundBrush = PdfBrushes.LightGray; } else { args.CellStyle.BackgroundBrush = PdfBrushes.White; } } } }
Creare una tabella utilizzando la classe PdfGrid
Di seguito sono riportati i passaggi per creare una tabella utilizzando la classe PdfGrid.
- Creare un oggetto PdfDocument.
- Aggiungi una pagina usando il metodo PdfDocument.Pages.Add().
- Crea un oggetto PdfGrid.
- Impostare lo stile della tabella tramite la proprietà PdfGrid.Style.
- Aggiungi righe alla tabella utilizzando il metodo PdfGrid.Rows.Add().
- Inserisci i dati in celle specifiche tramite la proprietà PdfGridRow.Cells[index].Value.
- Estendi le celle su colonne o righe tramite la proprietà PdfGridRow.RowSpan o PdfGridRow.ColumnSpan.
- Impostare la formattazione di una cella specifica tramite le proprietà PdfGridRow.Cells[index].StringFormat e PdfGridRow.Cells[index].Style.
- Disegna la tabella sulla pagina PDF usando il metodo PdfGrid.Draw().
- Salvare il documento in un file PDF utilizzando il metodo PdfDocument.SaveToFile().
- C#
- VB.NET
using Spire.Pdf; using Spire.Pdf.Graphics; using Spire.Pdf.Grid; using System.Drawing; namespace CreateGrid { class Program { static void Main(string[] args) { //Create a PdfDocument object PdfDocument doc = new PdfDocument(); //Add a page PdfPageBase page = doc.Pages.Add(PdfPageSize.A4,new PdfMargins(40)); //Create a PdfGrid PdfGrid grid = new PdfGrid(); //Set cell padding grid.Style.CellPadding = new PdfPaddings(1, 1, 1, 1); //Set font grid.Style.Font = new PdfTrueTypeFont(new Font("Times New Roman", 13f, FontStyle.Regular), true); //Add rows PdfGridRow row1 = grid.Rows.Add(); PdfGridRow row2 = grid.Rows.Add(); PdfGridRow row3 = grid.Rows.Add(); PdfGridRow row4 = grid.Rows.Add(); grid.Columns.Add(4); //Set column width foreach (PdfGridColumn col in grid.Columns) { col.Width = 110f; } //Write data into specific cells row1.Cells[0].Value = "Order and Payment Status"; row2.Cells[0].Value = "Order number"; row2.Cells[1].Value = "Date"; row2.Cells[2].Value = "Customer"; row2.Cells[3].Value = "Paid or not"; row3.Cells[0].Value = "00223"; row3.Cells[1].Value = "2022/06/02"; row3.Cells[2].Value = "Brick Lane Realty"; row3.Cells[3].Value = "Yes"; row4.Cells[0].Value = "00224"; row4.Cells[1].Value = "2022/06/03"; row4.Cells[3].Value = "No"; //Span cell across columns row1.Cells[0].ColumnSpan = 4; //Span cell across rows row3.Cells[2].RowSpan = 2; //Set text alignment of specific cells row1.Cells[0].StringFormat = new PdfStringFormat(PdfTextAlignment.Center); row3.Cells[2].StringFormat = new PdfStringFormat(PdfTextAlignment.Left, PdfVerticalAlignment.Middle); //Set background color of specific cells row1.Cells[0].Style.BackgroundBrush = PdfBrushes.Orange; row4.Cells[3].Style.BackgroundBrush = PdfBrushes.LightGray; //Format cell border PdfBorders borders = new PdfBorders(); borders.All = new PdfPen(Color.Orange, 0.8f); foreach (PdfGridRow pgr in grid.Rows) { foreach (PdfGridCell pgc in pgr.Cells) { pgc.Style.Borders = borders; } } //Draw table on the page grid.Draw(page, new PointF(0, 30)); //Save the document to a PDF file doc.SaveToFile("PdfGrid.pdf"); } } }
Richiedi una licenza temporanea
Se desideri rimuovere il messaggio di valutazione dai documenti generati o eliminare le limitazioni delle funzioni, per favore richiedere una licenza di prova di 30 giorni per te.
C#/VB.NET: Aggiungi numeri di pagina a documenti PDF esistenti
Sommario
Installato tramite NuGet
PM> Install-Package Spire.PDF
Link correlati
I numeri di pagina sono essenziali sia per i documenti elettronici che per quelli cartacei. Rendono più facile per i lettori trovare e accedere rapidamente a parti specifiche di un documento senza dover sfogliare pagina per pagina. In questo articolo imparerai come aggiungere i numeri di pagina ai documenti PDF esistenti in C# e VB.NET utilizzando Spire.PDF for .NET.
Installa Spire.PDF for .NET
Per cominciare, è necessario aggiungere i file DLL inclusi nel pacchetto Spire.PDF for.NET come riferimenti nel progetto .NET. I file DLL possono essere scaricati da questo link o installato tramite NuGet.
PM> Install-Package Spire.PDF
Aggiungi numeri di pagina a documenti PDF esistenti utilizzando C# e VB.NET
È possibile aggiungere numeri di pagina a un documento PDF utilizzando i campi dinamici: PdfPageNumberField, PdfPageCountField e PdfCompositeField.
Come suggeriscono i loro nomi, PdfPageNumberField viene utilizzato per visualizzare il numero di pagina, PdfPageCountField viene utilizzato per visualizzare il conteggio totale delle pagine e PdfCompositeField viene utilizzato per combinare due o più campi dinamici come PdfPageNumberField e PdfPageCountField in un unico campo.
Se desideri solo aggiungere numeri di pagina come Pagina 1, Pagina 2, Pagina 3... a un documento PDF, puoi semplicemente utilizzare PdfPageNumberField. Se desideri aggiungere numeri di pagina come Pagina X di Y al documento, devi utilizzare PdfPageNumberField, PdfPageCountField e PdfCompositeField.
I seguenti passaggi mostrano come aggiungere i numeri di pagina "Pagina X di Y" a un documento PDF esistente:
- Inizializza un'istanza della classe PdfDocument.
- Carica un documento PDF utilizzando il metodo PdfDocument.LoadFromFile().
- Inizializza un'istanza della classe PdfPageNumberField.
- Inizializza un'istanza della classe PdfPageCountField.
- Inizializza un'istanza della classe PdfCompositeField.
- Impostare l'allineamento del testo per il campo composito tramite la proprietà PdfCompositeField.StringFormat.
- Passa attraverso ogni pagina nel documento PDF, quindi disegna il campo composito nella posizione specifica della pagina utilizzando il metodo PdfCompositeField.Draw().
- Salvare il documento risultato utilizzando il metodo PdfDocument.SaveToFile().
- C#
- VB.NET
using Spire.Pdf; using Spire.Pdf.AutomaticFields; using Spire.Pdf.Graphics; using System.Drawing; namespace AddPageNumbers { class Program { static void Main(string[] args) { //Load a PDF document PdfDocument pdf = new PdfDocument(); pdf.LoadFromFile("Sample.pdf"); //Create a true type font PdfTrueTypeFont font = new PdfTrueTypeFont(new Font("Arial", 10f, FontStyle.Regular), true); //Create a PdfPageNumberField instance PdfPageNumberField pageNumber = new PdfPageNumberField(); //Create a PdfPageCountField instance PdfPageCountField pageCount = new PdfPageCountField(); //Create a PdfCompositeField instance PdfCompositeField compositeField = new PdfCompositeField(font, PdfBrushes.Black, "Page {0} of {1}", pageNumber, pageCount); //Set the text alignment for the composite field compositeField.StringFormat = new PdfStringFormat(PdfTextAlignment.Left, PdfVerticalAlignment.Top); //Loop through the pages for(int i = 0; i < pdf.Pages.Count; i ++) { //Draw composite filed on each page compositeField.Draw(pdf.Pages[i].Canvas, pdf.Pages[i].Size.Width / 2 - 20, pdf.Pages[i].Size.Height - pdf.PageSettings.Margins.Bottom); } //Save the result document pdf.SaveToFile("AddPageNumbers.pdf"); } } }
Richiedi una licenza temporanea
Se desideri rimuovere il messaggio di valutazione dai documenti generati o eliminare le limitazioni delle funzioni, per favore richiedere una licenza di prova di 30 giorni per te.
C#/VB.NET: aggiungi il colore di sfondo o l'immagine di sfondo al PDF
Sommario
Installato tramite NuGet
PM> Install-Package Spire.PDF
Link correlati
In un documento PDF, lo sfondo si riferisce all'aspetto visivo generale dietro il contenuto delle pagine. Lo sfondo può essere un semplice colore a tinta unita o un'immagine a tua scelta. L'aggiunta di sfondi ai PDF può aiutarti ad aggiungere interesse visivo ai tuoi documenti e anche a migliorarne la leggibilità. In questo articolo imparerai a programmaticamente imposta il colore o l'immagine di sfondo per il PDF utilizzando Spire.PDF for .NET.
Installa Spire.PDF for .NET
Per cominciare, è necessario aggiungere i file DLL inclusi nel pacchetto Spire.PDF for.NET come riferimenti nel progetto .NET. I file DLL possono essere scaricati da questo link o installato tramite NuGet.
PM> Install-Package Spire.PDF
Aggiungi colore di sfondo ai documenti PDF in C# e VB.NET
La proprietà PdfPageBase.BackgroundColor offerta da Spire.PDF for .NET consente di impostare un colore a tinta unita come sfondo del PDF. Di seguito sono riportati i passaggi dettagliati.
- Creare un'istanza PdfDocument.
- Carica un file PDF di esempio utilizzando il metodo PdfDocument.LoadFromFile().
- Passa attraverso tutte le pagine PDF e aggiungi un colore di sfondo a ciascuna pagina utilizzando la proprietà PdfPageBase.BackgroundColor.
- Imposta l'opacità dello sfondo utilizzando la proprietà PdfPageBase.BackgroudOpacity.
- Salvare il documento risultato utilizzando il metodo PdfDocument.SaveToFile().
- C#
- VB.NET
using Spire.Pdf; using System.Drawing; namespace PDFBackgroundColor { class Program { static void Main(string[] args) { //Create a PdfDocument instance PdfDocument pdf = new PdfDocument(); //Load a sample PDF file from disk pdf.LoadFromFile("input.pdf"); //Loop through the pages in the PDF file foreach (PdfPageBase page in pdf.Pages) { //Set the background color for each page page.BackgroundColor = Color.Yellow; //Set the opacity of the background page.BackgroudOpacity = 0.1f; } //Save the result PDF file pdf.SaveToFile("BackgroundColor.pdf"); pdf.Close(); } } }
Aggiungi immagini di sfondo ai documenti PDF C# e VB.NET
Se desideri aggiungere un'immagine come sfondo che corrisponda al tema del documento, puoi utilizzare la proprietà PdfPageBase.BackgroundImage. Di seguito sono riportati i passaggi dettagliati.
- Creare un'istanza PdfDocument.
- Carica un file PDF di esempio utilizzando il metodo PdfDocument.LoadFromFile().
- Passa attraverso tutte le pagine PDF e aggiungi un'immagine di sfondo a ciascuna pagina utilizzando la proprietà PdfPageBase.BackgroundImage.
- Imposta l'opacità dello sfondo utilizzando la proprietà PdfPageBase.BackgroudOpacity.
- Salvare il documento risultato utilizzando il metodo PdfDocument.SaveToFile().
- C#
- VB.NET
using Spire.Pdf; using System.Drawing; namespace PDFBackgroundImage { class Program { static void Main(string[] args) { //Create a PdfDocument instance PdfDocument pdf = new PdfDocument(); //Load a sample PDF file from disk pdf.LoadFromFile("input.pdf"); //Load an image Image background = Image.FromFile("background.png"); //Loop through the pages in the PDF file foreach (PdfPageBase page in pdf.Pages) { //Set the loaded image as the background image for each page page.BackgroundImage = background; //Set the opacity of the background page.BackgroudOpacity = 0.2f; } //Save the result PDF file pdf.SaveToFile("BackgroundImage.pdf"); pdf.Close(); } } }
Richiedi una licenza temporanea
Se desideri rimuovere il messaggio di valutazione dai documenti generati o eliminare le limitazioni delle funzioni, per favore richiedere una licenza di prova di 30 giorni per te.
C#/VB.NET: aggiungi, nascondi o elimina livelli in PDF
Sommario
Installato tramite NuGet
PM> Install-Package Spire.PDF
Link correlati
Il livello PDF è una funzione che dispone il contenuto di un file PDF in livelli, che consente agli utenti di impostare selettivamente alcuni contenuti in modo che siano visibili e altri invisibili nello stesso file PDF. I livelli PDF sono un elemento comune utilizzato nella grafica a più livelli, nelle mappe e nei disegni CAD. Questo articolo dimostrerà come eseguire a livello di codice aggiungere, nascondere o eliminare livelli in un file PDF utilizzando Spire.PDF for .NET.
- Aggiungi livelli a un documento PDF in C# e VB.NET
- Imposta la visibilità dei livelli in un documento PDF in C# e VB.NET
- Elimina livelli in un documento PDF in C# e VB.NET
Installa Spire.PDF for .NET
Per cominciare, è necessario aggiungere i file DLL inclusi nel pacchetto Spire.PDF for.NET come riferimenti nel progetto .NET. I file DLL possono essere scaricati da questo link o installato tramite NuGet.
PM> Install-Package Spire.PDF
Aggiungi livelli a un documento PDF in C# e VB.NET
Spire.PDF for .NET fornisce il metodo PdfDocument.Layers.AddLayer() per aggiungere un livello in un documento PDF e puoi quindi disegnare testo, linee, immagini o forme sul livello PDF. I passaggi dettagliati sono i seguenti.
- Creare un'istanza PdfDocument.
- Carica un file PDF di esempio utilizzando il metodo PdfDocument.LoadFromFile().
- Aggiungi un livello con il nome specificato nel PDF utilizzando il metodo PdfDocument.Layers.AddLayer(String) oppure puoi anche impostare la visibilità del livello durante l'aggiunta utilizzando il metodo PdfDocument.Layers.AddLayer(String, PdfVisibility).
- Crea una tela per il livello usando il metodo PdfLayer.CreateGraphics().
- Disegna testo, immagine o altri elementi sulla tela.
- Salvare il documento risultato utilizzando il metodo PdfDocument.SaveToFile().
- C#
- VB.NET
using Spire.Pdf; using Spire.Pdf.Graphics; using Spire.Pdf.Graphics.Layer; using System.Drawing; namespace AddLayersToPdf { class Program { static void Main(string[] args) { //Create a PdfDocument instance and load a sample PDF file PdfDocument pdf = new PdfDocument(); pdf.LoadFromFile(@"C:\Users\Administrator\Desktop\Sample.pdf"); //Invoke AddLayerWatermark method to add a watermark layer AddLayerWatermark(pdf); //Invoke AddLayerHeader method to add a header layer AddLayerHeader(pdf); //Save to file pdf.SaveToFile("AddLayers.pdf"); pdf.Close(); } private static void AddLayerWatermark(PdfDocument doc) { //Create a layer named "Watermark" PdfLayer layer = doc.Layers.AddLayer("Watermark"); //Create a font PdfTrueTypeFont font = new PdfTrueTypeFont(new Font("Arial", 48), true); //Specify the watermark text string watermarkText = "CONFIDENTIAL"; //Get text size SizeF fontSize = font.MeasureString(watermarkText); //Calculate two offsets float offset1 = (float)(fontSize.Width * System.Math.Sqrt(2) / 4); float offset2 = (float)(fontSize.Height * System.Math.Sqrt(2) / 4); //Get page count int pageCount = doc.Pages.Count; //Declare two variables PdfPageBase page; PdfCanvas canvas; //Loop through the pages for (int i = 0; (i < pageCount); i++) { page = doc.Pages[i]; //Create a canvas from layer canvas = layer.CreateGraphics(page.Canvas); canvas.TranslateTransform(page.Canvas.Size.Width / 2 - offset1 - offset2, page.Canvas.Size.Height / 2 + offset1 - offset2); canvas.SetTransparency(0.4f); canvas.RotateTransform(-45); //Draw sting on the canvas of layer canvas.DrawString(watermarkText, font, PdfBrushes.DarkBlue, 0, 0); } } private static void AddLayerHeader(PdfDocument doc) { // Create a layer named "Header" PdfLayer layer = doc.Layers.AddLayer("Header"); //Get page size SizeF size = doc.Pages[0].Size; //Specify the initial values of X and y float x = 90; float y = 40; //Get page count int pageCount = doc.Pages.Count; //Declare two variables PdfPageBase page; PdfCanvas canvas; //Loop through the pages for (int i = 0; (i < pageCount); i++) { //Draw an image on the layer PdfImage pdfImage = PdfImage.FromFile(@"C:\Users\Administrator\Desktop\img.jpg"); float width = pdfImage.Width; float height = pdfImage.Height; page = doc.Pages[i]; canvas = layer.CreateGraphics(page.Canvas); canvas.DrawImage(pdfImage, x, y, width, height); //Draw a line on the layer PdfPen pen = new PdfPen(PdfBrushes.DarkGray, 2); canvas.DrawLine(pen, x, (y + (height + 5)), (size.Width - x), (y + (height + 2))); } } } }
Imposta la visibilità dei livelli in un documento PDF in C# e VB.NET
Per impostare la visibilità di un layer esistente, è necessario ottenere un layer specificato in base al suo indice o nome utilizzando la proprietà PdfDocument.Layers, quindi mostrare o nascondere il layer utilizzando la proprietà PdfLayer.Visibility.I passaggi dettagliati sono i seguenti.
- Creare un'istanza PdfDocument.
- Carica un documento PDF di esempio utilizzando il metodo PdfDocument.LoadFromFile().
- Imposta la visibilità di un layer specificato utilizzando la proprietà PdfDocument.Layers.Visibility.
- Salvare il documento risultato utilizzando il metodo PdfDocument.SaveToFile().
- C#
- VB.NET
using Spire.Pdf; using Spire.Pdf.Graphics.Layer; namespace HideLayer { class Program { static void Main(string[] args) { //Create a PdfDocument instance PdfDocument pdf = new PdfDocument(); //Load a sample PDF document pdf.LoadFromFile("AddLayers.pdf"); //Hide a specified layer by index pdf.Layers[0].Visibility = PdfVisibility.Off; //Hide a specified layer by name //pdf.Layers["Watermark"].Visibility = PdfVisibility.Off; //Save the result document pdf.SaveToFile("HideLayer.pdf"); } } }
Elimina livelli in un documento PDF in C# e VB.NET
Spire.PDF for .NET ti consente anche di rimuovere un livello esistente in base al suo nome utilizzando il metodo PdfDocument.Layers.RemoveLayer(String).Ma tieni presente che i nomi dei livelli PDF potrebbero non essere univoci e questo metodo rimuoverà tutti i livelli PDF con lo stesso nome I passaggi dettagliati sono i seguenti.
- Creare un'istanza PdfDocument.
- Carica un documento PDF di esempio utilizzando il metodo PdfDocument.LoadFromFile().
- Elimina un layer specificato in base al suo nome utilizzando il metodo PdfDocument.Layers.RemoveLayer(String).
- Salvare il documento risultato utilizzando il metodo PdfDocument.SaveToFile().
- C#
- VB.NET
using Spire.Pdf; namespace DeleteLayer { class Program { static void Main(string[] args) { //Create a PdfDocument instance PdfDocument pdf = new PdfDocument(); //Load a sample PDF document pdf.LoadFromFile("AddLayers.pdf"); //Remove a layer by name pdf.Layers.RemoveLayer(("Watermark")); //Save the result document pdf.SaveToFile("DeleteLayer.pdf", FileFormat.PDF); } } }
Richiedi una licenza temporanea
Se desideri rimuovere il messaggio di valutazione dai documenti generati o eliminare le limitazioni delle funzioni, per favore richiedere una licenza di prova di 30 giorni per te.
C#/VB.NET: crea un documento PDF
Sommario
Installato tramite NuGet
PM> Install-Package Spire.PDF
Link correlati
La creazione di documenti PDF dal codice offre una vasta gamma di vantaggi. Ad esempio, è possibile incorporare facilmente contenuto dinamico come input dell'utente, record di database o dati in tempo reale. La generazione di PDF basata su codice consente una maggiore personalizzazione e automazione, riducendo al minimo l'intervento manuale nella creazione di documenti altamente personalizzati. In questo articolo imparerai come creare un documento PDF da zero in C# e VB.NET utilizzando Spire.PDF for .NET.
Installa Spire.PDF for .NET
Per cominciare, è necessario aggiungere i file DLL inclusi nel pacchetto Spire.PDF for.NET come riferimenti nel progetto .NET. I file DLL possono essere scaricati da questo link o installato tramite NuGet.
PM> Install-Package Spire.PDF
Conoscenze di base
Una pagina in Spire.PDF (rappresentata da PdfPageBase) è costituita da area client e margini tutt'intorno. L'area del contenuto consente agli utenti di scrivere vari contenuti e i margini sono generalmente bordi vuoti.
Come mostrato nella figura seguente, l'origine del sistema di coordinate sulla pagina si trova nell'angolo in alto a sinistra dell'area client, con l'asse x che si estende orizzontalmente verso destra e l'asse y che si estende verticalmente verso il basso. Tutti gli elementi aggiunti all'area client devono essere basati sulle coordinate specificate.
Inoltre, la tabella seguente elenca le classi e i metodi importanti, che possono aiutarti a comprendere facilmente il frammento di codice fornito nella sezione seguente.
Membro | Descrizione |
Classe PdfDocument | Rappresenta un modello di documento PDF. |
Classe PdfPageBase | Rappresenta una pagina in un documento PDF. |
Classe PdfSolidBrush | Rappresenta un pennello che riempie qualsiasi oggetto con un colore a tinta unita. |
Classe PdfTrueTypeFont | Rappresenta un font true type. |
Classe PdfStringFormat | Rappresenta le informazioni sul formato del testo, come l'allineamento, la spaziatura dei caratteri e il rientro. |
Classe PdfTextWidget | Rappresenta l'area di testo con la possibilità di estendersi su più pagine. |
Classe PdfTextLayout | Rappresenta le informazioni sul layout del testo. |
Metodo PdfDocument.Pages.Add() | Aggiunge una pagina a un documento PDF. |
Metodo PdfPageBase.Canvas.DrawString() | Disegna una stringa su una pagina nella posizione specificata con caratteri e oggetti pennello specificati. |
Metodo PdfTextWidget.Draw() | Disegna il widget di testo su una pagina nella posizione specificata. |
Metodo PdfDocument.Save() | Salva il documento in un file PDF. |
Crea un documento PDF da zero in C# e VB.NET
Sebbene Spire.PDF for .NET supporti l'aggiunta di vari tipi di elementi ai documenti PDF, questo articolo illustra solo come creare un documento PDF con testo normale. Di seguito sono riportati i passaggi dettagliati.
- Creare un oggetto PdfDocument.
- Aggiungere una pagina utilizzando il metodo PdfDocument.Pages.Add().
- Crea oggetti pennello e carattere.
- Disegna la stringa sulla pagina in corrispondenza di una coordinata specificata utilizzando il metodo PdfPageBase.Canvas.DrawString().
- Crea un oggetto PdfTextWidget per contenere una porzione di testo.
- Disegna il widget di testo sulla pagina in una posizione specificata utilizzando il metodo PdfTextWidget.Draw().
- Salvare il documento in un file PDF utilizzando il metodo PdfDocument.Save().
- C#
- VB.NET
using Spire.Pdf; using Spire.Pdf.Graphics; using System.Drawing; namespace CreatePdfDocument { class Program { static void Main(string[] args) { //Create a PdfDocument object PdfDocument doc = new PdfDocument(); //Add a page PdfPageBase page = doc.Pages.Add(PdfPageSize.A4, new PdfMargins(35f)); //Specify heading text String titleText = "What is MySQL"; //Create solid brushes PdfSolidBrush titleBrush = new PdfSolidBrush(new PdfRGBColor(Color.Blue)); PdfSolidBrush paraBrush = new PdfSolidBrush(new PdfRGBColor(Color.Black)); //Create true type fonts PdfTrueTypeFont titleFont = new PdfTrueTypeFont(new Font("Times New Roman", 18f, FontStyle.Bold),true); PdfTrueTypeFont paraFont = new PdfTrueTypeFont(new Font("Times New Roman", 12f, FontStyle.Regular), true); //Set the text alignment via PdfStringFormat class PdfStringFormat format = new PdfStringFormat(); format.Alignment = PdfTextAlignment.Center; //Draw heading on the center of the page page.Canvas.DrawString(titleText, titleFont, titleBrush, page.Canvas.ClientSize.Width / 2, 20, format); //Get paragraph content from a .txt file string paraText = File.ReadAllText("C:\\Users\\Administrator\\Desktop\\content.txt"); //Create a PdfTextWidget object to hold the paragrah content PdfTextWidget widget = new PdfTextWidget(paraText, paraFont, paraBrush); //Create a rectangle where the paragraph content will be placed RectangleF rect = new RectangleF(0, 50, page.Canvas.ClientSize.Width, page.Canvas.ClientSize.Height); //Set the PdfLayoutType to Paginate to make the content paginated automatically PdfTextLayout layout = new PdfTextLayout(); layout.Layout = PdfLayoutType.Paginate; //Draw the widget on the page widget.Draw(page, rect, layout); //Save to file doc.SaveToFile("CreatePdfDocument.pdf"); doc.Dispose(); } } }
Richiedi una licenza temporanea
Se desideri rimuovere il messaggio di valutazione dai documenti generati o eliminare le limitazioni delle funzioni, per favore richiedere una licenza di prova di 30 giorni per te.
C#/VB.NET: Dividi PDF in più file PDF
Sommario
Installato tramite NuGet
PM> Install-Package Spire.PDF
Link correlati
È utile dividere un singolo PDF in più file più piccoli in determinate situazioni. Ad esempio, puoi dividere contratti, relazioni, libri, documenti accademici o altri documenti di grandi dimensioni in parti più piccole per renderli più facili da rivedere o riutilizzare. In questo articolo imparerai come dividere PDF in PDF a pagina singola e come dividere PDF per intervalli di pagine in C# e VB.NET utilizzando Spire.PDF for .NET.
Installa Spire.PDF for .NET
Per cominciare, è necessario aggiungere i file DLL inclusi nel pacchetto Spire.PDF for.NET come riferimenti nel progetto .NET. I file DLL possono essere scaricati da questo link o installato tramite NuGet.
PM> Install-Package Spire.PDF
Dividi PDF in PDF di una pagina in C#, VB.NET
Spire.PDF offre il metodo Split() per dividere un documento PDF multipagina in più file a pagina singola. Di seguito sono riportati i passaggi dettagliati.
- Crea un oggetto PdfDcoument.
- Carica un documento PDF utilizzando il metodo PdfDocument.LoadFromFile().
- Dividi il documento in PDF di una pagina utilizzando il metodo PdfDocument.Split(string destFilePattern, int startNumber).
- C#
- VB.NET
using System; using Spire.Pdf; namespace SplitPDFIntoIndividualPages { class Program { static void Main(string[] args) { //Specify the input file path String inputFile = "C:\\Users\\Administrator\\Desktop\\Terms of Service.pdf"; //Specify the output directory String outputDirectory = "C:\\Users\\Administrator\\Desktop\\Output\\"; //Create a PdfDocument object PdfDocument doc = new PdfDocument(); //Load a PDF file doc.LoadFromFile(inputFile); //Split the PDF to one-page PDFs doc.Split(outputDirectory + "output-{0}.pdf", 1); } } }
Dividi PDF per intervalli di pagine in C#, VB.NET
Non viene offerto alcun metodo semplice per suddividere i documenti PDF per intervalli di pagine. Per fare ciò, creiamo due o più nuovi documenti PDF e importiamo in essi la pagina o l'intervallo di pagine dal documento di origine. Ecco i passaggi dettagliati.
- Carica il file PDF di origine durante l'inizializzazione dell'oggetto PdfDocument.
- Creare due oggetti PdfDocument aggiuntivi.
- Importa la prima pagina dal file di origine al primo documento utilizzando il metodo PdfDocument.InsertPage().
- Importa le pagine rimanenti dal file di origine al secondo documento utilizzando il metodo PdfDocument.InsertPageRange().
- Salvare i due documenti come file PDF separati utilizzando il metodo PdfDocument.SaveToFile().
- C#
- VB.NET
using Spire.Pdf; using System; namespace SplitPdfByPageRanges { class Program { static void Main(string[] args) { //Specify the input file path String inputFile = "C:\\Users\\Administrator\\Desktop\\Terms of Service.pdf"; //Specify the output directory String outputDirectory = "C:\\Users\\Administrator\\Desktop\\Output\\"; //Load the source PDF file while initialing the PdfDocument object PdfDocument sourceDoc = new PdfDocument(inputFile); //Create two additional PdfDocument objects PdfDocument newDoc_1 = new PdfDocument(); PdfDocument newDoc_2 = new PdfDocument(); //Insert the first page of source file to the first document newDoc_1.InsertPage(sourceDoc, 0); //Insert the rest pages of source file to the second document newDoc_2.InsertPageRange(sourceDoc, 1, sourceDoc.Pages.Count - 1); //Save the two documents as PDF files newDoc_1.SaveToFile(outputDirectory + "output-1.pdf"); newDoc_2.SaveToFile(outputDirectory + "output-2.pdf"); } } }
Richiedi una licenza temporanea
Se desideri rimuovere il messaggio di valutazione dai documenti generati o eliminare le limitazioni delle funzioni, per favore richiedere una licenza di prova di 30 giorni per te.
C#/VB.NET: crittografa o decrittografa i file PDF
Sommario
Installato tramite NuGet
PM> Install-Package Spire.PDF
Link correlati
La crittografia dei PDF è un compito cruciale quando si tratta di condividere documenti riservati su Internet. Crittografando i file PDF con password complesse, è possibile proteggere i dati del file dall'accesso da parte di soggetti non autorizzati. In alcuni casi, potrebbe anche essere necessario rimuovere la password per rendere pubblico il documento. In questo articolo imparerai a programmaticamente crittografare o decrittografare un file PDF utilizzando Spire.PDF for .NET.
Installa Spire.PDF for .NET
Per cominciare, è necessario aggiungere i file DLL inclusi nel pacchetto Spire.PDF for.NET come riferimenti nel progetto .NET. I file DLL possono essere scaricati da questo link o installato tramite NuGet.
PM> Install-Package Spire.PDF
Crittografare un file PDF con password
Esistono due tipi di password per crittografare un file PDF: password di apertura e password di autorizzazione. Il primo è impostato per aprire il file PDF, mentre il secondo è impostato per limitare la stampa, la copia dei contenuti, i commenti, ecc. Se un file PDF è protetto con entrambi i tipi di password, può essere aperto con entrambe le password.
Il metodo PdfSecurity.Encrypt(string openPassword, string permissionPassword, PdfPermissionsFlags permissions, PdfEncryptionKeySize keySize) offerto da Spire.PDF for .NET consente di impostare sia la password di apertura che la password di autorizzazione per crittografare i file PDF. I passaggi dettagliati sono i seguenti.
- Creare un oggetto PdfDocument.
- Carica un file PDF di esempio utilizzando il metodo PdfDocument.LoadFromFile().
- Ottiene i parametri di sicurezza del documento utilizzando la proprietà PdfDocument.Security.
- Crittografare il file PDF con password di apertura e password di autorizzazione utilizzando il metodo PdfSecurity.Encrypt(string openPassword, string permissionPassword, PdfPermissionsFlags, PdfEncryptionKeySize keySize).
- Salvare il file dei risultati utilizzando il metodo PdfDocument.SaveToFile().
- C#
- VB.NET
using Spire.Pdf; using Spire.Pdf.Security; namespace EncryptPDF { class Program { static void Main(string[] args) { //Create a PdfDocument object PdfDocument pdf = new PdfDocument(); //Load a sample PDF file pdf.LoadFromFile(@"E:\Files\sample.pdf"); //Encrypt the PDF file with password pdf.Security.Encrypt("open", "permission", PdfPermissionsFlags.Print | PdfPermissionsFlags.CopyContent, PdfEncryptionKeySize.Key128Bit); //Save the result file pdf.SaveToFile("Encrypt.pdf", FileFormat.PDF); } } }
Rimuovi la password per decrittografare un file PDF
Quando è necessario rimuovere la password da un file PDF, è possibile impostare la password di apertura e la password di autorizzazione su vuoto durante la chiamata al metodo PdfSecurity.Encrypt(string openPassword, string permissionPassword, PdfPermissionsFlags, PdfEncryptionKeySize keySize, string originalPermissionPassword). I passaggi dettagliati sono i seguenti.
- Creare un oggetto PdfDocument.
- Caricare il file PDF crittografato con password utilizzando il metodo PdfDocument.LoadFromFile (nome file stringa, password stringa).
- Ottiene i parametri di sicurezza del documento utilizzando la proprietà PdfDocument.Security.
- Decrittografare il file PDF impostando la password di apertura e la password di autorizzazione su vuoto utilizzando PdfSecurity.Encrypt(string openPassword, string permissionPassword, PdfPermissionsFlags permissions, PdfEncryptionKeySize keySize, string originalPermissionPassword) metodo.
- Salvare il file dei risultati utilizzando il metodo PdfDocument.SaveToFile().
- C#
- VB.NET
using Spire.Pdf; using Spire.Pdf.Security; namespace DecryptPDF { class Program { static void Main(string[] args) { //Create a PdfDocument object PdfDocument pdf = new PdfDocument(); //Load the encrypted PDF file with password pdf.LoadFromFile("Encrypt.pdf", "open"); //Set the password as empty to decrypt PDF pdf.Security.Encrypt(string.Empty, string.Empty, PdfPermissionsFlags.Default, PdfEncryptionKeySize.Key128Bit, "permission"); //Save the result file pdf.SaveToFile("Decrypt.pdf", FileFormat.PDF); } } }
Richiedi una licenza temporanea
Se desideri rimuovere il messaggio di valutazione dai documenti generati o eliminare le limitazioni delle funzioni, per favore richiedere una licenza di prova di 30 giorni per te.
C#/VB.NET: firma digitale PDF con testo e/o immagine
Sommario
Installato tramite NuGet
PM> Install-Package Spire.PDF
Link correlati
La firma digitale assicura che il documento firmato non possa essere alterato da nessuno che non sia il suo autore. L'aggiunta di firme è il modo più comune per garantire l'autenticità del contenuto del documento. Una firma digitale visiva in un documento PDF può mostrare testo o un'immagine (ad esempio, firma scritta a mano). Questo articolo introduce come firmare digitalmente i PDF utilizzando Spire.PDF for .NET dai seguenti tre aspetti.
- Firma digitalmente PDF con testo
- Firma digitalmente PDF con un'immagine
- Firma digitalmente PDF con testo e un'immagine
Installa Spire.PDF for .NET
Per cominciare, è necessario aggiungere i file DLL inclusi nel pacchetto Spire.PDF for.NET come riferimenti nel progetto .NET. I file DLL possono essere scaricati da questo link o installato tramite NuGet.
PM> Install-Package Spire.PDF
Firma digitalmente PDF con testo
Di seguito sono riportati i passaggi per aggiungere una firma in testo normale a un documento PDF.
- Creare un oggetto PdfDocument e caricare un file PDF di esempio utilizzando il metodo PdfDocument.LoadFromFile().
- Carica un file di certificato .pfx durante l'inizializzazione dell'oggetto PdfCertificate.
- Crea un oggetto PdfSignature, specificandone la posizione e le dimensioni nel documento.
- Imposta la modalità grafica della firma su SignDetail, che mostrerà i dettagli della firma in testo normale.
- Imposta i dettagli della firma, inclusi nome, informazioni di contatto, motivo, data, ecc. tramite le proprietà sotto l'oggetto PdfSignature.
- Impostare le autorizzazioni del documento certificato su ForbidChanges e AllowFormFill.
- Salvare il documento in un altro file utilizzando il metodo PdfDocument.SaveToFile().
- C#
- VB.NET
using Spire.Pdf; using Spire.Pdf.Security; using System; using System.Drawing; using Spire.Pdf.Graphics; namespace AddTextSignature { class Program { static void Main(string[] args) { //Create a PdfDocument object PdfDocument doc = new PdfDocument(); //Load a sample PDF file doc.LoadFromFile("C:\\Users\\Administrator\\Desktop\\sample.pdf"); //Load the certificate PdfCertificate cert = new PdfCertificate("C:\\Users\\Administrator\\Desktop\\MyCertificate.pfx", "e-iceblue"); //Create a PdfSignature object and specify its position and size PdfSignature signature = new PdfSignature(doc, doc.Pages[doc.Pages.Count-1], cert, "MySignature"); RectangleF rectangleF = new RectangleF(doc.Pages[0].ActualSize.Width - 340, 150, 290, 100); signature.Bounds = rectangleF; signature.Certificated = true; //Set the graphics mode to sign detail signature.GraphicsMode = GraphicMode.SignDetail; //Set the signature content signature.NameLabel = "Signer:"; signature.Name = "Gary"; signature.ContactInfoLabel = "Phone:"; signature.ContactInfo = "0123456"; signature.DateLabel = "Date:"; signature.Date = DateTime.Now; signature.LocationInfoLabel = "Location:"; signature.LocationInfo = "USA"; signature.ReasonLabel = "Reason:"; signature.Reason = "I am the author"; signature.DistinguishedNameLabel = "DN:"; signature.DistinguishedName = signature.Certificate.IssuerName.Name; //Set the signature font signature.SignDetailsFont = new PdfTrueTypeFont(new Font("Arial Unicode MS",12f,FontStyle.Regular)); //Set the document permission to forbid changes but allow form fill signature.DocumentPermissions = PdfCertificationFlags.ForbidChanges | PdfCertificationFlags.AllowFormFill; //Save to file doc.SaveToFile("TextSignature.pdf"); doc.Close(); } } }
Firma digitalmente PDF con un'immagine
Di seguito sono riportati i passaggi per aggiungere una firma immagine a un documento PDF.
- Creare un oggetto PdfDocument e caricare un file PDF di esempio utilizzando il metodo PdfDocument.LoadFromFile().
- Carica un file di certificato .pfx durante l'inizializzazione dell'oggetto PdfCertificate.
- Crea un oggetto PdfSignature, specificandone la posizione e le dimensioni nel documento.
- Imposta la modalità grafica della firma su SignImageOnly, che mostrerà solo l'immagine della firma.
- Impostare l'immagine della firma tramite la proprietà PdfSignature.SignImageSource.
- Impostare le autorizzazioni del documento certificato su ForbidChanges e AllowFormFill.
- Salvare il documento in un altro file utilizzando il metodo PdfDocument.SaveToFile().
- C#
- VB.NET
using Spire.Pdf; using Spire.Pdf.Graphics; using Spire.Pdf.Security; using System.Drawing; namespace AddImageSignature { class Program { static void Main(string[] args) { //Create a PdfDocument object PdfDocument doc = new PdfDocument(); //Load a sample PDF file doc.LoadFromFile("C:\\Users\\Administrator\\Desktop\\sample.pdf"); //Load the certificate PdfCertificate cert = new PdfCertificate("C:\\Users\\Administrator\\Desktop\\MyCertificate.pfx", "e-iceblue"); //Create a PdfSignature object and specify its position and size PdfSignature signature = new PdfSignature(doc, doc.Pages[doc.Pages.Count - 1], cert, "MySignature"); RectangleF rectangleF = new RectangleF(doc.Pages[0].ActualSize.Width - 200, 150, 130, 130); signature.Bounds = rectangleF; signature.Certificated = true; //Set the graphics mode to image only signature.GraphicsMode = GraphicMode.SignImageOnly; //Set the sign image source signature.SignImageSource = PdfImage.FromFile("C:\\Users\\Administrator\\Desktop\\verified.png"); //Set the signature font signature.SignDetailsFont = new PdfTrueTypeFont(new Font("Arial Unicode MS", 12f, FontStyle.Regular)); //Set the document permission to forbid changes but allow form fill signature.DocumentPermissions = PdfCertificationFlags.ForbidChanges | PdfCertificationFlags.AllowFormFill; //Save to file doc.SaveToFile("ImageSignature.pdf"); doc.Close(); } } }
Firma digitalmente PDF con testo e un'immagine
Di seguito sono riportati i passaggi per firmare digitalmente un documento PDF con testo e un'immagine.
- Creare un oggetto PdfDocument e caricare un file PDF di esempio utilizzando il metodo PdfDocument.LoadFromFile().
- Carica un file di certificato .pfx durante l'inizializzazione dell'oggetto PdfCertificate.
- Crea un oggetto PdfSignature, specificandone la posizione e le dimensioni nel documento.
- Imposta la modalità grafica della firma su SignImageAndSignDetail, che mostrerà sia l'immagine della firma che i dettagli.
- Impostare l'immagine della firma tramite la proprietà PdfSignature.SignImageSource e impostare i dettagli della firma, inclusi nome, informazioni di contatto, motivo, data e così via tramite altre proprietà nell'oggetto PdfSignature.
- Impostare le autorizzazioni del documento certificato su ForbidChanges e AllowFormFill.
- Salvare il documento in un altro file utilizzando il metodo PdfDocument.SaveToFile().
- C#
- VB.NET
using Spire.Pdf; using Spire.Pdf.Security; using System; using System.Drawing; using Spire.Pdf.Graphics; namespace AddTextAndImageSignature { class Program { static void Main(string[] args) { //Create a PdfDocument object PdfDocument doc = new PdfDocument(); //Load a sample PDF file doc.LoadFromFile("C:\\Users\\Administrator\\Desktop\\sample.pdf"); //Load the certificate PdfCertificate cert = new PdfCertificate("C:\\Users\\Administrator\\Desktop\\MyCertificate.pfx", "e-iceblue"); //Create a PdfSignature object and specify its position and size PdfSignature signature = new PdfSignature(doc, doc.Pages[doc.Pages.Count - 1], cert, "MySignature"); RectangleF rectangleF = new RectangleF(doc.Pages[0].ActualSize.Width - 320, 150, 260, 110); signature.Bounds = rectangleF; signature.Certificated = true; //Set the graphics mode to image and sign detail signature.GraphicsMode = GraphicMode.SignImageAndSignDetail; //Set the signature content signature.NameLabel = "Signer:"; signature.Name = "Gary"; signature.ContactInfoLabel = "Phone:"; signature.ContactInfo = "0123456"; signature.DateLabel = "Date:"; signature.Date = DateTime.Now; signature.LocationInfoLabel = "Location:"; signature.LocationInfo = "USA"; signature.ReasonLabel = "Reason:"; signature.Reason = "I am the author"; signature.DistinguishedNameLabel = "DN:"; signature.DistinguishedName = signature.Certificate.IssuerName.Name; //Set the signature image source signature.SignImageSource = PdfImage.FromFile("C:\\Users\\Administrator\\Desktop\\handSignature.png"); //Set the signature font signature.SignDetailsFont = new PdfTrueTypeFont(new Font("Arial Unicode MS", 12f, FontStyle.Regular)); //Set the document permission to forbid changes but allow form fill signature.DocumentPermissions = PdfCertificationFlags.ForbidChanges | PdfCertificationFlags.AllowFormFill; //Save to file doc.SaveToFile("TextAndImageSignature.pdf"); doc.Close(); } } }
Richiedi una licenza temporanea
Se desideri rimuovere il messaggio di valutazione dai documenti generati o eliminare le limitazioni delle funzioni, per favore richiedere una licenza di prova di 30 giorni per te.
C#/VB.NET: Converti PDF in XPS o XPS in PDF
Sommario
Installato tramite NuGet
PM> Install-Package Spire.PDF
Link correlati
XPS è un formato simile al PDF ma utilizza XML nel layout, nell'aspetto e nelle informazioni di stampa di un file. Il formato XPS è stato sviluppato da Microsoft ed è nativamente supportato dai sistemi operativi Windows. Se vuoi lavorare con i tuoi file PDF su un computer Windows senza installare altro software, puoi convertirli in formato XPS. Allo stesso modo, se devi condividere un file XPS con un utente Mac o utilizzarlo su vari dispositivi, è consigliabile convertirlo in PDF. Questo articolo dimostrerà come eseguire a livello di codice convertire PDF in XPS o XPS in PDF utilizzando Spire.PDF for .NET.
Installa Spire.PDF for .NET
Per cominciare, è necessario aggiungere i file DLL inclusi nel pacchetto Spire.PDF for.NET come riferimenti nel progetto .NET. I file DLL possono essere scaricati da questo link o installato tramite NuGet.
PM> Install-Package Spire.PDF
Converti PDF in XPS in C# e VB.NET
Spire.PDF for .NET supporta la conversione di PDF in vari formati di file e per ottenere la conversione da PDF a XPS, sono necessarie solo tre righe di codice di base. Di seguito sono riportati i passaggi dettagliati.
- Creare un'istanza PdfDocument.
- Carica un documento PDF di esempio utilizzando il metodo PdfDocument.LoadFromFile().
- Convertire il documento PDF in un file XPS utilizzando il metodo PdfDocument.SaveToFile (string filename, FileFormat.XPS).
- C#
- VB.NET
using Spire.Pdf; namespace ConvertPdfToXps { class Program { static void Main(string[] args) { //Create a PdfDocument instance PdfDocument pdf = new PdfDocument(); //Load sample PDF document pdf.LoadFromFile("sample.pdf"); //Save it to XPS format pdf.SaveToFile("ToXPS.xps", FileFormat.XPS); pdf.Close(); } } }
Converti XPS in PDF in C# e VB.NET
La conversione da XPS a PDF può essere ottenuta anche con Spire.PDF for .NET. Durante la conversione, è possibile impostare per mantenere un'immagine di alta qualità sul file PDF generato utilizzando il metodo PdfDocument.ConvertOptions.SetXpsToPdfOptions(). Di seguito sono riportati i passaggi dettagliati.
- Creare un'istanza PdfDocument.
- Caricare un file XPS utilizzando il metodo PdfDocument.LoadFromFile(string filename, FileFormat.XPS) o il metodo PdfDocument.LoadFromXPS().
- Durante la conversione, imposta le opzioni di conversione da XPS a PDF per mantenere immagini di alta qualità utilizzando il metodo PdfDocument.ConvertOptions.SetXpsToPdfOptions().
- Salvare il file XPS in un file PDF utilizzando il metodo PdfDocument.SaveToFile(string filename, FileFormat.PDF).
- C#
- VB.NET
using Spire.Pdf; namespace ConvertXPStoPDF { class Program { static void Main(string[] args) { //Create a PdfDocument instance PdfDocument pdf = new PdfDocument(); //Load a sample XPS file pdf.LoadFromFile("Sample.xps", FileFormat.XPS); //pdf.LoadFromXPS("Sample.xps"); //Keep high quality images when converting XPS to PDF pdf.ConvertOptions.SetXpsToPdfOptions(true); //Save the XPS file to PDF pdf.SaveToFile("XPStoPDF.pdf", FileFormat.PDF); } } }
Richiedi una licenza temporanea
Se desideri rimuovere il messaggio di valutazione dai documenti generati o eliminare le limitazioni delle funzioni, per favore richiedere una licenza di prova di 30 giorni per te.