using FastReport.Controls; using FastReport.Export; using FastReport.Export.Pdf; using FastReport.Utils; using System; using System.Windows.Forms; namespace FastReport.Forms { /// /// Form for . /// For internal use only. /// public partial class PDFExportForm : BaseExportForm { #region Methods /// public override void Init(ExportBase export) { base.Init(export); PDFExport pdfExport = Export as PDFExport; // Options cbPdfStandard.SelectedIndex = (int)pdfExport.PdfCompliance; cbEmbeddedFonts.Checked = pdfExport.EmbeddingFonts; cbBackground.Checked = pdfExport.Background; cbTextInCurves.Checked = pdfExport.TextInCurves; cbColorSpace.SelectedIndex = (int)pdfExport.ColorSpace; cbOriginalResolution.Checked = pdfExport.ImagesOriginalResolution; cbPrintOptimized.Checked = pdfExport.PrintOptimized; cbJpegCompression.Checked = pdfExport.JpegCompression; nudJpegQuality.Value = pdfExport.JpegQuality; cbAcroForm.Checked = pdfExport.InteractiveForms; // Document Information tbTitle.Text = pdfExport.Title; tbAuthor.Text = pdfExport.Author; tbSubject.Text = pdfExport.Subject; tbKeywords.Text = pdfExport.Keywords; tbCreator.Text = pdfExport.Creator; tbProducer.Text = pdfExport.Producer; // Security tbOwnerPassword.Text = pdfExport.OwnerPassword; tbUserPassword.Text = pdfExport.UserPassword; cbPrintTheDocument.Checked = pdfExport.AllowPrint; cbModifyTheDocument.Checked = pdfExport.AllowModify; cbCopyOfTextAndGraphics.Checked = pdfExport.AllowCopy; cbAnnotations.Checked = pdfExport.AllowAnnotate; // Viewer cbPrintDialog.Checked = pdfExport.ShowPrintDialog; cbHideToolbar.Checked = pdfExport.HideToolbar; cbHideMenubar.Checked = pdfExport.HideMenubar; cbHideUI.Checked = pdfExport.HideWindowUI; cbFitWindow.Checked = pdfExport.FitWindow; cbCenterWindow.Checked = pdfExport.CenterWindow; cbPrintScaling.Checked = pdfExport.PrintScaling; cbOutline.Checked = pdfExport.Outline; cbbZoom.SelectedIndex = (int)pdfExport.DefaultZoom; //curves switch (pdfExport.GradientQuality) { case PDFExport.GradientQualityEnum.Image: rbGradientImage.Select(); break; case PDFExport.GradientQualityEnum.Low: rbGradientLow.Select(); break; case PDFExport.GradientQualityEnum.Medium: rbGradientMedium.Select(); break; case PDFExport.GradientQualityEnum.High: rbGradientHigh.Select(); break; } SelectIndexByValue(cbGradientInterpolationPoints, ((int)pdfExport.GradientInterpolationPoints).ToString()); switch (pdfExport.CurvesInterpolation) { case PDFExport.CurvesInterpolationEnum.Curves: cbCurvesInterpolation.SelectedIndex = 0; break; default: SelectIndexByValue(cbCurvesInterpolation, ((int)pdfExport.CurvesInterpolation).ToString()); break; } cbSvgAsPicture.Checked = pdfExport.SvgAsPicture; switch (pdfExport.CurvesInterpolationText) { case PDFExport.CurvesInterpolationEnum.Curves: cbCurvesInterpolationText.SelectedIndex = 0; break; default: SelectIndexByValue(cbCurvesInterpolationText, ((int)pdfExport.CurvesInterpolationText).ToString()); break; } cbSignPdf.Checked = pdfExport.IsDigitalSignEnable; UpdateTextBox(tbSignLocation, pdfExport.DigitalSignLocation); UpdateTextBox(tbSignReason, pdfExport.DigitalSignReason); UpdateTextBox(tbSignContactInfo, pdfExport.DigitalSignContactInfo); //UpdateCertificate(pdfExport.DigitalSignCertificate); UpdateTextBox(tbCertificatePath, pdfExport.DigitalSignCertificatePath); cbSaveCertificatePassword.Checked = pdfExport.SaveDigitalSignCertificatePassword; } private void UpdateTextBox(TextBox tb, string text) { if (!String.IsNullOrEmpty(text)) tb.Text = text; else tb.Text = ""; } private void UpdateTextBox(TextBoxButton tb, string text) { if (!String.IsNullOrEmpty(text)) tb.Text = text; else tb.Text = ""; } private void SelectIndexByValue(ComboBox comboBox, string value) { for (int i = 0; i < comboBox.Items.Count; i++) if (comboBox.Items[i].ToString() == value) { comboBox.SelectedIndex = i; return; } comboBox.SelectedIndex = 0; } /// protected override void Done() { base.Done(); PDFExport pdfExport = Export as PDFExport; // Options pdfExport.PdfCompliance = (PDFExport.PdfStandard)cbPdfStandard.SelectedIndex; pdfExport.EmbeddingFonts = cbEmbeddedFonts.Checked; pdfExport.Background = cbBackground.Checked; pdfExport.TextInCurves = cbTextInCurves.Checked; pdfExport.ColorSpace = (PDFExport.PdfColorSpace)cbColorSpace.SelectedIndex; pdfExport.ImagesOriginalResolution = cbOriginalResolution.Checked; pdfExport.PrintOptimized = cbPrintOptimized.Checked; pdfExport.JpegCompression = cbJpegCompression.Checked; pdfExport.JpegQuality = (int)nudJpegQuality.Value; pdfExport.InteractiveForms = cbAcroForm.Checked; // Document Information pdfExport.Title = tbTitle.Text; pdfExport.Author = tbAuthor.Text; pdfExport.Subject = tbSubject.Text; pdfExport.Keywords = tbKeywords.Text; pdfExport.Creator = tbCreator.Text; pdfExport.Producer = tbProducer.Text; // Security pdfExport.OwnerPassword = tbOwnerPassword.Text; pdfExport.UserPassword = tbUserPassword.Text; pdfExport.AllowPrint = cbPrintTheDocument.Checked; pdfExport.AllowModify = cbModifyTheDocument.Checked; pdfExport.AllowCopy = cbCopyOfTextAndGraphics.Checked; pdfExport.AllowAnnotate = cbAnnotations.Checked; // Viewer pdfExport.ShowPrintDialog = cbPrintDialog.Checked; pdfExport.HideToolbar = cbHideToolbar.Checked; pdfExport.HideMenubar = cbHideMenubar.Checked; pdfExport.HideWindowUI = cbHideUI.Checked; pdfExport.FitWindow = cbFitWindow.Checked; pdfExport.CenterWindow = cbCenterWindow.Checked; pdfExport.PrintScaling = cbPrintScaling.Checked; pdfExport.Outline = cbOutline.Checked; pdfExport.DefaultZoom = (PDFExport.MagnificationFactor)cbbZoom.SelectedIndex; //curves if (rbGradientImage.Checked) pdfExport.GradientQuality = PDFExport.GradientQualityEnum.Image; else if (rbGradientHigh.Checked) pdfExport.GradientQuality = PDFExport.GradientQualityEnum.High; else if (rbGradientMedium.Checked) pdfExport.GradientQuality = PDFExport.GradientQualityEnum.Medium; else pdfExport.GradientQuality = PDFExport.GradientQualityEnum.Low; try { pdfExport.GradientInterpolationPoints = (PDFExport.GradientInterpolationPointsEnum)Int32.Parse(cbGradientInterpolationPoints.Items[cbGradientInterpolationPoints.SelectedIndex].ToString()); } catch { pdfExport.GradientInterpolationPoints = PDFExport.GradientInterpolationPointsEnum.P128; } if (cbCurvesInterpolation.SelectedIndex == 0) pdfExport.CurvesInterpolation = PDFExport.CurvesInterpolationEnum.Curves; else try { pdfExport.CurvesInterpolation = (PDFExport.CurvesInterpolationEnum)Int32.Parse(cbCurvesInterpolation.Items[cbCurvesInterpolation.SelectedIndex].ToString()); } catch { pdfExport.CurvesInterpolation = PDFExport.CurvesInterpolationEnum.Curves; } pdfExport.SvgAsPicture = cbSvgAsPicture.Checked; if (cbCurvesInterpolationText.SelectedIndex == 0) pdfExport.CurvesInterpolationText = PDFExport.CurvesInterpolationEnum.Curves; else try { pdfExport.CurvesInterpolationText = (PDFExport.CurvesInterpolationEnum)Int32.Parse(cbCurvesInterpolationText.Items[cbCurvesInterpolationText.SelectedIndex].ToString()); } catch { pdfExport.CurvesInterpolationText = PDFExport.CurvesInterpolationEnum.Curves; } pdfExport.IsDigitalSignEnable = cbSignPdf.Checked; pdfExport.SaveDigitalSignCertificatePassword = cbSaveCertificatePassword.Checked; pdfExport.DigitalSignLocation = tbSignLocation.Text; pdfExport.DigitalSignReason = tbSignReason.Text; pdfExport.DigitalSignContactInfo = tbSignContactInfo.Text; if (tbCertificatePassword.PasswordChar != '\0') { pdfExport.DigitalSignCertificatePassword = tbCertificatePassword.Text; } pdfExport.DigitalSignCertificatePath = tbCertificatePath.Text; } /// public override void Localize() { base.Localize(); MyRes res = new MyRes("Export,Pdf"); // Main Text = res.Get(""); panPages.Text = res.Get("Export"); // Options pageControlOptions.Text = Res.Get("Export,Misc,Options"); gbOptions.Text = Res.Get("Export,Misc,Options"); lblCompliance.Text = res.Get("PDFCompliance"); cbEmbeddedFonts.Text = res.Get("EmbeddedFonts"); cbBackground.Text = res.Get("Background"); cbTextInCurves.Text = res.Get("TextInCurves"); gbImages.Text = res.Get("Images"); lblColorSpace.Text = res.Get("ColorSpace"); cbOriginalResolution.Text = res.Get("OriginalResolution"); cbPrintOptimized.Text = res.Get("PrintOptimized"); cbJpegCompression.Text = res.Get("JpegCompression"); lblJpegQuality.Text = res.Get("JpegQuality"); cbAcroForm.Text = res.Get("InteractiveForms"); // Document Information pageControlInformation.Text = res.Get("Information"); gbDocumentInfo.Text = res.Get("DocumentInformation"); lbTitle.Text = res.Get("Title"); lbAuthor.Text = res.Get("Author"); lbSubject.Text = res.Get("Subject"); lbKeywords.Text = res.Get("Keywords"); lbCreator.Text = res.Get("Creator"); lbProducer.Text = res.Get("Producer"); // Security pageControlSecurity.Text = res.Get("Security"); gbAuth.Text = res.Get("Authentification"); lbOwnerPassword.Text = res.Get("OwnerPassword"); lbUserPassword.Text = res.Get("UserPassword"); gbPermissions.Text = res.Get("Permissions"); cbPrintTheDocument.Text = res.Get("PrintTheDocument"); cbModifyTheDocument.Text = res.Get("ModifyTheDocument"); cbCopyOfTextAndGraphics.Text = res.Get("CopyOfTextAndGraphics"); cbAnnotations.Text = res.Get("AddOrModifyTextAnnotations"); // Viewer pageControlViewer.Text = res.Get("Viewer"); gbViewerPrfs.Text = res.Get("ViewerPreferences"); cbPrintDialog.Text = res.Get("ShowPrintDialog"); cbHideToolbar.Text = res.Get("HideToolbar"); cbHideMenubar.Text = res.Get("HideMenubar"); cbHideUI.Text = res.Get("HideWindowUserInterface"); cbFitWindow.Text = res.Get("FitWindow"); cbCenterWindow.Text = res.Get("CenterWindow"); cbPrintScaling.Text = res.Get("PrintScaling"); cbOutline.Text = res.Get("Outline"); lblInitialZoom.Text = res.Get("InitialZoom"); cbbZoom.Items[0] = res.Get("ActualSize"); cbbZoom.Items[1] = res.Get("FitPage"); cbbZoom.Items[2] = res.Get("FitWidth"); cbbZoom.Items[3] = res.Get("Default"); // Vector graphics res = new MyRes("Export,Pdf,VectorGraphics"); pageControlVector.Text = res.Get(""); gbGradientQuality.Text = res.Get("GradientQuality"); rbGradientImage.Text = res.Get("ExportAsImage"); rbGradientLow.Text = res.Get("LowQuality"); rbGradientMedium.Text = res.Get("MediumQuality"); rbGradientHigh.Text = res.Get("HighQuality"); lbGradientInterpolationPoints.Text = res.Get("GradientInterpolation"); gbCurves.Text = res.Get("Curves"); lbCurvesInterpolation.Text = res.Get("CurvesInterpolation"); lbCurvesInterpolationText.Text = res.Get("TextInterpolation"); cbCurvesInterpolation.Items[0] = res.Get("Disabled"); cbCurvesInterpolationText.Items[0] = res.Get("Disabled"); cbSvgAsPicture.Text = res.Get("SvgAsPicture"); // Digital signature res = new MyRes("Export,Pdf,DigitalSignature"); pageDigitalSignature.Text = res.Get(""); gbSignInformation.Text = res.Get("SignInformation"); cbSignPdf.Text = res.Get("SignDocument"); lbSignLocation.Text = res.Get("Location"); lbSignReason.Text = res.Get("Reason"); lbSignContactInfo.Text = res.Get("ContactInfo"); gbCertificate.Text = res.Get("CertificateInformation"); lbCertificatePath.Text = res.Get("CertificatePath"); lbCertificatePassword.Text = res.Get("CertificatePassword"); cbSaveCertificatePassword.Text = res.Get("CertificateSavePassword"); lbSaveCertificatePasswordWarning.Text = res.Get("CertificateSavePasswordWarning"); tbCertificatePassword.PasswordChar = '\0'; tbCertificatePassword.Text = res.Get("ClickToChangeThePassword"); } /// public override void UpdateDpiDependencies() { base.UpdateDpiDependencies(); tbCertificatePath.Image = GetImage(1); } #endregion #region Constructors /// /// Initializes a new instance of the class. /// public PDFExportForm() { InitializeComponent(); cbPdfStandard.SelectedIndexChanged += optionChanged; cbEmbeddedFonts.CheckedChanged += optionChanged; cbTextInCurves.CheckedChanged += optionChanged; cbColorSpace.SelectedIndexChanged += optionChanged; cbOriginalResolution.CheckedChanged += optionChanged; cbJpegCompression.CheckedChanged += optionChanged; cbAcroForm.CheckedChanged += optionChanged; #if DOTNET_4 cbSvgAsPicture.Enabled = true; #else cbSvgAsPicture.Enabled = false; #endif tbCertificatePassword.GotFocus += TbPassword_GotFocus; // init optionChanged(null, null); } private void TbPassword_GotFocus(object sender, EventArgs e) { if (tbCertificatePassword.PasswordChar == '\0') { tbCertificatePassword.Text = ""; tbCertificatePassword.PasswordChar = '*'; } } #endregion #region Events private void optionChanged(object sender, EventArgs e) { bool noPdfStandard = false; if (cbAcroForm.Checked) { if (cbPdfStandard.SelectedIndex != 0) cbPdfStandard.SelectedIndex = 0; cbPdfStandard.Enabled = false; } else cbPdfStandard.Enabled = true; switch (cbPdfStandard.SelectedIndex) { case 1: // PDF/A-1a case 2: // PDF/A-2a case 3: // PDF/A-2b case 4: // PDF/A-2u case 5: // PDF/A-3a case 6: // PDF/A-3b pageControlSecurity.Enabled = false; tbUserPassword.Text = ""; tbOwnerPassword.Text = ""; cbEmbeddedFonts.Checked = true; cbEmbeddedFonts.Enabled = false; cbTextInCurves.Checked = false; cbTextInCurves.Enabled = false; cbAcroForm.Enabled = false; break; case 7: // PDF/X-3 case 8: // PDF/X-4 pageControlSecurity.Enabled = false; tbUserPassword.Text = ""; tbOwnerPassword.Text = ""; cbEmbeddedFonts.Checked = true; cbEmbeddedFonts.Enabled = false; cbTextInCurves.Enabled = true; cbAcroForm.Enabled = false; break; case 0: // PDF 1.5 default: pageControlSecurity.Enabled = true; cbEmbeddedFonts.Enabled = true; cbTextInCurves.Enabled = true; noPdfStandard = true; cbAcroForm.Enabled = true; break; } if (noPdfStandard) { // cbEmbeddedFonts cbEmbeddedFonts.Enabled = !cbTextInCurves.Checked;// && !cbAcroForm.Checked; //if (!cbEmbeddedFonts.Enabled) // cbEmbeddedFonts.Checked = false; // end // cbTextInCurves cbTextInCurves.Enabled = !cbEmbeddedFonts.Checked; if (!cbTextInCurves.Enabled) cbTextInCurves.Checked = false; // end } // cbPrintOptimized cbPrintOptimized.Enabled = !cbOriginalResolution.Checked; if (!cbPrintOptimized.Enabled) cbPrintOptimized.Checked = false; // end // cbJpegCompression if (cbColorSpace.SelectedIndex == (int)PDFExport.PdfColorSpace.CMYK || cbOriginalResolution.Checked) cbJpegCompression.Enabled = false; else cbJpegCompression.Enabled = true; if (!cbJpegCompression.Enabled) cbJpegCompression.Checked = false; // end // lblJpegQuality lblJpegQuality.Enabled = cbJpegCompression.Checked; // end // nudJpegQuality nudJpegQuality.Enabled = cbJpegCompression.Checked; // end } #endregion private void cbSignPdf_CheckedChanged(object sender, EventArgs e) { tbSignLocation.Enabled = cbSignPdf.Checked; tbSignReason.Enabled = cbSignPdf.Checked; tbSignContactInfo.Enabled = cbSignPdf.Checked; gbCertificate.Enabled = cbSignPdf.Checked; } private void btnSelectCertificatePath_Click(object sender, EventArgs e) { OpenFileDialog odf = new OpenFileDialog(); if (odf.ShowDialog() == DialogResult.OK) { tbCertificatePath.Text = odf.FileName; } } private void cbSaveCertificatePassword_CheckedChanged(object sender, EventArgs e) { lbSaveCertificatePasswordWarning.Visible = cbSaveCertificatePassword.Checked; } } }