/// <summary> /// PDF生成 /// </summary> public void MakePDF(List<System.Drawing.Image> list) { Document document = new Document(PageSize.A3);//创建一个Document实例 PdfWriter writer = PdfWriter.GetInstance(document, new FileStream(PDFSavePath, FileMode.Create));//创建Writer实例 document.Open(); #region 写入一些数据,包括:作者、标题、摘要、关键词、创建者、生产者、创建时间、头信息 document.AddAuthor("重齿风电"); document.AddCreationDate(); document.AddCreator("重齿风电"); //document.AddHeader("QQ", "346163801"); //document.AddHeader("Email", "*****@*****.**"); document.AddKeywords("重齿风电"); document.AddProducer(); document.AddSubject("重齿风电"); document.AddTitle("重齿风电"); #endregion BaseFont baseFont = CreateChineseFont(); iTextSharp.text.Font titleFont = new iTextSharp.text.Font(baseFont, 22, iTextSharp.text.Font.BOLD); iTextSharp.text.Font fontUnderLine = new iTextSharp.text.Font(baseFont, 12, iTextSharp.text.Font.UNDERLINE); iTextSharp.text.Font normalFont = new iTextSharp.text.Font(baseFont, 12); iTextSharp.text.Font normalRedFont = new iTextSharp.text.Font(baseFont, 12, iTextSharp.text.Font.NORMAL | iTextSharp.text.Font.BOLD, BaseColor.RED); //float titleLineHeight = 45f; float normalLineHeight = 25f; Paragraph pBlank = new Paragraph(" ", normalFont); pBlank.Leading = normalLineHeight; foreach (var im in list) { iTextSharp.text.Image jpeg = iTextSharp.text.Image.GetInstance(DoConvert(im,827,1169,80), BaseColor.WHITE); jpeg.Alignment = Element.ALIGN_CENTER; document.Add(jpeg); } document.Close(); }
private void button1_Click(object sender, EventArgs e) { if (openFile1.SafeFileName == "" || openFile2.SafeFileName == "") { MessageBox.Show("No haz seleccionado ningún PDF", "Error", MessageBoxButtons.OK, MessageBoxIcon.Error); return; } MessageBox.Show("Se unira \"" + openFile1.SafeFileName + "\" con \"" + openFile2.SafeFileName + "\""); saveFile.Filter = "Adobe Acrobat Document PDF (*.pdf)|*.pdf"; saveFile.FilterIndex = 1; if (saveFile.ShowDialog() == DialogResult.OK) { MessageBox.Show("Se guardara en la siguiente ruta:\n" + saveFile.FileName); FileStream myStream = new FileStream(saveFile.FileName,FileMode.OpenOrCreate); PdfReader reader = new PdfReader(openFile1.FileName); PdfReader reader2 = new PdfReader(openFile2.FileName); Document document = new Document(reader.GetPageSizeWithRotation(1)); PdfCopy writer = new PdfCopy(document, myStream); document.Open(); document.AddCreationDate(); if (txtAutor.Text != null) { document.AddAuthor(txtAutor.Text); } if (txtHeader.Text != null) { document.AddHeader(txtHeader.Text, "Document"); } if (txtKeywords.Text != null) { document.AddKeywords(txtKeywords.Text); } document.AddProducer(); if (txtTitulo.Text != null) { document.AddTitle(txtTitulo.Text); } // Calculando incremento progressBar.Refresh(); int incremento = (int)(100 / (reader.NumberOfPages + reader2.NumberOfPages)); MessageBox.Show("Incremento es: " + incremento); for (int i = 1; i <= reader.NumberOfPages; i++) { writer.AddPage(writer.GetImportedPage(reader, i)); progressBar.PerformStep(); progressBar.Increment(++incremento); } progressBar.Increment(50); for (int i = 1; i <= reader2.NumberOfPages; i++) { writer.AddPage(writer.GetImportedPage(reader2, i)); progressBar.PerformStep(); } progressBar.Increment(100); document.Close(); } }
private void SaveAsPDFA(ref string tempPDF, string pdfPath, MetaData md) { string tempdir = Path.Combine(Path.GetTempPath(), "GhostScriptWrapper"); if (!Directory.Exists(tempdir)) { Directory.CreateDirectory(tempdir); } tempPDF = Path.Combine(tempdir, string.Format("{0}_tmp.pdf", Guid.NewGuid())); File.Copy(pdfPath, tempPDF); GhostScriptWrapper.CallAPI(GetArgs(tempPDF, pdfPath)); var document = new it.Document(); using (var fs = new FileStream(tempPDF, FileMode.Create)) { // step 2: we create a writer that listens to the document //PdfCopy writer = new PdfCopy(document, fs); var pdfaWriter = ip.PdfAWriter.GetInstance(document, fs, ip.PdfAConformanceLevel.PDF_A_1B); pdfaWriter.SetTagged(); pdfaWriter.CreateXmpMetadata(); // step 3: we open the document document.Open(); document.AddAuthor(md.Author); document.AddCreator(md.Creator); document.AddLanguage(md.Language); document.AddProducer(); document.AddTitle(Path.GetFileNameWithoutExtension(pdfPath)); // we create a reader for a certain document var reader = new ip.PdfReader(pdfPath); reader.ConsolidateNamedDestinations(); document.NewPage(); var icc = ip.ICC_Profile.GetInstance(Environment.GetEnvironmentVariable("SystemRoot") + @"\System32\spool\drivers\color\sRGB Color Space Profile.icm"); pdfaWriter.SetOutputIntents("sRGB", null, "http://www.color.org", "sRGB IEC61966-2.1", icc.Data); // step 4: we add content for (var i = 1; i <= reader.NumberOfPages; i++) { var page = pdfaWriter.GetImportedPage(reader, i); pdfaWriter.DirectContentUnder.AddTemplate(page, 0, 0); document.NewPage(); } // step 5: we close the document and writer document.AddCreationDate(); pdfaWriter.Flush(); try { pdfaWriter.Close(); } catch (Exception ex) { Console.WriteLine(ex.Message); } reader.Close(); try { document.Close(); } catch { } } ManipulatePdf(tempPDF, pdfPath, md); }