製品比較

IronPDFとGrapeCity PDF Viewerの比較

PDFは、ポータブルドキュメントフォーマットの略です。 それは、多くの異なるデバイスで任意のドキュメントを従来通りに表示することができるファイル形式です。 PDFは、潜在的な雇用主との履歴書やクライアントとの請求書などの重要な文書を共有するためによく使用されます。

その人気にもかかわらず、データの保存や共有の方法としてPDFを使用することにはいくつかの欠点もあります。 例えば、PDFはまずPDFリーダーで開く必要があるため、電子メールで共有できません。たとえ共有できたとしても、PDFは電話で開いたときにWord文書ほど鮮明に見えません。 また、PDFは、ファイル内のデータを認識し、編集可能な形式に変換できる編集ソフトウェアがコンピュータにインストールされていない限り、Word文書のように編集したり更新したりすることはできません。 つまり、PDFファイルを開いたときに、使用しているデバイスがPCであろうとMacであろうと、同じように見えるようにする必要があります。 これは、JPEGやGIFのような他のドキュメント形式では見られない、馴染みのある標準を実装しているため、すべてのデバイスでPDFファイルが信頼できるものになります。

この記事では、2つの.NET PDFライブラリをレビューします:

  • IronPDF
  • GrapeCity PDF (グレープシティPDF)

IronPDF

IronPDF は、数行のコードでPDFドキュメントを作成、読み取り、操作するためのビルド機能を提供する .NET ライブラリです。 以下の記事では、IronPDFでPDFファイルを作成する方法を示します。 この内容は、Visual Studio または C# の基本を理解しており、HTML に関する実務知識を持っていることを前提としています。

アプリケーションの記述、コンパイル、実行にはVisual Studio、ロジックとコードの記述にはC#、タイトル、見出し、画像、段落などの追加を含むPDFファイルのフォーマットにはHTMLが必要です。IronPDFライブラリは.NET Core, .NET 5, Framework, Standardを完全にサポートしています。

C#で数行のコードだけでPDFファイルを作成できます。 これは、C#とHTMLの基本的な知識を持っていれば簡単な作業です。 IronPDFの詳細については、IronPDFの機能に関する公式サイトをご覧ください。

IronPDFのインストール

ソリューションを開発するには、IronPDF用のNuGetパッケージのインストールが必要です。 メニューバーから「プロジェクト」を直接クリックしてください。 ドロップダウンリストが表示されます。 ドロップダウンメニューから「NuGet パッケージを管理」を選択し、それを選んでください。 このようなウィンドウが表示されます:

Grapecity Pdf Viewer Alternatives 1 related to IronPDFのインストール

「ブラウズ」タブを選択すると、次のようなウィンドウが表示されます。

Grapecity Pdf Viewer Alternatives 2 related to IronPDFのインストール

検索ボックスに'IronPdf'と入力し、"Enter "を押してください。結果ウィンドウが表示されます:

Grapecity Pdf Viewer Alternatives 3 related to IronPDFのインストール

IronPdfを選択してください:

C#でPDFファイルを作成する方法 - IronPDFを使用

C#でPDFファイルを作成する方法 - IronPDFを使用

「インストール」ボタンを選択してください。 インストールが成功すると、結果として以下のウィンドウが表示されます:

Grapecity Pdf Viewer Alternatives 5 related to IronPDFのインストール

「OK」ボタンを押すと、準備完了です。

PDFの作成

ファイルの先頭にIronPdf名前空間を追加します。

using IronPdf;
using IronPdf;
Imports IronPdf
$vbLabelText   $csharpLabel

ここからが本番です。 構築されたPDFドキュメントを保存するためのファイルパスが必要です。 そのために、ファイル名とファイルパスの選択をユーザーに促すSaveFileDialogを使用しています。

private void Save_Click(object sender, EventArgs e)
{
    // Code to Select the folder and save the file.
    SaveFileDialog saveFileDialog1 = new SaveFileDialog();
    saveFileDialog1.InitialDirectory = @"D:\";
    saveFileDialog1.Title = "Save Pdf File";
    saveFileDialog1.DefaultExt = "pdf";
    saveFileDialog1.Filter = "Pdf files (*.pdf)
*.pdf
All files (*.*)
*.*";
    saveFileDialog1.FilterIndex = 2;
    saveFileDialog1.RestoreDirectory = true;
    if (saveFileDialog1.ShowDialog() == DialogResult.OK)
    {
        string filename = saveFileDialog1.FileName;
        // actual code that will create Pdf files
        var HtmlLine = new HtmlToPdf();
        HtmlLine.RenderHtmlAsPdf(PdfText.Text).SaveAs(filename);
        // MessageBox to display that file save
        MessageBox.Show("File Saved Successfully!");
    }
}
private void Save_Click(object sender, EventArgs e)
{
    // Code to Select the folder and save the file.
    SaveFileDialog saveFileDialog1 = new SaveFileDialog();
    saveFileDialog1.InitialDirectory = @"D:\";
    saveFileDialog1.Title = "Save Pdf File";
    saveFileDialog1.DefaultExt = "pdf";
    saveFileDialog1.Filter = "Pdf files (*.pdf)
*.pdf
All files (*.*)
*.*";
    saveFileDialog1.FilterIndex = 2;
    saveFileDialog1.RestoreDirectory = true;
    if (saveFileDialog1.ShowDialog() == DialogResult.OK)
    {
        string filename = saveFileDialog1.FileName;
        // actual code that will create Pdf files
        var HtmlLine = new HtmlToPdf();
        HtmlLine.RenderHtmlAsPdf(PdfText.Text).SaveAs(filename);
        // MessageBox to display that file save
        MessageBox.Show("File Saved Successfully!");
    }
}
IRON VB CONVERTER ERROR developers@ironsoftware.com
$vbLabelText   $csharpLabel

SaveFileDialogは、PDFドキュメントを作成したい場所のフォルダーとファイル名を選択できるファイルダイアログを開く必要があります。 初期ディレクトリはDドライブに設定されていますが、任意に設定することができます。 PDFファイルのみを扱うため、デフォルトの拡張子はPDFファイルに設定されています。

「if」条件の中に、PDFファイルを作成する実際のコードが挿入されます。 以下のコード2行でPDFファイルを生成できたことが確認できます。 PdfTextは、PDFドキュメントに書き込まれるテキストを含むリッチテキストボックスの名前です。 ファイル名は、SaveFileDialogメソッドで選択されたファイルパスと名前です。

PDFの読み取り

PDFファイルを読むためのコードは複雑で、書くのも理解するのも難しいと思っているかもしれませんが、IronPDFはより簡単でシンプルにしましたのでご安心ください。 このプロセスは、わずか2行のコードで実現できます!

ファイルの先頭にIronPdfライブラリをインポートするための以下のコードを追加してください。

using IronPdf;
using System;
using System.Windows.Forms;
using IronPdf;
using System;
using System.Windows.Forms;
Imports IronPdf
Imports System
Imports System.Windows.Forms
$vbLabelText   $csharpLabel

以下のコードを関数内に記述してください。

private void Read_Click(object sender, EventArgs e)
{
    PdfDocument PDF = PdfDocument.FromFile(FilePath.Text);
    FileContent.Text = PDF.ExtractAllText();
}
private void Read_Click(object sender, EventArgs e)
{
    PdfDocument PDF = PdfDocument.FromFile(FilePath.Text);
    FileContent.Text = PDF.ExtractAllText();
}
Private Sub Read_Click(ByVal sender As Object, ByVal e As EventArgs)
	Dim PDF As PdfDocument = PdfDocument.FromFile(FilePath.Text)
	FileContent.Text = PDF.ExtractAllText()
End Sub
$vbLabelText   $csharpLabel

これは、データソースからドキュメントビューアーにすべての情報を抽出します。 すべてのレポートコンポーネントは、そのデータをデータソースとして使用します。

GrapeCity PDF機能

GrapeCity Documentsは、一般的なすべてのドキュメントフォーマットに対して、ユニバーサルなドキュメント、エディター、およびリーダーソリューションを提供する、クロスプラットフォームのドキュメント管理システムです。 Adobe Acrobatのような追加プログラムを必要とせずに、.NET Standard 2.0によって提供される豊富なライブラリを使用してPDFファイルを読み取り、生成し、変更し、保存することができます。 それには、開発者が高度なフォントサポート、写真、グラフィック、バーコード、コメント、アウトライン、スタンプ、ウォーターマークなどを含むPDFファイルを構築するための強力な機能セットがあります。

PDFの操作

.NET Standardアプリケーションでは、GrapeCityPDFを使用して、基本的または複雑なビジネスニーズに対応したPDFドキュメントを作成できます。 さらに、任意のソースからPDFを読み込み、変更し、保存することができます。

画像としてPDFを保存

GrapeCityPDFを使用して、画質を損なうことなくPDFを画像として保存できます。 さらに、この機能を実装するためには、数行のコードを使用するだけで済みます。

PDFビューアー

GrapeCity Documents PDF Viewerは、PDFファイルを表示するための軽量なプログラムベースのクライアントサイドビューワーです。 通常のPDF機能の多くがサポートされています。

豊富な機能

GrapeCityPDFライブラリには、テキスト、グラフィックス、写真、注釈、アウトラインなどの情報を含む複雑なPDFドキュメントを作成するための多くの機能があります。

インストール

GrapeCityをインストールするには、2つの方法があります。

  1. 現在のサンプルソースをダウンロードするには、ダウンロード圧縮されたソースファイルボタンを選択してください。

  2. ダウンロードしたzipファイルを解凍し、コンピュータ上のディレクトリに直接ファイルを抽出してください。

  3. そのディレクトリに移動します。

  4. run.cmd バッチファイルを実行します。これにより、サンプルソースがビルドされます。 SupportApiサービスを開始し、デフォルトのブラウザでhttp://localhost:3003 URLを開きます。

  5. 詳しくは、ダウンロードしたzipに含まれているreadme.MDをご覧ください。

WinFormsエディションのインストール

以下のトピックは、WinFormsエディションのインストール手順について説明します。 次のステップでは、WinForms Editionをインストールする手順を説明します:

  • C1ControlPanelを[GrapeCityのComponentOne](https://www.grapecity.com/componentone" target="_blank" rel="nofollow noopener noreferrer)からダウンロードして、最新のWinFormsエディションをインストールしてください。
  • ComponentOneC1ControlPanel.exeを使用してControlPanelを開きます。 すべての実行中のVisual Studioのインスタンスを閉じる必要があります。
  • 既存のユーザーは、登録済みのメールアドレスとパスワードを使用してログインできます。
  • 新しいユーザーの場合:

    • Component Oneに登録し、必要な項目を記入してアカウントを作成してください。

    • 確認メールがあなたのメールアドレスに送信されます。

    • メールアドレスを有効化するには、確認リンクにアクセスしてください。
  • ログインまたは登録したくない場合は、匿名ユーザーとして進行できます。
  • WinForms Editionタイルで、インストールを選択します。 すべてのエディションのインストールは、すべてのエディションの横のチェックボックスを選択することで実現できます。 詳細を見るボタンを選択して、エディションについて詳しく学んでください。
    GrapeCity PDFのインストール

  • インストールをクリックすると、ページにライセンス契約が表示され、ライセンス契約を受け入れるボタンをクリックする前に確認するよう求められます。
  • ライセンス契約に同意すると、設定およびディレクトリパス変更ボタンが表示されるページが続きます。 設定を受け入れるプロンプトを選択して、ディレクトリパスを確認し、インストールプロセスを開始します。
    GrapeCity PDFのインストール

  • インストーラーはコントロールをインストールし、その進行状況を表示します。 この画面が表示されている間は、インストールプロセスをキャンセルすることはできません。
  • コントロールがインストールされると、「インストール成功」の画面が表示されます。 現在インストールされているバージョンは、それぞれのエディションに表示されます。
  • インストーラーはコントロールをインストールし、その進行状況を表示します。 この画面が表示されている間は、インストールプロセスをキャンセルすることはできません。

    GrapeCity PDFのインストール

  • コントロールがインストールされると、「インストール成功」の画面が表示されます。 現在インストールされているバージョンは、それぞれのエディションに表示されます。
    GrapeCity PDFのインストール

PDFの作成

using System;
using System.IO;
using System.Drawing;
using System.Text;
using GrapeCity.Documents.Text;
using GrapeCity.Documents.Common;
using GrapeCity.Documents.Drawing;
using GrapeCity.Documents.Pdf;
using GrapeCity.Documents.Pdf.Structure;
using GrapeCity.Documents.Pdf.MarkedContent;
using GrapeCity.Documents.Pdf.Graphics;
using GrapeCity.Documents.Pdf.Annotations;
using GCTEXT = GrapeCity.Documents.Text;
using GCDRAW = GrapeCity.Documents.Drawing;
namespace GcPdfWeb.Samples.Basics
{
    // This sample shows how to create a PDF/A-3u compliant document.
    public class PdfA
    {
        public void CreatePDF(Stream stream)
        {
            var doc = new GcPdfDocument();
            var date = new DateTime(1961, 4, 12, 6, 7, 0, DateTimeKind.Utc);

            // Mark the document as PDF/A-3u conformant:
            doc.ConformanceLevel = PdfAConformanceLevel.PdfA3u;

            var fnt = GCTEXT.Font.FromFile(Path.Combine("Resources", "Fonts", "arial.ttf"));
            var gap = 36;

            // PDF/A-3a requires all content to be tagged so create and populate StructElement when rendering:
            StructElement sePart = new StructElement("Part");
            doc.StructTreeRoot.Children.Add(sePart);

            TextLayout tl = null;
            // Add 3 pages with sample content tagged according to PDF/A rules:
            for (int pageNo = 1; pageNo <= 3; ++pageNo)
            {
                // add page
                var page = doc.Pages.Add();
                var g = page.Graphics;
                float y = 72;
                if (doc.Pages.Count == 1)
                {
                    // Create paragraph element:
                    var seParagraph = new StructElement("P") { DefaultPage = page };
                    // Add it to Part element:
                    sePart.Children.Add(seParagraph);

                    tl = g.CreateTextLayout();
                    tl.MarginAll = 72;
                    tl.MaxWidth = page.Size.Width;

                    tl.DefaultFormat.Font = fnt;
                    tl.DefaultFormat.FontBold = true;
                    tl.DefaultFormat.FontSize = 20;
                    tl.Append("PDF/A-3A Document");

                    // PerformLayout is done automatically in a new TextLayout or after a Clear():
                    //tl.PerformLayout(true);

                    // Draw TextLayout within tagged content:
                    g.BeginMarkedContent(new TagMcid("P", 0));
                    g.DrawTextLayout(tl, PointF.Empty);
                    g.EndMarkedContent();

                    y = tl.ContentRectangle.Bottom + gap;

                    seParagraph.ContentItems.Add(new McidContentItemLink(0));
                }

                // Add some sample paragraphs tagged according to PDF/A rules:
                for (int i = 1; i <= 3; ++i)
                {
                    // Create paragraph element:
                    var seParagraph = new StructElement("P") { DefaultPage = page };
                    // Add it to Part element:
                    sePart.Children.Add(seParagraph);

                    var sb = new StringBuilder();
                    sb.Append(string.Format("Paragraph {0} on page {1}: ", i, pageNo));
                    sb.Append(Common.Util.LoremIpsum(1, 2, 4, 5, 10));
                    var para = sb.ToString();

                    tl.Clear();
                    tl.DefaultFormat.FontSize = 14;
                    tl.DefaultFormat.FontBold = false;
                    tl.MarginTop = y;
                    tl.Append(para);

                    // Draw TextLayout within tagged content:
                    g.BeginMarkedContent(new TagMcid("P", i));
                    g.DrawTextLayout(tl, PointF.Empty);
                    g.EndMarkedContent();

                    y += tl.ContentHeight + gap;

                    // Add content item to paragraph StructElement:
                    seParagraph.ContentItems.Add(new McidContentItemLink(i));

                    // PDF/A-3 allows embedding files into document, but they should be associated with some document element
                    // add embedded file associated with seParagraph:
                    var ef1 = EmbeddedFileStream.FromBytes(doc, Encoding.UTF8.GetBytes(para));
                    // ModificationDate and MimeType should be specified in case of PDF/A:
                    ef1.ModificationDate = date;
                    ef1.MimeType = "text/plain";
                    var fn = string.Format("Page{0}_Paragraph{1}.txt", pageNo, i);
                    var fs1 = FileSpecification.FromEmbeddedStream(fn, ef1);
                    // UnicodeFile.FileName should be specified for PDF/A compliance:
                    fs1.UnicodeFile.FileName = fs1.File.FileName;
                    // Relationship should be specified in case of PDF/A:
                    fs1.Relationship = AFRelationship.Unspecified;
                    doc.EmbeddedFiles.Add(fn, fs1);
                    seParagraph.AssociatedFiles.Add(fs1);
                }
            }

            // PDF/A-3 allows transparency drawing in PDF file, add some:
            var gpage = doc.Pages [0].Graphics;
            gpage.FillRectangle(new RectangleF(20, 20, 200, 200), Color.FromArgb(40, Color.Red));

            // PDF/A-3 allows using FormXObjects, add one with transparency:
            var r = new RectangleF(0, 0, 144, 72);
            var fxo = new FormXObject(doc, r);
            var gfxo = fxo.Graphics;
            gfxo.FillRectangle(r, Color.FromArgb(40, Color.Violet));
            TextFormat tf = new TextFormat()
            {
                Font = fnt,
                FontSize = 16,
                ForeColor = Color.FromArgb(100, Color.Black),
            };
            gfxo.DrawString("FormXObject", tf, r, TextAlignment.Center, ParagraphAlignment.Center);
            gfxo.DrawRectangle(r, Color.Blue, 3);
            gpage.DrawForm(fxo, new RectangleF(300, 250, r.Width, r.Height), null, ImageAlign.ScaleImage);

            // PDF/A-3 allows using embedded files, but each embedded file must be associated with a document's element:
            EmbeddedFileStream ef = EmbeddedFileStream.FromFile(doc, Path.Combine("Resources", "WordDocs", "ProcurementLetter.docx"));
            // ModificationDate and MimeType should be specified for EmbeddedFile in PDF/A:
            ef.ModificationDate = date;
            ef.MimeType = "application/msword";
            var fs = FileSpecification.FromEmbeddedFile(ef);
            fs.UnicodeFile.FileName = fs.File.FileName;
            fs.Relationship = AFRelationship.Unspecified;
            doc.EmbeddedFiles.Add("ProcurementLetter.docx", fs);
            // Associate embedded file with the document:
            doc.AssociatedFiles.Add(fs);

            // Add an attachment associated with an annotation:
            var sa = new StampAnnotation()
            {
                UserName = "Minerva",
                Font = fnt,
                Rect = new RectangleF(300, 36, 220, 72),
            };
            sa.Flags 
= AnnotationFlags.Print;
            // Use a FormXObject to represent the stamp annotation:
            var stampFxo = new FormXObject(doc, new RectangleF(PointF.Empty, sa.Rect.Size));
            var gstampFxo = stampFxo.Graphics;
            gstampFxo.FillRectangle(stampFxo.Bounds, Color.FromArgb(40, Color.Green));
            gstampFxo.DrawString("Stamp Annotation\nassociated with minerva.jpg", tf, stampFxo.Bounds, TextAlignment.Center, ParagraphAlignment.Center);
            gstampFxo.DrawRectangle(stampFxo.Bounds, Color.Green, 3);
            //
            sa.AppearanceStreams.Normal.Default = stampFxo;
            doc.Pages [0].Annotations.Add(sa);
            ef = EmbeddedFileStream.FromFile(doc, Path.Combine("Resources", "Images", "minerva.jpg"));
            ef.ModificationDate = date;
            ef.MimeType = "image/jpeg";
            fs = FileSpecification.FromEmbeddedFile(ef);
            fs.UnicodeFile.FileName = fs.File.FileName;
            fs.Relationship = AFRelationship.Unspecified;
            doc.EmbeddedFiles.Add("minerva.jpg", fs);
            sa.AssociatedFiles.Add(fs);

            // Mark the document as conforming to Tagged PDF conventions (required for PDF/A):
            doc.MarkInfo.Marked = true;

            // Metadata.CreatorTool and DocumentInfo.Creator should be the same for a PDF/A document:
            doc.Metadata.CreatorTool = doc.DocumentInfo.Creator;
            // A title should be specified for PDF/A document:
            doc.Metadata.Title = "GcPdf Document";
            doc.ViewerPreferences.DisplayDocTitle = true;

            // Done:
            doc.Save(stream);
        }
    }
}
using System;
using System.IO;
using System.Drawing;
using System.Text;
using GrapeCity.Documents.Text;
using GrapeCity.Documents.Common;
using GrapeCity.Documents.Drawing;
using GrapeCity.Documents.Pdf;
using GrapeCity.Documents.Pdf.Structure;
using GrapeCity.Documents.Pdf.MarkedContent;
using GrapeCity.Documents.Pdf.Graphics;
using GrapeCity.Documents.Pdf.Annotations;
using GCTEXT = GrapeCity.Documents.Text;
using GCDRAW = GrapeCity.Documents.Drawing;
namespace GcPdfWeb.Samples.Basics
{
    // This sample shows how to create a PDF/A-3u compliant document.
    public class PdfA
    {
        public void CreatePDF(Stream stream)
        {
            var doc = new GcPdfDocument();
            var date = new DateTime(1961, 4, 12, 6, 7, 0, DateTimeKind.Utc);

            // Mark the document as PDF/A-3u conformant:
            doc.ConformanceLevel = PdfAConformanceLevel.PdfA3u;

            var fnt = GCTEXT.Font.FromFile(Path.Combine("Resources", "Fonts", "arial.ttf"));
            var gap = 36;

            // PDF/A-3a requires all content to be tagged so create and populate StructElement when rendering:
            StructElement sePart = new StructElement("Part");
            doc.StructTreeRoot.Children.Add(sePart);

            TextLayout tl = null;
            // Add 3 pages with sample content tagged according to PDF/A rules:
            for (int pageNo = 1; pageNo <= 3; ++pageNo)
            {
                // add page
                var page = doc.Pages.Add();
                var g = page.Graphics;
                float y = 72;
                if (doc.Pages.Count == 1)
                {
                    // Create paragraph element:
                    var seParagraph = new StructElement("P") { DefaultPage = page };
                    // Add it to Part element:
                    sePart.Children.Add(seParagraph);

                    tl = g.CreateTextLayout();
                    tl.MarginAll = 72;
                    tl.MaxWidth = page.Size.Width;

                    tl.DefaultFormat.Font = fnt;
                    tl.DefaultFormat.FontBold = true;
                    tl.DefaultFormat.FontSize = 20;
                    tl.Append("PDF/A-3A Document");

                    // PerformLayout is done automatically in a new TextLayout or after a Clear():
                    //tl.PerformLayout(true);

                    // Draw TextLayout within tagged content:
                    g.BeginMarkedContent(new TagMcid("P", 0));
                    g.DrawTextLayout(tl, PointF.Empty);
                    g.EndMarkedContent();

                    y = tl.ContentRectangle.Bottom + gap;

                    seParagraph.ContentItems.Add(new McidContentItemLink(0));
                }

                // Add some sample paragraphs tagged according to PDF/A rules:
                for (int i = 1; i <= 3; ++i)
                {
                    // Create paragraph element:
                    var seParagraph = new StructElement("P") { DefaultPage = page };
                    // Add it to Part element:
                    sePart.Children.Add(seParagraph);

                    var sb = new StringBuilder();
                    sb.Append(string.Format("Paragraph {0} on page {1}: ", i, pageNo));
                    sb.Append(Common.Util.LoremIpsum(1, 2, 4, 5, 10));
                    var para = sb.ToString();

                    tl.Clear();
                    tl.DefaultFormat.FontSize = 14;
                    tl.DefaultFormat.FontBold = false;
                    tl.MarginTop = y;
                    tl.Append(para);

                    // Draw TextLayout within tagged content:
                    g.BeginMarkedContent(new TagMcid("P", i));
                    g.DrawTextLayout(tl, PointF.Empty);
                    g.EndMarkedContent();

                    y += tl.ContentHeight + gap;

                    // Add content item to paragraph StructElement:
                    seParagraph.ContentItems.Add(new McidContentItemLink(i));

                    // PDF/A-3 allows embedding files into document, but they should be associated with some document element
                    // add embedded file associated with seParagraph:
                    var ef1 = EmbeddedFileStream.FromBytes(doc, Encoding.UTF8.GetBytes(para));
                    // ModificationDate and MimeType should be specified in case of PDF/A:
                    ef1.ModificationDate = date;
                    ef1.MimeType = "text/plain";
                    var fn = string.Format("Page{0}_Paragraph{1}.txt", pageNo, i);
                    var fs1 = FileSpecification.FromEmbeddedStream(fn, ef1);
                    // UnicodeFile.FileName should be specified for PDF/A compliance:
                    fs1.UnicodeFile.FileName = fs1.File.FileName;
                    // Relationship should be specified in case of PDF/A:
                    fs1.Relationship = AFRelationship.Unspecified;
                    doc.EmbeddedFiles.Add(fn, fs1);
                    seParagraph.AssociatedFiles.Add(fs1);
                }
            }

            // PDF/A-3 allows transparency drawing in PDF file, add some:
            var gpage = doc.Pages [0].Graphics;
            gpage.FillRectangle(new RectangleF(20, 20, 200, 200), Color.FromArgb(40, Color.Red));

            // PDF/A-3 allows using FormXObjects, add one with transparency:
            var r = new RectangleF(0, 0, 144, 72);
            var fxo = new FormXObject(doc, r);
            var gfxo = fxo.Graphics;
            gfxo.FillRectangle(r, Color.FromArgb(40, Color.Violet));
            TextFormat tf = new TextFormat()
            {
                Font = fnt,
                FontSize = 16,
                ForeColor = Color.FromArgb(100, Color.Black),
            };
            gfxo.DrawString("FormXObject", tf, r, TextAlignment.Center, ParagraphAlignment.Center);
            gfxo.DrawRectangle(r, Color.Blue, 3);
            gpage.DrawForm(fxo, new RectangleF(300, 250, r.Width, r.Height), null, ImageAlign.ScaleImage);

            // PDF/A-3 allows using embedded files, but each embedded file must be associated with a document's element:
            EmbeddedFileStream ef = EmbeddedFileStream.FromFile(doc, Path.Combine("Resources", "WordDocs", "ProcurementLetter.docx"));
            // ModificationDate and MimeType should be specified for EmbeddedFile in PDF/A:
            ef.ModificationDate = date;
            ef.MimeType = "application/msword";
            var fs = FileSpecification.FromEmbeddedFile(ef);
            fs.UnicodeFile.FileName = fs.File.FileName;
            fs.Relationship = AFRelationship.Unspecified;
            doc.EmbeddedFiles.Add("ProcurementLetter.docx", fs);
            // Associate embedded file with the document:
            doc.AssociatedFiles.Add(fs);

            // Add an attachment associated with an annotation:
            var sa = new StampAnnotation()
            {
                UserName = "Minerva",
                Font = fnt,
                Rect = new RectangleF(300, 36, 220, 72),
            };
            sa.Flags 
= AnnotationFlags.Print;
            // Use a FormXObject to represent the stamp annotation:
            var stampFxo = new FormXObject(doc, new RectangleF(PointF.Empty, sa.Rect.Size));
            var gstampFxo = stampFxo.Graphics;
            gstampFxo.FillRectangle(stampFxo.Bounds, Color.FromArgb(40, Color.Green));
            gstampFxo.DrawString("Stamp Annotation\nassociated with minerva.jpg", tf, stampFxo.Bounds, TextAlignment.Center, ParagraphAlignment.Center);
            gstampFxo.DrawRectangle(stampFxo.Bounds, Color.Green, 3);
            //
            sa.AppearanceStreams.Normal.Default = stampFxo;
            doc.Pages [0].Annotations.Add(sa);
            ef = EmbeddedFileStream.FromFile(doc, Path.Combine("Resources", "Images", "minerva.jpg"));
            ef.ModificationDate = date;
            ef.MimeType = "image/jpeg";
            fs = FileSpecification.FromEmbeddedFile(ef);
            fs.UnicodeFile.FileName = fs.File.FileName;
            fs.Relationship = AFRelationship.Unspecified;
            doc.EmbeddedFiles.Add("minerva.jpg", fs);
            sa.AssociatedFiles.Add(fs);

            // Mark the document as conforming to Tagged PDF conventions (required for PDF/A):
            doc.MarkInfo.Marked = true;

            // Metadata.CreatorTool and DocumentInfo.Creator should be the same for a PDF/A document:
            doc.Metadata.CreatorTool = doc.DocumentInfo.Creator;
            // A title should be specified for PDF/A document:
            doc.Metadata.Title = "GcPdf Document";
            doc.ViewerPreferences.DisplayDocTitle = true;

            // Done:
            doc.Save(stream);
        }
    }
}
IRON VB CONVERTER ERROR developers@ironsoftware.com
$vbLabelText   $csharpLabel

GrapeCityPDFはPDF用の高度なライブラリではありません。

IronPDFのライセンスモデルと価格設定

30日間返金保証: ライセンスを購入すると、30日間の返金保証が受けられます。 お客様のニーズにライセンスが合わない場合、IronPDFは30日以内に返金を保証します。

簡単な統合: IronPDFの統合は、作業中のプロジェクトや環境と並行して行われ、1行のコードでシームレスに完了します。 これは、NuGetパッケージメソッドを使用して統合するか、インターネットから直接ダウンロードして環境に統合することで達成できます。

永久ライセンス: すべてのライセンスは、更新の必要なく一度のみ購入されます。

無料サポートと製品アップデート: 各ライセンスには、製品の背後にいるチームからの直接サポートと、1年間の無料製品アップデートが付属します。 拡張機能はいつでも購入可能です。 拡張機能は購入前に確認できます。

即時ライセンス: 支払いが確認されると、登録されたライセンスキーが送付されます。

すべてのライセンスは永続的であり、ステージング、開発、本番環境に適用されます。

ライト パッケージ

  • 1 開発者
  • 1 場所
  • 1 プロジェクト
  • 永久ライセンス

    このパッケージは、組織内の単一のソフトウェア開発者が一箇所でIron Softwareを利用することを可能にします。 Iron Softwareは、単一のイントラネットアプリケーション、ウェブアプリケーション、またはデスクトップソフトウェアプログラムで利用することができます。 ライセンスは譲渡不可のため、組織または代理店/クライアント関係の外で共有することは禁止されています。 このライセンスタイプは、他のすべてのライセンスタイプと同様に、契約に明示的に付与されていないすべての権利を明示的に除外しています。OEMの再配布および追加の適用範囲を購入しないでIron SoftwareをSaaSとして利用することもこれに含まれます。

    価格: 年間$749から始まります。

Professional License

  • 10 開発者
  • 10のロケーション
  • 10プロジェクト
  • 永久ライセンス

    このライセンスにより、組織内の決められた数のソフトウェア開発者が最大10か所までの多数の場所でIron Softwareを利用することができます。 Iron Softwareは、Webサイト、イントラネットアプリケーション、デスクトップソフトウェアなど、お好きなだけお使いいただけます。ライセンスは譲渡できませんので、組織外や代理店/顧客との関係以外での共有は禁止されています。 このライセンスタイプは、他のすべてのライセンスタイプと同様に、OEMによる再配布や、追加補償を購入せずにSaaSとしてIron Softwareを利用することを含め、本契約で明示的に付与されていないすべての権利を明示的に除外します。 このライセンスは、最大10個の単一プロジェクトに統合することができます。

    価格: 年間999ドルから開始。

アンリミテッドライセンス

  • 無制限の開発者
  • 無制限の場所
  • 無制限のプロジェクト
  • 永久ライセンス

    これにより、1つの組織の無制限の数のソフトウェア開発者が無制限の場所でIron Softwareを利用できるようになります。 Iron Software は、イントラネットアプリケーション、デスクトップソフトウェアアプリケーション、およびウェブサイトに自由に使用できます。ライセンスは譲渡不可であり、組織外またはエージェンシー/クライアントの関係外で共有することはできません。このライセンスタイプ(すべての他のライセンスタイプと同様に)は、OEM再配布や追加カバレッジを購入しないでIron SoftwareをSaaSとして利用することを含む、契約で承認されていないすべての権利を明示的に除外します。

    価格:年間$2999からです。

    ロイヤリティフリーの再配布: ベースライセンスでカバーされるプロジェクトの数に基づいて、複数の異なるパッケージの商業製品の一部としてIron Softwareをロイヤリティを支払うことなく配布することができます。 これは、ベースライセンスでカバーされるプロジェクト数に基づいて、SaaSソフトウェアサービス内でIron Softwareを導入できるようにします。

    価格: 年間$1599から開始。

    GrapeCity PDFのインストール

GrapeCity PDF ライセンスモデルと価格設定

PDFのためのドキュメント

  • 1開発者ライセンスが含まれています
  • 1 配布場所

    このパッケージには、開発者ライセンスが1つと、配布場所が1か所のみ含まれています。サポートやメンテナンスは含まれていません。

    価格: 年間$999から始まります。

Documents for PDF Unlimited(PDF 無制限のためのドキュメント)

  • 1開発者ライセンスが含まれています
  • 無制限配布場所

    このパッケージには無制限の配布場所を含む1つの開発者ライセンスが含まれます。 それにはサポートとメンテナンスが含まれていません。 GrapeCityはSaaSおよびOEMをサポートしていません。

    価格: 年間 $2799 から開始。

PDFチームのためのUnlimitedライセンス用ドキュメント

  • 5つの開発者ライセンスを含む
  • 無制限配布場所

    このパッケージには、サポートとメンテナンスなしで、無制限の配布場所に対応した5つの開発者ライセンスが含まれています。 GrapeCityはSaaSおよびOEMをサポートしていません。

    価格設定: 1年あたり$5799から始まります。

    GrapeCity PDFパッケージの比較

    IronPDF Lite One-Developer パッケージには1年間のサポートが付いており、費用は約 $749 です。 GrapeCity Documents for PDFには、One-Developerパッケージが含まれており、サポートなしで$999です。 IronPDFプロフェッショナルパッケージには、10開発者パッケージが含まれ、1年間のサポートが付いていて、価格は$999です。一方、GrapeCityには10開発者パッケージがなく、5開発者パッケージのみがあり、その価格は$5799です。

IronPDFのLiteおよびProfessionalパッケージには、SaaSサービスまたはOEM、そして5年のサポートオプションも含まれています。 Lite一人開発者パッケージは、5年間のサポート、SaaS、およびOEMサービスを提供し、費用は2897米ドルです。 GrapeCity には SaaS、OEM サービス、および 5 年間のサポートオプションがありません。 Iron Professional 10開発者パッケージには、5年間のサポート、SaaS、およびOEMサービスが含まれており、価格は$3397 USDです。 GrapeCityには10人の開発者パッケージはありません。

結論

GrapeCity Documents for PDFは、開発者がエクスポート/インポートを行い、AcroForms(PDFフォーム)を作成し、多数のデスクトップアプリケーションでPDFを実行できるようにします。 GrapeCity Documents for PDF(GcPdf)を使用すると、お客様に完全なPDFソリューションを提供する方法を進めることができます。

当社は、より高精度を提供する製品としてIronPDFを強くお勧めします。 類似の機能を実行する競合製品は、特定の画像の変換に失敗し、未知の文字が発生するなどの不正確な問題に直面することがあります。 一方、IronPDFは正確な結果を提供します。

IronPDFパッケージは、継続費用なしで競争力のあるライセンスおよびサポートを提供します。 IronPDFは$749から始まり、より多くの機能を含むパッケージがあります。 GrapeCity PDFは年間$1,649から始まります。 IronPDFは、複数のプラットフォームを単一の価格でサポートしています!

まだIronPDFの顧客でない場合は、無料トライアルを利用して、すべての利用可能な機能をお試しください。 Iron Suiteを購入すると、5つの製品を2つの価格で手に入れることができます。 詳細については、IronPDF のライセンスをご覧ください。Iron Software の Iron Suite 製品ページを訪問して、完全なパッケージ情報をご確認ください。

チペゴ
ソフトウェアエンジニア
チペゴは優れた傾聴能力を持ち、それが顧客の問題を理解し、賢明な解決策を提供する助けとなっています。彼は情報技術の学士号を取得後、2023年にIron Softwareチームに加わりました。現在、彼はIronPDFとIronOCRの2つの製品に注力していますが、顧客をサポートする新しい方法を見つけるにつれて、他の製品に関する知識も日々成長しています。Iron Softwareでの協力的な生活を楽しんでおり、さまざまな経験を持つチームメンバーが集まり、効果的で革新的な解決策を提供することに貢献しています。チペゴがデスクを離れているときは、良い本を楽しんだり、サッカーをしていることが多いです。
< 以前
IronPDFとXFINIUM.PDFの比較
次へ >
IronPDFとTextcontrolの比較