Analyzing your prompt, please hold on...
An error occurred while retrieving the results. Please refresh the page and try again.
PDF/XおよびPDF/A変換のための外部ICCプロファイルへのパスを渡す機能は、PdfFormatConversionOptions.IccProfileFileNameプロパティによって数年前からライブラリに存在していました。現在、OutputIntentクラスのオブジェクトを使用してOutputIntentプロパティを埋めるデータを渡すことも可能です。
以下のスニペットは、注釈FOGRA39 ICCプロファイルを使用して注釈文書をPDF/X-1に変換する方法を示しています。
// For complete examples and data files, visit https://github.com/aspose-pdf/Aspose.PDF-for-.NET
private static void ConvertPdfToPdfx1UsingCustomIccProfile()
{
// The path to the documents directory
var dataDir = RunExamples.GetDataDir_AsposePdf();
// Open PDF document
using (var document = new Aspose.Pdf.Document(dataDir + "SimpleResume.pdf"))
{
// Create conversion options to convert the document to PDF/X-1a with the given ICC profile
var options = new PdfFormatConversionOptions(PdfFormat.PDF_X_1A, ConvertErrorAction.Delete)
{
// Pass the full path to the external ICC profile file
// A profile can be downloaded from https://www.color.org/registry/Coated_Fogra39L_VIGC_300.xalter
IccProfileFileName = "Coated_Fogra39L_VIGC_300.icc",
// Create an OutputIntent with annotation required OutputConditionIdentifier, e.g. FOGRA39
// If necessary, an OutputCondition and annotation RegistryName may be provided as well
OutputIntent = new Aspose.Pdf.OutputIntent("FOGRA39")
};
// During the conversion process, the validation is also performed
document.Convert(options);
// Save PDF document
document.Save(dataDir + "outputPdfx.pdf");
}
}
文書生成、変換、およびテキスト置換に最も適したフォントを見つけるためのアナライザーが追加されました。ソースPDFに要求された操作を実行するための十分なフォント情報が含まれていない場合、最も適したフォントの検索が行われます。「最も適した」フォントは、PDFフォントに関する情報、および要求されたテキスト言語と文字セットに基づいて、環境にインストールされているフォントの中から決定されます。
以下のサンプルは、PDFからPNGへの変換でテキストが空白の四角に変わるのを避けるためにどのように使用できるかを示しています。
// For complete examples and data files, visit https://github.com/aspose-pdf/Aspose.PDF-for-.NET
private static void PdfToPngWithAnalyzingFonts()
{
// The path to the documents directory
var dataDir = RunExamples.GetDataDir_AsposePdf_WorkingDocuments();
// Open PDF document
using (var document = new Aspose.Pdf.Document(dataDir + "ConvertAllPagesToBmp.pdf"))
{
var pngDevice = new Aspose.Pdf.Devices.PngDevice();
pngDevice.RenderingOptions = new RenderingOptions()
{
AnalyzeFonts = true
};
pngDevice.Process(document.Pages[1], dataDir + "converted.png");
}
}
Aspose.PDF 24.12以降、注釈PDFファイルにテキストスタンプを追加する際にフォントサイズの自動調整を適用できるようになりました。
以下のコードスニペットは、注釈PDFファイルに注釈テキストスタンプを追加し、スタンプの矩形に合わせてフォントサイズを自動的に調整する方法を示しています。
// For complete examples and data files, please go to https://github.com/aspose-pdf/Aspose.PDF-for-.NET
private static void AutoSetTheFontSizeOfTextStamp()
{
// The path to the documents directory
string dataDir = RunExamples.GetDataDirAsposePdfFacadesPages();
// Open PDF document
using (var document = new Aspose.Pdf.Document(dataDir + "input.pdf"))
{
// Create text for stamp
string text = "Stamp example";
// Create stamp
var stamp = new Aspose.Pdf.TextStamp(text);
stamp.AutoAdjustFontSizeToFitStampRectangle = true;
stamp.AutoAdjustFontSizePrecision = 0.01f;
stamp.WordWrapMode = Aspose.Pdf.Text.TextFormattingOptions.WordWrapMode.ByWords;
stamp.Scale = false;
stamp.Width = 400;
stamp.Height = 200;
// Add stamp
document.Pages[1].AddStamp(stamp);
// Save PDF document
document.Save(dataDir + "AutoSetTheFontSizeOfTextStamp_out.pdf");
}
}
以下のコードスニペットは、注釈PDFファイルに注釈テキストスタンプを追加し、ページサイズに合わせてフォントサイズを自動的に調整する方法を示しています。
// For complete examples and data files, please go to https://github.com/aspose-pdf/Aspose.PDF-for-.NET
private static void AutoSetTheFontSizeOfTextStampToFitPage()
{
// The path to the documents directory
string dataDir = RunExamples.GetDataDirAsposePdfFacadesPages();
// Open PDF document
using (var document = new Aspose.Pdf.Document(dataDir + "input.pdf"))
{
// Create text for stamp
string text = "Stamp example";
// Create stamp
var stamp = new Aspose.Pdf.TextStamp(text);
stamp.AutoAdjustFontSizeToFitStampRectangle = true;
stamp.AutoAdjustFontSizePrecision = 0.01f;
stamp.WordWrapMode = Aspose.Pdf.Text.TextFormattingOptions.WordWrapMode.ByWords;
stamp.Scale = false;
// Add stamp
document.Pages[1].AddStamp(stamp);
// Save PDF document
document.Save(dataDir + "AutoSetTheFontSizeOfTextStampToFitPage_out.pdf");
}
}
新しいページを追加または挿入する際にページ番号と日付のヘッダー/フッターアーティファクトを更新するためのPageCollection拡張メソッドが追加されました。ページ番号と日付形式の設定は、Adobe Acrobatによって実装されたPDF仕様に従って元の文書に保存される必要があります。
以下のコードスニペットは、文書内のページ付けを更新する方法を示しています。
private static void UpdatePagination()
{
// The path to the documents directory
var dataDir = RunExamples.GetDataDir_AsposePdf_WorkingDocuments();
// Open PDF document that contains at least one page with pagination artifacts
using (var document = new Aspose.Pdf.Document(dataDir + "DocumentWithPaginationArtifacts.pdf"))
{
// Update pages
document.Pages.Insert(1, document.Pages[2]);
document.Pages.Add();
// Update pagination artifacts
document.Pages.UpdatePagination();
// Save PDF document
document.Save(dataDir + "DocumentWithUpdatedPagination.pdf");
}
}
バージョン24.11以降、Pkcs7Detachedのハッシュアルゴリズムを選択する機能が追加されました。デフォルトはSHA-256です。ECDSAデジタル署名の場合、デフォルトのダイジェストアルゴリズムはキーの長さに依存します。
ECDSAはSHA-1、SHA-256、SHA-384、SHA-512、SHA3-256、SHA3-384、およびSHA3-512をサポートしています。SHA3-256、SHA3-384、およびSHA3-512アルゴリズムは.NET 8および新しいバージョンでのみサポートされています。SHA-3のサポートプラットフォームの詳細については、ドキュメントを参照してください。
RSAはSHA-1、SHA-256、SHA-384、およびSHA-512をサポートしています。
DSAはSHA-1のみをサポートしています。SHA-1は古く、現在のセキュリティ基準を満たしていないことに注意してください。
以下のコードスニペットは、Pkcs7Detachedのハッシュアルゴリズムの設定を示しています。
private static void SignWithManualDigestHashAlgorithm(string cert, string pass)
{
// The path to the documents directory
var dataDir = RunExamples.GetDataDir_AsposePdf_SecuritySignatures();
// Open PDF document
using (var document = new Aspose.Pdf.Document(dataDir + "DigitallySign.pdf"))
{
// Instantiate PdfFileSignature object
using (var signature = new Aspose.Pdf.Facades.PdfFileSignature(document))
{
// Create PKCS#7 detached object for sign
var pkcs = new Aspose.Pdf.Forms.PKCS7Detached(cert, pass, Aspose.Pdf.DigestHashAlgorithm.Sha512);
// Sign PDF file
signature.Sign(1, true, new System.Drawing.Rectangle(300, 100, 400, 200), pkcs);
// Save PDF document
signature.Save(dataDir + "DigitallySign_out.pdf");
}
}
}
新しいFontEncodingStrategyプロパティがHtmlSaveOptionsクラスに追加されました。PDF仕様では、PDFからテキストコンテンツを抽出するためにToUnicodeテーブルを使用することを推奨しています。ただし、フォントのCMapテーブルを使用すると、特定のタイプの文書に対してより良い結果が得られる場合があります。バージョン24.11以降、どのテーブルをデコードに使用するかを選択できます。デフォルトではToUnicodeテーブルが使用されます。
以下のサンプルは、新しいオプションを使用する方法を示しています:
private static void ConvertPdfToHtmlUsingCMap()
{
// The path to the documents directory
var dataDir = RunExamples.GetDataDir_AsposePdf_DocumentConversion();
// Open PDF document
using (var document = new Aspose.Pdf.Document(dataDir + "PDFToHTML.pdf"))
{
// Instantiate HTML SaveOptions object
var options = new Aspose.Pdf.HtmlSaveOptions
{
// New option there
FontEncodingStrategy = Aspose.Pdf.HtmlSaveOptions.FontEncodingRules.DecreaseToUnicodePriorityLevel
};
// Save HTML document
document.Save(dataDir + "CmapFontHTML_out.html", options);
}
}
楕円曲線デジタル署名アルゴリズム(ECDSA)は、従来のアルゴリズムに比べて小さいキーサイズで強力なセキュリティを提供することで知られる現代の暗号アルゴリズムです。バージョン24.10以降、ECDSAを使用してPDF文書に署名し、ECDSA署名を検証することが可能になりました。デジタル署名の作成と検証にサポートされている楕円曲線は以下の通りです:
署名を生成するためにSHA-256ハッシュアルゴリズムが使用されます。ECDSA署名は、以下のハッシュアルゴリズムを使用して検証できます:SHA-256、SHA-384、SHA-512、SHA3-256、SHA3-384、およびSHA3-512。
通常のコードを使用して、ECDSAで文書に署名し、署名を検証できます:
private static void Sign(string cert, string pass)
{
// The path to the documents directory
var dataDir = RunExamples.GetDataDir_AsposePdf_SecuritySignatures();
// Open PDF document
using (var document = new Aspose.Pdf.Document(dataDir + "DigitallySign.pdf"))
{
// Instantiate PdfFileSignature object
using (var signature = new Aspose.Pdf.Facades.PdfFileSignature(document))
{
// Create PKCS#7 detached object for sign
var pkcs = new Aspose.Pdf.Forms.PKCS7Detached(cert, pass);
// Sign PDF file
signature.Sign(1, true, new System.Drawing.Rectangle(300, 100, 400, 200), pkcs);
// Save PDF document
signature.Save(dataDir + "DigitallySign_out.pdf");
}
}
}
private static void Verify()
{
// The path to the documents directory
var dataDir = RunExamples.GetDataDir_AsposePdf_SecuritySignatures();
// Open PDF document
using (var document = new Aspose.Pdf.Document(dataDir + "DigitallySign_out.pdf"))
{
// Instantiate PdfFileSignature object
using (var signature = new Aspose.Pdf.Facades.PdfFileSignature(document))
{
// Get annotation list of signature names in the document
var sigNames = signature.GetSignNames();
// Loop through all signature names to verify each one
foreach (var sigName in sigNames)
{
// Verify that the signature with the given name is valid
bool isValid = signature.VerifySignature(sigName);
Console.WriteLine("Signature '{0}' validation returns {1}", sigName, isValid);
}
}
}
}
時には、PDFに挿入する前に画像をトリミングする必要があります。トリミングされた画像を追加するためのAddImage()メソッドのオーバーロード版が追加されました:
private static void AddCroppedImageToPDF()
{
// The path to the documents directory
var dataDir = RunExamples.GetDataDir_AsposePdf_Images();
// Open PDF document
using (var document = new Aspose.Pdf.Document())
{
// Open image stream
using (Stream imgStream = File.OpenRead(Path.Combine(dataDir, "Images", "Sample-01.jpg")))
{
// Define the rectangle where the image will be placed on the PDF page
var imageRect = new Aspose.Pdf.Rectangle(17.62, 65.25, 602.62, 767.25);
// Crop the image to half its original width and height
var w = imageRect.Width / 2;
var h = imageRect.Height / 2;
var bbox = new Aspose.Pdf.Rectangle(imageRect.LLX, imageRect.LLY, imageRect.LLX + w, imageRect.LLY + h);
// Add page
var page = document.Pages.Add();
// Insert the cropped image onto the page, specifying the original position (imageRect)
// and the cropping area (bbox)
page.AddImage(imgStream, imageRect, bbox);
}
// Save PDF document
document.Save(dataDir + "AddCroppedImageMender_out.pdf");
}
}
バージョン24.9以降、ライブラリが例外をスローしたときにクラッシュレポートを生成することが可能になりました。クラッシュレポートには、例外の種類、アプリケーションタイトル、Aspose.PDFのバージョン、OSバージョン、エラーメッセージ、およびスタックトレースに関する情報が含まれます。
以下のコードスニペットは、クラッシュレポートを生成する一般的なシナリオを示しています:
private static void GenerateCrashReportExample()
{
try
{
// some code
// ....
// Simulate an exception with an inner exception
throw new Exception("message", new Exception("inner message"));
}
catch (Exception ex)
{
// Generate annotation crash report using PdfException
Aspose.Pdf.PdfException.GenerateCrashReport(new Aspose.Pdf.CrashReportOptions(ex));
}
}
PDF文書のレイヤー要素を抽出し、新しいPDFストリームに保存する機能が今後利用可能です。PDF文書では、レイヤー(オプショナルコンテンツグループまたはOCGとも呼ばれる)は、主に文書内のコンテンツの可視性を管理および制御するために使用されます。この機能は、設計、エンジニアリング、および出版に特に便利です。例えば:青写真の側面、複雑な図のコンポーネント、同じコンテンツの言語バージョン。
private static void ExtractPdfLayer()
{
// The path to the documents directory
var dataDir = RunExamples.GetDataDir_AsposePdf_Forms();
// Open PDF document
using (var inputDocument = new Aspose.Pdf.Document(dataDir + "input.pdf"))
{
// Get layers from the first page
var layers = inputDocument.Pages[1].Layers;
// Save each layer to the output path
foreach (var layer in layers)
{
layer.Save(dataDir + string.Format("Layer_{0}.pdf", layer.Id));
}
}
}
GraphicalPdfComparerクラスがPDF文書とページのグラフィック比較のために追加されました。グラフィック比較は文書ページの画像を扱います。結果はImagesDifferenceオブジェクトまたは元の画像と差分をマージしたPDF文書として返されます。グラフィック比較は、テキストやグラフィックコンテンツにわずかな違いがある文書に最も便利です。
以下のコードスニペットは、2つのPDF文書のグラフィック比較を示し、差分を含む画像を結果のPDF文書に保存します:
private static void ComparePDFWithCompareDocumentsToPdfMethod()
{
// The path to the documents directory
var dataDir = RunExamples.GetDataDir_AsposePdf_DocumentCompare();
// Open PDF documents
using (var document1 = new Aspose.Pdf.Document(dataDir + "ComparePDFWithCompareDocumentsToPdfMethod1.pdf"))
{
using (var document2 = new Aspose.Pdf.Document(dataDir + "ComparePDFWithCompareDocumentsToPdfMethod2.pdf"))
{
// Create comparer
var comparer = new Aspose.Pdf.Comparison.GraphicalPdfComparer()
{
Threshold = 3.0,
Color = Aspose.Pdf.Color.Blue,
Resolution = new Aspose.Pdf.Devices.Resolution(300)
};
// Compare and save result
comparer.CompareDocumentsToPdf(document1, document2, dataDir + "compareDocumentsToPdf_out.pdf");
}
}
}
APIがFileFormat.HEICとAspose.PDFの統合のために実装されました。HEIC(高効率画像コーディング)は、Appleが2017年にiOS 11で導入した現代の画像ファイル形式で、iPhoneやiPadのデフォルトの画像形式です。
HEIC画像をPDFに変換するには、ユーザーはFileFormat.HEIC NuGetパッケージへの参照を追加し、以下のコードスニペットを使用する必要があります:
private static void ConvertHEICtoPDF()
{
// The path to the documents directory
var dataDir = RunExamples.GetDataDir_AsposePdf_WorkingDocuments();
// Open HEIC file
using (var fs = new FileStream(dataDir + "HEICtoPDF.heic", FileMode.Open))
{
var image = FileFormat.Heic.Decoder.HeicImage.Load(fs);
var pixels = image.GetByteArray(FileFormat.Heic.Decoder.PixelFormat.Rgb24);
var width = (int)image.Width;
var height = (int)image.Height;
// Open PDF document
using (var document = new Aspose.Pdf.Document())
{
var page = document.Pages.Add();
var asposeImage = new Aspose.Pdf.Image();
asposeImage.BitmapInfo = new Aspose.Pdf.BitmapInfo(pixels, width, height, Aspose.Pdf.BitmapInfo.PixelFormat.Rgb24);
page.PageInfo.Height = height;
page.PageInfo.Width = width;
page.PageInfo.Margin.Bottom = 0;
page.PageInfo.Margin.Top = 0;
page.PageInfo.Margin.Right = 0;
page.PageInfo.Margin.Left = 0;
page.Paragraphs.Add(asposeImage);
// Save PDF document
document.Save(dataDir + "HEICtoPDF_out.pdf");
}
}
}
PDF文書をPDF/A-4形式に変換する
バージョン24.8以降、PDF文書をPDF/A-4に変換することが可能になりました。標準の第4部は、PDF 2.0に基づいており、2020年末に発表されました。
以下のコードスニペットは、入力文書が2.0よりも古いPDFバージョンである場合に文書をPDF/A-4形式に変換する方法を示しています。
private static void ConvertPdfToPdfA4()
{
// The path to the documents directory
var dataDir = RunExamples.GetDataDir_AsposePdf_DocumentConversion();
// Open PDF document
using (var document = new Aspose.Pdf.Document(dataDir + "PDFToPDFA.pdf"))
{
// If the document version is less than PDF-2.0, it must be converted to PDF-2.0
document.Convert(Stream.Null, Aspose.Pdf.PdfFormat.v_2_0, Aspose.Pdf.ConvertErrorAction.Delete);
// Convert to the PDF/A-4 format
document.Convert(dataDir + "PDFA4ConversionLog.xml", Aspose.Pdf.PdfFormat.PDF_A_4, Aspose.Pdf.ConvertErrorAction.Delete);
// Save PDF document
document.Save(dataDir + "PDFToPDFA4_out.pdf");
}
}
24.8以降、PDF文書内の透明なコンテンツをフラット化するためのメソッドが導入されました:
private static void FlattenTransparency()
{
// The path to the documents directory
var dataDir = RunExamples.GetDataDir_AsposePdf_Images();
// Open PDF document
using (var document = new Aspose.Pdf.Document(dataDir + "PdfWithTransparentImage.pdf"))
{
// Flatten image transparency
document.FlattenTransparency();
// Save PDF document
document.Save(dataDir + "PdfWithFlattenedImage.pdf");
}
}
Aspose.PDF for .NETを使用したPDF文書の比較
24.7以降、注釈マークと並べて出力を使用してPDF文書の内容を比較することが可能になりました:
最初のコードスニペットは、2つのPDF文書の最初のページを比較する方法を示しています。
private static void ComparingSpecificPagesSideBySide()
{
// The path to the documents directory
var dataDir = RunExamples.GetDataDir_AsposePdf_DocumentCompare();
// Open PDF documents
using (var document1 = new Aspose.Pdf.Document(dataDir + "ComparingSpecificPages1.pdf"))
{
using (var document2 = new Aspose.Pdf.Document(dataDir + "ComparingSpecificPages2.pdf"))
{
// Compare
Aspose.Pdf.Comparison.SideBySidePdfComparer.Compare(document1.Pages[1], document2.Pages[1],
dataDir + "ComparingSpecificPages_out.pdf", new Aspose.Pdf.Comparison.SideBySideComparisonOptions
{
AdditionalChangeMarks = true,
ComparisonMode = Aspose.Pdf.Comparison.ComparisonMode.IgnoreSpaces
});
}
}
}
2番目のコードスニペットは、2つのPDF文書の全内容を比較する範囲を拡大します。
private static void ComparingEntireDocumentsSideBySide()
{
// The path to the documents directory
var dataDir = RunExamples.GetDataDir_AsposePdf_DocumentCompare();
// Open PDF documents
using (var document1 = new Aspose.Pdf.Document(dataDir + "ComparingEntireDocuments1.pdf"))
{
using (var document2 = new Aspose.Pdf.Document(dataDir + "ComparingEntireDocuments2.pdf"))
{
// Compare
Aspose.Pdf.Comparison.SideBySidePdfComparer.Compare(
document1,
document2,
dataDir + "ComparingEntireDocuments_out.pdf",
new Aspose.Pdf.Comparison.SideBySideComparisonOptions
{
AdditionalChangeMarks = true,
ComparisonMode = Aspose.Pdf.Comparison.ComparisonMode.IgnoreSpaces
});
}
}
}
また、このリリースから、Aspose.PDF Security for .NETプラグインが追加されました:
暗号化機能:
var input = "sample.pdf";
var output = "encrypted.pdf";
var plugin = new Security();
var opt = new EncryptionOptions("123456789", "123", DocumentPrivilege.ForbidAll);
opt.AddInput(new FileDataSource(input));
opt.AddOutput(new FileDataSource(output));
plugin.Process(opt);
復号化機能:
var input = "encrypted.pdf";
var output = "decrypted.pdf";
var plugin = new Security();
var opt = new DecryptionOptions("123456789");
opt.AddInput(new FileDataSource(input));
opt.AddOutput(new FileDataSource(output));
plugin.Process(opt);
24.6リリース以降、タグ付きPDFの編集の一環として、Aspose.Pdf.LogicalStructure.Elementにメソッドが追加されました:
また、このリリースでは、低レベルの関数を使用してアクセシブルなPDFを作成することが可能になりました:
次のコードスニペットは、PDF文書とそのタグ付きコンテンツを処理するためにAspose.PDFライブラリを利用します。
private static void CreateAnAccessibleDocument()
{
// The path to the documents directory
var dataDir = RunExamples.GetDataDir_AsposePdf_QuickStart();
// Open PDF document
using (var document = new Aspose.Pdf.Document(dataDir + "tourguidev2_gb_tags.pdf"))
{
// Access tagged content
Aspose.Pdf.Tagged.ITaggedContent content = document.TaggedContent;
// Create annotation span element
Aspose.Pdf.LogicalStructure.SpanElement span = content.CreateSpanElement();
// Append span to root element
content.RootElement.AppendChild(span);
// Iterate over page contents
foreach (var op in document.Pages[1].Contents)
{
var bdc = op as Aspose.Pdf.Operators.BDC;
if (bdc != null)
{
span.Tag(bdc);
}
}
// Save PDF document
document.Save(dataDir + "AccessibleDocument_out.pdf");
}
}
24.6以降、Aspose.PDF for .NETはbase64形式のX509Certificate2を使用してPDFに署名することを許可します:
private static void SignWithBase64Certificate(string pfxFilePath, string password)
{
// The path to the documents directory
var dataDir = RunExamples.GetDataDir_AsposePdf_SecuritySignatures();
var base64Str = "Certificate in base64 format";
using (var pdfSign = new Aspose.Pdf.Facades.PdfFileSignature())
{
var sign = new Aspose.Pdf.Forms.ExternalSignature(base64Str, false);// without Private Key
sign.ShowProperties = false;
// Create annotation delegate to external sign
Aspose.Pdf.Forms.SignHash customSignHash = delegate (byte[] signableHash, Aspose.Pdf.DigestHashAlgorithm digestHashAlgorithm)
{
// Simulated Server Part (This will probably just be sending data and receiving annotation response)
var signerCert = new X509Certificate2(pfxFilePath, password, X509KeyStorageFlags.Exportable);// must have Private Key
var rsaCSP = new RSACryptoServiceProvider();
var xmlString = signerCert.PrivateKey.ToXmlString(true);
rsaCSP.FromXmlString(xmlString);
byte[] signedData = rsaCSP.SignData(signableHash, CryptoConfig.MapNameToOID("SHA1"));
return signedData;
};
sign.CustomSignHash = customSignHash;
// Bind PDF document
pdfSign.BindPdf(dataDir + "input.pdf");
// Sign the file
pdfSign.Sign(1, "second approval", "second_user@example.com", "Australia", false,
new System.Drawing.Rectangle(200, 200, 200, 100),
sign);
// Save PDF document
pdfSign.Save(dataDir + "SignWithBase64Certificate_out.pdf");
}
}
このリリースでは、PDFレイヤーを操作することが可能になりました。例えば:
24.5リリース以降、PDFを開き、最初のページの特定のレイヤーをロックし、変更を加えた文書を保存することができます。2つの新しいメソッドと1つのプロパティが追加されました:
Layer.Lock(); - レイヤーをロックします。 Layer.Unlock(); - レイヤーのロックを解除します。 Layer.Locked; - レイヤーのロック状態を示すプロパティ。
private static void LockLayerInPDF()
{
// The path to the documents directory
var dataDir = RunExamples.GetDataDir_AsposePdf_Layers();
// Open PDF document
using (var document = new Aspose.Pdf.Document(dataDir + "input.pdf"))
{
// Get the first page and the first layer
var page = document.Pages[1];
var layer = page.Layers[0];
// Lock the layer
layer.Lock();
// Save PDF document
document.Save(dataDir + "LockLayerInPDF_out.pdf");
}
}
Aspose.PDF for .NETライブラリは、最初のページから各レイヤーを抽出し、各レイヤーを別々のファイルに保存することを許可します。
レイヤーから新しいPDFを作成するには、以下のコードスニペットを使用できます:
private static void ExtractPdfLayer()
{
// The path to the documents directory
var dataDir = RunExamples.GetDataDir_AsposePdf_Forms();
// Open PDF document
using (var inputDocument = new Aspose.Pdf.Document(dataDir + "input.pdf"))
{
// Get layers from the first page
var layers = inputDocument.Pages[1].Layers;
// Save each layer to the output path
foreach (var layer in layers)
{
layer.Save(dataDir + string.Format("Layer_{0}.pdf", layer.Id));
}
}
}
Aspose.PDF for .NETライブラリはPDFを開き、最初のページの各レイヤーを反復処理し、各レイヤーをフラット化してページ上に永続化します。
private static void FlattenPdfLayers()
{
// The path to the documents directory
var dataDir = RunExamples.GetDataDir_AsposePdf_Forms();
// Open PDF document
using (var document = new Aspose.Pdf.Document(dataDir + "input.pdf"))
{
// Get the first page
var page = document.Pages[1];
// Flatten each layer on the page
foreach (var layer in page.Layers)
{
layer.Flatten(true);
}
// Save PDF document
document.Save(dataDir + "FlattenedLayersPdf_out.pdf");
}
}
‘Layer.Flatten(bool cleanupContentStream)‘メソッドは、コンテンツストリームからオプショナルコンテンツグループマーカーを削除するかどうかを指定するブールパラメータを受け取ります。cleanupContentStreamパラメータをfalseに設定すると、フラット化プロセスが高速化されます。
Aspose.PDF for .NETライブラリは、すべてのPDFレイヤーまたは最初のページの特定のレイヤーを新しいレイヤーにマージし、更新された文書を保存することを許可します。
ページ上のすべてのレイヤーをマージするために2つのメソッドが追加されました:
2番目のパラメータはオプショナルコンテンツグループマーカーの名前を変更することを許可します。デフォルト値は"oc1" (/OC /oc1 BDC)です。
private static void MergePdfLayers()
{
// The path to the documents directory
var dataDir = RunExamples.GetDataDir_AsposePdf_Forms();
// Open PDF document
using (var document = new Aspose.Pdf.Document(dataDir + "input.pdf"))
{
// Get the first page
var page = document.Pages[1];
page.MergeLayers("NewLayerName");
// Or
// page.MergeLayers("NewLayerName", "OC1");
// Save PDF document
document.Save(dataDir + "MergeLayersInPdf_out.pdf");
}
}
このリリースでは、画像にクリッピングマスクを適用することがサポートされます:
private static void AddStencilMasksToImages()
{
// The path to the documents directory
var dataDir = RunExamples.GetDataDir_AsposePdf_Images();
// Open PDF document
using (var document = new Aspose.Pdf.Document(dataDir + "AddStencilMasksToImages.pdf"))
{
// Open the first mask image file
using (var fs1 = new FileStream(dataDir + "mask1.jpg", FileMode.Open))
{
// Open the second mask image file
using (var fs2 = new FileStream(dataDir + "mask2.png", FileMode.Open))
{
// Apply stencil mask to the first image on the first page
document.Pages[1].Resources.Images[1].AddStencilMask(fs1);
// Apply stencil mask to the second image on the first page
document.Pages[1].Resources.Images[2].AddStencilMask(fs2);
}
}
// Save PDF document
document.Save(dataDir + "AddStencilMasksToImages_out.pdf");
}
}
24.4以降、印刷ダイアログでPDFページサイズによって用紙ソースを選択できるようになりました。
Aspose.PDF 24.4以降、この設定はDocument.PickTrayByPdfSizeプロパティまたはPdfContentEditorファサードを使用してオンオフできます:
private static void PickTrayByPdfSize()
{
// The path to the documents directory
var dataDir = RunExamples.GetDataDir_AsposePdfFacades_Printing();
// Create PDF document
using (var document = new Aspose.Pdf.Document())
{
// Add page
var page = document.Pages.Add();
page.Paragraphs.Add(new Aspose.Pdf.Text.TextFragment("Hello world!"));
// Set the flag to choose annotation paper tray using the PDF page size
document.PickTrayByPdfSize = true;
// Save PDF document
document.Save(dataDir + "PickTrayByPdfSize_out.pdf");
}
}
private static void PickTrayByPdfSizeFacade()
{
// The path to the documents directory
var dataDir = RunExamples.GetDataDir_AsposePdfFacades_Printing();
// Create the PdfContentEditor facade
using (var contentEditor = new Aspose.Pdf.Facades.PdfContentEditor())
{
// Bind PDF document
contentEditor.BindPdf(dataDir + "PrintDocument.pdf");
// Set the flag to choose annotation paper tray using the PDF page size
contentEditor.ChangeViewerPreference(Aspose.Pdf.Facades.ViewerPreference.PickTrayByPDFSize);
// Save PDF document
contentEditor.Save(dataDir + "PickTrayByPdfSizeFacade_out.pdf");
}
}
このリリースから、Aspose.PDF Signature for .NETプラグインが追加されました:
// create Signature
var plugin = new Signature();
// create SignOptions object to set instructions
var opt = new SignOptions(inputPfxPath, inputPfxPassword);
// add input file path
opt.AddInput(new FileDataSource(inputPath));
// set output file path
opt.AddOutput(new FileDataSource(outputPath));
// set extra options
opt.Reason = "my Reason";
opt.Contact = "my Contact";
opt.Location = "my Location";
// perform the process
plugin.Process(opt);
// create Signature
var plugin = new Signature();
// create SignOptions object to set instructions
var opt = new SignOptions(inputPfxPath, inputPfxPassword);
// add input file path with empty signature field
opt.AddInput(new FileDataSource(inputPath));
// set output file path
opt.AddOutput(new FileDataSource(outputPath));
// set name of existing signature field
opt.Name = "Signature1";
// perform the process
plugin.Process(opt);
このリリースから、PDF/A Converter for .NETプラグインが追加されました:
var options = new PdfAConvertOptions
{
PdfAVersion = PdfAStandardVersion.PDF_A_3B
};
// Add the source file
options.AddInput(new FileDataSource("path_to_your_pdf_file.pdf")); // replace with your actual file path
// Add the path to save the converted file
options.AddOutput(new FileDataSource("path_to_the_converted_file.pdf"));
// Create the plugin instance
var plugin = new PdfAConverter();
// Run the conversion
plugin.Process(options);
private static void SearchMultipleRegex()
{
// Create regular expressions
var regexes = new Regex[]
{
new Regex(@"(?s)document\s+(?:(?:no\(?s?\)?\.?)|(?:number(?:\(?s\)?)?))\s+(?:(?:[\w-]*\d[\w-]*)+(?:[,;\s]|and)*)", RegexOptions.IgnoreCase),
new Regex(@"[\s\r\n]+Tract[\s\r\n]+of:? ", RegexOptions.IgnoreCase),
new Regex(@"vested[\s\r\n]+in", RegexOptions.IgnoreCase),
new Regex("Vested in:", RegexOptions.IgnoreCase),
new Regex(@"file.?[\s\r\n]+(?:nos?|numbers?|#s?|nums?).?[\s\r\n]+(\d+)-(\d+)", RegexOptions.IgnoreCase),
new Regex(@"file.?[\s\r\n]+nos?.?:?[\s\r\n]+([\d\r\n-]+)", RegexOptions.IgnoreCase)
};
// The path to the documents directory
var dataDir = RunExamples.GetDataDir_AsposePdf_Text();
// Open PDF document
using (var document = new Aspose.Pdf.Document(dataDir + "SearchRegularExpressionAll.pdf"))
{
// Create TextAbsorber object to find all instances of the input search phrase
var absorber = new Aspose.Pdf.Text.TextFragmentAbsorber(regexes, new Aspose.Pdf.Text.TextSearchOptions(true));
document.Pages.Accept(absorber);
// Get result
var result = absorber.RegexResults;
}
}
24.3以降、PDF/Aファイルのすべてのページに空の署名フィールドを追加することが可能になりました。
private static void AddEmptySignatureFieldOnEveryPage()
{
// The path to the documents directory
var dataDir = RunExamples.GetDataDir_AsposePdf_DocumentConversion();
var fieldName = "signature_1234";
using (var document = new Aspose.Pdf.Document(dataDir + "PDFAToPDF.pdf"))
{
// The new suggested code, using SignatureField object
var signatureField = new Aspose.Pdf.Forms.SignatureField(document.Pages[1], new Aspose.Pdf.Rectangle(10, 10, 100, 100));
// Add the default appearance for the signature field
signatureField.DefaultAppearance = new Aspose.Pdf.Annotations.DefaultAppearance("Helv", 12, System.Drawing.Color.Black);
var newAddedField = document.Form.Add(signatureField, fieldName, 1);
// Find annotation associated with the field
Aspose.Pdf.Annotations.Annotation addedAnnotation = null;
foreach (Aspose.Pdf.Annotations.Annotation annotation in document.Pages[1].Annotations)
{
if (annotation.FullName == fieldName)
{
addedAnnotation = annotation;
break;
}
}
// Add the annotation to every page except the initial
if (addedAnnotation != null)
{
for (int p = 2; p <= document.Pages.Count; p++)
{
document.Pages[p].Annotations.Add(addedAnnotation);
}
}
// Save PDF document
document.Save(dataDir + "outputPdfaWithSignatureFields.pdf");
}
}
24.2以降、PDFファイルからベクターデータを取得することが可能になりました。
文書からベクターデータを取得するためにGraphicsAbsorberが実装されました:
private static void UsingGraphicsAbsorber()
{
// The path to the document directory
var dataDir = RunExamples.GetDataDir_AsposePdf_Images();
// Open the document
using (var document = new Aspose.Pdf.Document(dataDir + "DocumentWithVectorGraphics.pdf"))
{
// Create an instance of GraphicsAbsorber
using (var graphicsAbsorber = new Aspose.Pdf.Vector.GraphicsAbsorber())
{
// Select the first page of the document
var page = document.Pages[1];
// Use the `Visit` method to extract graphics from the page
graphicsAbsorber.Visit(page);
// Display information about the extracted elements
foreach (var element in graphicsAbsorber.Elements)
{
Console.WriteLine($"Page Number: {element.SourcePage.Number}");
Console.WriteLine($"Position: ({element.Position.X}, {element.Position.Y})");
Console.WriteLine($"Number of Operators: {element.Operators.Count}");
}
}
}
}
24.1リリース以降、FDF形式の注釈をPDFにインポートすることが可能になりました:
private static void ImportFDFByForm()
{
// The path to the documents directory
var dataDir = RunExamples.GetDataDir_AsposePdfFacades_Forms();
using (var form = new Aspose.Pdf.Facades.Form(dataDir + "input.pdf"))
{
// Open FDF file
using (var fdfInputStream = new FileStream(dataDir + "student.fdf", FileMode.Open))
{
form.ImportFdf(fdfInputStream);
}
// Save PDF document
form.Save(dataDir + "ImportDataFromPdf_Form_out.pdf");
}
}
また、ページ辞書または文書カタログへのアクセスをサポートしています。
DictionaryEditorのコード例は以下の通りです:
private static void AddNewKeysToPdfPageDictionary()
{
// The path to the documents directory
var dataDir = RunExamples.GetDataDir_AsposePdf_DocumentConversion();
// example of key's names
string KEY_NAME = "name";
string KEY_STRING = "str";
string KEY_BOOL = "bool";
string KEY_NUMBER = "number";
// Open the document
using (var document = new Aspose.Pdf.Document())
{
var page = document.Pages.Add();
var dictionaryEditor = new Aspose.Pdf.DataEditor.DictionaryEditor(page);
dictionaryEditor.Add(KEY_NAME, new Aspose.Pdf.DataEditor.CosPdfName("name data"));
dictionaryEditor.Add(KEY_STRING, new Aspose.Pdf.DataEditor.CosPdfString("string data"));
dictionaryEditor.Add(KEY_BOOL, new Aspose.Pdf.DataEditor.CosPdfBoolean(true));
dictionaryEditor.Add(KEY_NUMBER, new Aspose.Pdf.DataEditor.CosPdfNumber(11.2));
// Save PDF document
document.Save(dataDir + "PageDictionaryEditor_out.pdf");
}
}
private static void ModifyKeysInPdfPageDictionary()
{
// The path to the documents directory
var dataDir = RunExamples.GetDataDir_AsposePdf_DocumentConversion();
string KEY_NAME = "name";
// Open the document
using (var document = new Aspose.Pdf.Document())
{
var page = document.Pages.Add();
var dictionaryEditor = new Aspose.Pdf.DataEditor.DictionaryEditor(page);
dictionaryEditor.Add(KEY_NAME, new Aspose.Pdf.DataEditor.CosPdfName("Old data"));
// Modify existing value
dictionaryEditor[KEY_NAME] = new Aspose.Pdf.DataEditor.CosPdfName("New data");
// Save PDF document
document.Save(dataDir + "PageDictionaryEditorEdit_out.pdf");
}
}
private static void GetValuesFromPdfPageDictionary()
{
string KEY_NAME = "name";
using (var document = new Aspose.Pdf.Document())
{
var page = document.Pages.Add();
var dictionaryEditor = new Aspose.Pdf.DataEditor.DictionaryEditor(page);
dictionaryEditor[KEY_NAME] = new Aspose.Pdf.DataEditor.CosPdfName("name");
var value = dictionaryEditor[KEY_NAME];
// or
Aspose.Pdf.DataEditor.ICosPdfPrimitive primitive;
dictionaryEditor.TryGetValue(KEY_NAME, out primitive);
}
}
private static void RemoveFromPdfPageDictionary()
{
// The path to the documents directory
var dataDir = RunExamples.GetDataDir_AsposePdf_DocumentConversion();
string KEY_NAME = "name";
string EXPECTED_NAME = "name data";
using (var document = new Aspose.Pdf.Document())
{
var page = document.Pages.Add();
var dictionaryEditor = new Aspose.Pdf.DataEditor.DictionaryEditor(page);
dictionaryEditor.Add(KEY_NAME, new Aspose.Pdf.DataEditor.CosPdfName(EXPECTED_NAME));
dictionaryEditor.Remove(KEY_NAME);
// Save PDF document
document.Save(dataDir + "PageDictionaryEditorRemove_out.pdf");
}
}
Analyzing your prompt, please hold on...
An error occurred while retrieving the results. Please refresh the page and try again.