製品比較

IronPDFとGrapeCity PDF Viewerの比較

公開済み 2022年9月1日
共有:

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

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

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

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

    IronPDF

IronPDFは、.NETおよびJava、Python、Node.jsでPDFを生成、編集、読み取るための強力なツールです。プログラマー向けに最適化されており、コードからPDFファイルの作成を容易に行うことができます。IronPDFは、HTML、CSS、JavaScript、および画像をPDFドキュメントに変換する能力を提供します。

機能

  • HTML to PDF: HTML、CSS、JavaScriptを利用してPDFを生成。
  • PDFの編集: 既存のPDFドキュメントにテキスト、画像、ページ番号、さらにはカスタムヘッダーやフッターを追加。
  • PDFの読み取り: PDFファイルからテキスト、画像、メタデータを抽出。
  • セキュリティ: パスワード保護や暗号化オプションでPDFドキュメントを保護。

利点

  • 使いやすさ: シンプルなAPIで時間を節約。
  • 高品質: 正確で美しいPDFドキュメントを生成。
  • 柔軟性: 様々なプラットフォームや言語で利用可能。

対応ライセンス

IronPDFは様々なライセンスオプションがあり、Lite License、Plus License、Professional License、Unlimited Licenseが用意されています。

技術サポートや詳細については、Iron Softwareの公式サイトをご覧ください。

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パッケージ. メニューバーから「プロジェクト」を直接クリックしてください。 ドロップダウンリストが表示されます。 「Manage」を選択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
VB   C#

ここからが本番です。 構築された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
VB   C#

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
VB   C#

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

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
VB   C#

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

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. 現在のサンプルソースをダウンロードするには、download zipped source filesボタンを選択してください。

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

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

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

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

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

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

  • 以下から C1ControlPanel をダウンロードします グレープシティのComponentOne 最新バージョンのWinFormsをインストールする。
  • ComponentOneC1ControlPanel.exeを使用してControlPanelを開きます。 Visual Studio の実行中のインスタンスはすべて閉じる必要があります。
  • 既存のユーザーは、登録済みのメールアドレスとパスワードを使用してログインできます。
  • 新しいユーザーの場合:

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

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

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

  • インストールをクリックすると、ライセンス契約が表示され、それを確認した後にライセンス契約を承諾するボタンをクリックするように求められます。
  • ライセンス契約に同意すると、設定およびディレクトリパス変更ボタンが表示されるページが続きます。 Accept Settings プロンプトを選択してディレクトリパスを確認し、インストールプロセスを開始します。
    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
VB   C#

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

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

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

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

永続ライセンス: すべてのライセンスは一度購入するだけで、更新の必要はありません。

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

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

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

ライト パッケージ

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

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

    価格: 年間 $749 から。

プロフェッショナルライセンス

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

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

    価格: 1年間につき$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をサポートしていません。

    価格:年間5799ドルから。

    GrapeCity PDFパッケージの比較

    IronPDF Lite 1開発者パッケージには、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製品ページ完全なパッケージ情報を確認するために。

< 以前
IronPDFとXFINIUM.PDFの比較
次へ >
IronPDFとTextcontrolの比較