Ana içeriğe geç

PDF4me .NET SDK: C# PDF Kütüphane ve API Müşteri

Pdf4me.Client bir .NET istemci kütüphanesi için PDF4me API Bu, 106 belge işlemini türlendirilmiş eşzamansız yöntemler olarak sunar. Şuradan yükleyin: NuGetbir tane oluştur Pdf4meClient sizinle API anahtar, ve dönüştürme, optimize etme, birleştirme, bölme, OCR veya belgelerden alıntı yapmak C# Bir render motoru göndermeden.

Paket bilgileri​

AlanDeğer
Paket adıPdf4me.Client
Mevcut sürüm2.0.0 (Son güncelleme 13.10.2026)
LisansMIT
.NET Destek.NET 8, 9 ve 10, artı .NET Standart 2.0 için .NET Çerçeve 4.6.2 ve sonrası
Toplam indirme sayısıTüm sürümlerde toplam 246,4K
Paket boyutu1,34 MB
Eylemler18 bölüm boyunca 106
Çalışma zamanı bağımlılıklarıMicrosoft.Kiota.Bundle (>= 2.1.2) ve Microsoft.Extensions.Logging.Abstractions (>= 8.0.3)
Temel URLhttps://api.pdf4me.com
Kaynakgithub.com/pdf4me/pdf4me-clientapi-dotnet
NuGetnuget.org/packages/Pdf4me.Client

Önkoşullar​

  • .NET 8 veya daha yeni, veya .NET Çerçeve 4.6.2 veya daha yenisi aracılığıyla .NET Standart 2.0.
  • A PDF4me hesap ve API anahtar.

Düzenlemek​

dotnet add package Pdf4me.Client

Kimlik doğrulama​

Ayarlarınızı yapın. API Çevredeki anahtar:

export PDF4ME_API_KEY="your-api-key"

Windows'ta, set yalnızca mevcut süre boyunca geçerlidir CMD oturum. Kullanın setx PDF4ME_API_KEY "your-api-key" Yeniden başlatma sonrasında da geçerliliğini koruyan bir değer için, işlemin bu değeri almaya devam etmesi için yeni bir terminal açın.

İstemci, anahtarı yapıcı fonksiyonunda alır. Kaydettiği hiçbir şey bu anahtarı taşımaz. API Bir anahtarın veya belgenin içeriğinin girilmesi ve boş veya yalnızca boşluk içeren bir anahtarın girilmesi hata verir. ArgumentException Herhangi bir istek gönderilmeden önce.

Hızlı başlangıç​

Bu program yükleme yapıyor. input.pdf optimizasyon için kullanılır ve sonucu kaydeder. optimized.pdf:

using Pdf4me.Client;

var apiKey = Environment.GetEnvironmentVariable("PDF4ME_API_KEY")
?? throw new InvalidOperationException("Set PDF4ME_API_KEY first.");

using var client = new Pdf4meClient(apiKey);
var result = await client.OptimizeAsync(
File.ReadAllBytes("input.pdf"), docName: "input.pdf", profile: OptimizeProfile.Max);
File.WriteAllBytes("optimized.pdf", result);

Tek bir istemci oluşturun ve her çağrı için onu yeniden kullanın. Bu, ortak bir bağlantı havuzu oluşturur, böylece her çağrı için ayrı bir istemci görüşme yapar. TLS Her seferinde. İşiniz bittiğinde atın.

PDF4me .NET SDK nedir?​

Bu tek bir NuGet paket, Pdf4me.Client, saran PDF4me API v2, tek bir sınıfın arkasında. Her işlem, üzerinde asenkron bir metottur. Pdf4meClient Uç noktasına göre adlandırıldığı için /api/v2/ConvertOcrPdf dır ConvertOcrPdfAsyncİlk parametreler, işlemin üzerinde çalışacağı şeyleri belirler ve geri kalan her şey isteğe bağlıdır, bu nedenle adıyla iletin:

var searchable = await client.ConvertOcrPdfAsync(
scan, language: "English", qualityType: QualityType.Draft);

var numbered = await client.AddPageNumberAsync(
pdf, pageNumberFormat: "Page # of {1}", alignX: AddPageNumberAlignX.Center);

O Generated Paketin içindeki ağaç, tarafından üretilmektedir. Microsoft Kiota -den PDF4me OpenAPI Açıklama bu nedenle seçenek ve sonuç modelleri tutarlıdır. REST API ve ile Python Ve JavaScript Müşteriler: Aynı işlemler, aynı adlar ve varsayılan değerlerle.

C# PDF kütüphanesi ile API istemcisi arasındaki fark nedir?​

" için en çok sonuçc# pdf "Kütüphane"ler, kendi sunucunuzda barındırılan işleme kütüphaneleridir: Paketi eklersiniz, o sizin işleminizi gerçekleştirir ve işleme motorunun sahibi siz olursunuz. Pdf4me.Client Diğer şekil ise şudur. Belgeyi şuraya gönderir: PDF4me ve tamamlanmış baytları döndürür. Bu işlem her iki yönde de gerçektir, bu yüzden açık olmakta fayda var:

Yerel kütüphane mi yoksa barındırılan kütüphane mi? APIKendi sunucunuzda barındırdığınız kütüphanePdf4me.Client
Çalışmaların gerçekleştiği yerSürecinizdeÜzerinde PDF4me hizmet
Ağ bağlantısı gereklidir.HAYIREvet, her arama
Maliyet şekliPaket lisansı, bazen geliştirici başına veya dağıtım başına olabilir.MIT müşteri, API ücretsiz veya ücretli plandaki krediler
Çevrimdışı veya fiziksel ağ bağlantısı olmadan çalışır.EvetHAYIR
Belgeler altyapınızdan ayrılıyor.HAYIREvet
OCR, AI çıkarma, ZUGFeRDGenellikle ayrı bir üründür, eğer mevcutsa.Aynı 106 eyleme dahil edilmiştir.
Siz sürdürüyorsunuz.Motor, yazı tipleri ve onun CVESBir API anahtar

Belgelerin ağınızdan dışarı çıkmaması gerektiğinde, çevrimdışı çalışmanız gerektiğinde veya belge başına maliyetin abonelikten daha uygun olduğu durumlarda yerel bir kütüphane seçin. Dönüştürme işlemlerini gerçekleştirmek için birden fazla ürünü entegre etmeniz gerektiğinde bu istemciyi tercih edin. OCRbarkodlar, e-fatura ve AI Veri çıkarma işlemi ve siz de bir render motorunu hiç göndermek veya yamalamak istemiyorsunuz.

Otomatik tamamlama özelliğinin bu kategoriyle ilgili en çok sorduğu iki sorunun burada farklı şekilde yanıtlandığına dikkat edin. İstemcinin kendisi ise... MIT lisanslı ve açık kaynaklıDolayısıyla, bağlantı verdiğiniz kod için "ücretsiz" ve "açık kaynak" kutucukları işaretlenmiştir. Bunun arkasındaki işlem, ücretsiz katmanının ötesinde ücretsiz olmayan bir barındırma hizmetidir.

Belgelerin onaylanması ve sonuçların okunması​

Belgeler alan DocumentSource: ya dosyanın baytları ya da bir dize API kendini getirir, bu da bir pdf4meblobid://<id> blob referansı veya bir https URLİkisi de örtük olarak dönüştürülür, bu nedenle ikisi de doğrudan geçirilebilir. Bir dize asla yerel dosya yolu olarak okunmaz, bu nedenle dosyayı okuyun ve baytlarını geçirin.

byte[] fromBytes = await client.OptimizeAsync(File.ReadAllBytes("report.pdf"));
byte[] fromUrl = await client.OptimizeAsync("https://example.com/report.pdf");
byte[] fromBlob = await client.OptimizeAsync("pdf4meblobid://<id>");

Sonuçlar İki şekilde geri döner. Belge üreten eylemler, belgeyi geri döndürür. byte[], Bu yüzden File.WriteAllBytes Veriyi doğrudan alır. Veriyle yanıt veren eylemler bunun yerine tür belirtilmiş bir model döndürür:

DocMetadata metadata = await client.GetPdfMetadataAsync(pdf);
Console.WriteLine($"{metadata.PageCount} pages, PDF {metadata.PdfVersion}");

ReadBarcodesRes scan = await client.ReadBarcodesAsync(pdf);
foreach (var barcode in scan.Barcodes ?? [])
Console.WriteLine($"page {barcode.Page}: {barcode.Value}");

O AI Belge ayrıştırıcısı kendi yanıt şeklini belirler, bu nedenle döndürdüğü her şey modelin içine ulaşır. AdditionalData:

var parsed = await client.AiDocumentParserAsync(File.ReadAllBytes("invoice.pdf"), "invoice parser");
foreach (var (field, value) in parsed.AdditionalData)
Console.WriteLine($"{field}: {value}");

Birkaç belge Verilen sırayla birleştirilir ve bazı işlemler, girdi metin veya başka bir şey olduğu için hiçbir belgeyi işlemez. URL:

byte[] merged = await client.MergeAsync([File.ReadAllBytes("a.pdf"), File.ReadAllBytes("b.pdf")]);
byte[] qrCode = await client.CreateBarcodeAsync("https://pdf4me.com", barcodeType: CreateBarcodeBarcodeType.QRCode);
byte[] webPage = await client.ConvertUrlToPdfAsync("https://example.com");

Nesne olan seçenekler, örneğin ConvertToPdfAction Ve ImageActionve tüm sonuç modelleri burada yaşıyor. Pdf4me.Client.Generated.ModelsBir eylemin gerçekleştirdiği enum'ların kısa adları vardır. Pdf4me.Client (QualityType, AlignX, SplitAction), oluşturulan isimleri zaten kısa olan az sayıda kişi ise (DocType, ImageTypeExtract) doğrudan oluşturulan ad alanından kullanılır:

using Pdf4me.Client;
using Pdf4me.Client.Generated.Models;

var pages = await client.CreateImagesAsync(
pdf, new ImageAction { ImageExtension = ImageExtension.Png }, pageNrs: "1");

Her eylem aynı zamanda zaman da gerektirir. üç isteğe bağlı argüman: extraSeçenekler için ek istek alanlarının sözlüğü. API Açıklamada henüz listelenmemiş, eylemin kendisiyle birlikte oldukları gibi gönderiliyorlar; maxWaitBu, söz konusu çağrının kuyruğa alınmış işinin bekleme süresini sınırlandırır; ve cancellationTokenBu işlem, isteği ve tüm yoklamaları iptal eder.

İstemci yapılandırması​

using var client = new Pdf4meClient(apiKey, new Pdf4meClientOptions
{
BaseUrl = Pdf4meClient.DefaultBaseUrl, // https://api.pdf4me.com
Timeout = TimeSpan.FromSeconds(100), // each HTTP request
MaxWait = TimeSpan.FromMinutes(5), // waiting for one queued job
Logger = loggerFactory.CreateLogger<Pdf4meClient>(),
});

İçinde ASP.NET Core veya bağımlılık enjeksiyonu kullanan herhangi bir uygulama, tüm uygulama için tek bir istemci kaydeder ve günlük kaydedicinin uygulamanın kendi günlük kaydı kurulumundan gelmesine izin verir:

builder.Services.AddSingleton(services => new Pdf4meClient(
builder.Configuration["Pdf4me:ApiKey"]!,
new Pdf4meClientOptions { Logger = services.GetRequiredService<ILogger<Pdf4meClient>>() }));

Müşteriye bir şey verin ILogger itibaren Microsoft.Extensions.Logging Her isteği, yanıtı, kuyruğa alınmış işi ve sorgulamayı görmek için Debug seviye.

C# ile uzun süren işleri ve OCR'ı nasıl yönetiyorsunuz?​

Her işlem eşzamansız bir iş olarak gönderilir. Çağrı, sunucunun hemen yanıt verip vermediğine veya işi sıraya alıp sunucunun önerdiği aralıklarla yoklama yaparak işleme koyup koymadığına bakılmaksızın tamamlanmış sonucu döndürür. Bu iki nedenden dolayı önemlidir: tek bir await Dakikalarca bloke olabilir ve beklemeyi sona erdiren şey şudur: MaxWait, Olumsuz Timeout.

  • Timeout uygulanır her biri HTTP rica etmek.
  • MaxWait uygulanır sıraya alınmış tüm iş, Ve maxWait: Bir eylem gerçekleştiğinde, bu işlem o çağrı için geçersiz kılınır.
  • O OCR eylemler, ConvertOcrPdfAsync Ve ImageExtractTextAsyncEn az 10 dakika bekleyin (DefaultOcrMaxWait), veya daha uzun süre olduğunda MaxWait daha yüksektir.
using var cancel = new CancellationTokenSource(TimeSpan.FromMinutes(20));
byte[] searchable = await client.ConvertOcrPdfAsync(
File.ReadAllBytes("scan.pdf"), language: "English",
maxWait: TimeSpan.FromMinutes(20), cancellationToken: cancel.Token);

Hatalar​

Reddedilen veya başarısız olan bir istek hata verir. Pdf4meException, itibaren Pdf4me.Client.Generated.Models:

MülkTutuyor
MessageO API'ın mesajı, aksi takdirde yanıt gövdesi 500 karakterle sınırlandırılır, aksi takdirde HTTP durum
ResponseStatusCodeO HTTP durum kodu
TraceIdO API'ın izleme kimliğini belirtin. Bir sorun bildirirken bu kimliği kullanın.
ResponseBodyGönderilen yanıt metninin tamamı
ResponseHeadersYanıt başlıkları

Bekleme süresi dolduğunda hala devam eden bir işlem hata verir. TimeoutExceptionGeçersiz argümanlar, örneğin boş bir belge, hata fırlatır. ArgumentException Herhangi bir talep gönderilmeden önce.

try
{
byte[] result = await client.OptimizeAsync(pdf);
}
catch (Pdf4meException e)
{
Console.Error.WriteLine($"PDF4me returned {e.ResponseStatusCode}: {e.Message} (trace {e.TraceId})");
}
catch (TimeoutException e)
{
Console.Error.WriteLine(e.Message);
}

18 bölüm ve toplam 106 işlem​

Eylemler, bölümlere göre gruplandırılmıştır. PDF4me REST API referansVe her bölümün yöntemleri kaynak kodda kendi dosyalarında yer alır. Birkaç tanesi ise adından tahmin edemeyeceğiniz bir bölümde bulunur: OCR "Bul" aramasında bulunur. PDF/A Oluşturma işlemi Convert'te gerçekleşiyor ve MergeV3Async içindedir PDF Birleştirme ve Bölme yerine.

BölümEylemlerYöntemler üzerine Pdf4meClient
AI Belge Çıkarma14AiDocumentParserAsync, ProcessBankChequeAsync, ProcessBankStatementAsync, ProcessContractAsync, ProcessCreditCardAsync, ProcessHealthCardAsync, ProcessInvoiceAsync, ProcessMarriageCertificateAsync, ProcessMortgageDocumentAsync, ProcessOrderAsync, ProcessPayStubAsync, ProcessReceiptAsync, ProcessShippingLabelAsync, ProcessTaxDocumentAsync
Barkod7AddBarcodeAsync, CreateBarcodeAsync, CreateSwissQrBillAsync, ReadBarcodesAsync, ReadSwissQrBillAsync, CreateEpcQrCodeAsync, ReadBarcodesFromImageAsync
Dönüştürmek13ConvertHtmlToPdfAsync, ConvertJsonToExcelAsync, ConvertMdToPdfAsync, ConvertPdfToExcelAsync, ConvertPdfToPowerpointAsync, ConvertPdfToWordAsync, ConvertToPdfAsync, ConvertUrlToPdfAsync, ConvertVisioAsync, ConvertWordToPdfFormAsync, CreatePdfAAsync, FlattenPdfAsync, LinearizePdfAsync
Düzenlemek7AddAttachmentToPdfAsync, AddHtmlHeaderFooterAsync, ImageStampAsync, AddMarginAsync, AddPageNumberAsync, StampAsync, SignPdfAsync
Excel1FindAndReplaceTextInExcelAsync
Çıkarmak8ClassifyDocumentAsync, ExtractAttachmentFromPdfAsync, ExtractPdfFormDataAsync, ExtractResourcesAsync, ExtractTableFromPdfAsync, ExtractTextByExpressionAsync, ExtractTextFromWordAsync, ParseDocumentAsync
Bul Arama2FindAndReplaceAsync, ConvertOcrPdfAsync
Formlar2AddFormFieldAsync, FillPdfFormAsync
Oluştur6EnableTrackingChangesInWordAsync, GenerateDocumentSingleAsync, GenerateDocumentMultipleAsync, GetTrackingChangesInWordAsync, ReplaceTextWithImageInWordAsync, GenerateDocumentSingleV2Async
Görüntü13AddImageWatermarkToImageAsync, AddTextWatermarkToImageAsync, CompressImageAsync, ConvertImageFormatAsync, CreateImagesAsync, CropImageAsync, FlipImageAsync, GetImageMetadataAsync, ImageExtractTextAsync, RemoveExifTagsFromImageAsync, ResizeImageAsync, RotateImageAsync, RotateImageByExifDataAsync
Birleştir ve Böl5MergeAsync, MergeOverlayAsync, SplitPdfAsync, SplitPdfByBarcodeAsync, SplitByTextAsync
Optimize1OptimizeAsync
Organize5DeleteBlankPagesAsync, DeletePagesAsync, ExtractPagesAsync, RotateAsync, RotatePageAsync
PDF16MergeV3Async, GetPdfMetadataAsync, RepairPdfAsync, CreateHyperlinkAnnotationAsync, DeleteHyperlinkAnnotationAsync, DigitalSignPdfAsync, ExtractHyperlinkAnnotationAsync, GetDocumentByTextAsync, GetTextAndCoordinatesAsync, GetTextByPositionAsync, HighlightTextAsync, PrepareForPrintAsync, ReplaceTextWithImageAsync, ResizePdfAsync, SetPdfMetadataAsync, SignDocumentAsync
PDF4me1UpdateHyperlinkAnnotationAsync
Güvenlik2ProtectAsync, UnlockAsync
Kelime2DisableTrackingChangesInWordAsync, FindAndReplaceTextInWordAsync
ZUGFeRD1CreateZugferdInvoiceAsync

Her bir eylemin parametreleri ve yanıt şekli için aşağıdaki bilgilere bakın. PDF4me REST API referansVeya düzenleyicinizde yöntemin üzerine gelin: her yöntem, dokümantasyon sayfasına karşılık gelen bir dokümantasyon özeti içerir.

1.x sürümünden geçiş yapılıyor.​

Sürüm 2.0, önceki sürümün yeniden yazılmış halidir. PDF4me API v2 ve 1.x sürümlerinden hiçbir şey çalışmaya devam etmiyor. Başlık değişiyor:

  • Konuşuyor API v2. 1.x sürümünde v1 uç noktaları olarak adlandırılanlar şunlardır: /Optimize/OptimizeByProfile; 2.0 çağrı /api/v2/....
  • Tekil müşteriler ve bölge bazlı müşteriler artık yok. Pdf4me.Instance.Init(token) Ve Pdf4me.Instance.OptimizeClient bir olmak new Pdf4meClient(apiKey) Her eylem, onun bir yöntemi olarak ele alınır.
  • Ad alanı şudur: Pdf4me.Client, Olumsuz Pdf4meClient.
  • Newtonsoft.Json artık bir bağımlılık değilve 1.x'in beraberinde getirdiği savunmasız 12.0.3 sürümü de onunla birlikte geliyor.
  • Hatalar bir türüdür. Pdf4meApiException Ve Pdf4meBackendException haline gelmek Pdf4meException.
  • .NET Framework 4.5.2 ve 4.6.1 artık desteklenmemektedir. Minimum değer 4.6.2'dir. .NET Standart 2.0.
1.x2.0
Pdf4me.Instance.Init(token)using var client = new Pdf4meClient(apiKey);
OptimizeClient.OptimizeByProfileAsync(file, profile)client.OptimizeAsync(file, profile: ...)
MergeClient.Merge2PdfsAsync(file1, file2)client.MergeAsync([file1, file2])
SplitClient.SplitByPageNrAsync(file, pageNr)client.SplitPdfAsync(file, splitActionNumber: pageNr)
ExtractClient.ExtractPagesAsync(file, pageNrs)client.ExtractPagesAsync(file, pageNumbers: pageNrs)
ConvertClient.ConvertFileToPdfAsync(file, fileName)client.ConvertToPdfAsync(file, docName: fileName)
PdfAClient.CreatePdfAAsync(file, compliance)client.CreatePdfAAsync(file, compliance: ...)
PdfAClient.RotateDocumentAsync(file, rotate)client.RotateAsync(file, rotationType: ...)
PdfAClient.ProtectDocumentAsync(file, password, perms)client.ProtectAsync(file, password: ..., pdfPermission: ...)
PdfAClient.UnlockDocumentAsync(file, password)client.UnlockAsync(file, password: ...)
PdfAClient.RepairDocumentAsync(file)client.RepairPdfAsync(file)
ImageClient.CreateThumbnailAsync(file, width, pageNr, fmt)client.CreateImagesAsync(file, new ImageAction { ... }, pageNrs: ...)

Senin API Anahtar aynı kalır. Değiştirin. using Pdf4meClient; ile using Pdf4me.Client;, eklemek using Pdf4me.Client.Generated.Models; Seçenek veya sonuç modellerini veya yakalama yöntemlerini kullandığınız her yerde Pdf4meExceptionArdından yukarıdaki tabloyu inceleyin.

Sorun giderme​

TimeoutException büyük bir belge üzerinde. İş, bekleme süresinden daha uzun sürdü, bu da şu anlama geliyor: MaxWait ve varsayılan olarak 5 dakikaya ayarlanmıştır, değil TimeoutBu konuyu görüşme sırasında gündeme getirin. maxWait: TimeSpan.FromMinutes(20)veya her arama için müşteriye.

Bir OCR Çağrı on dakika boyunca donmuş gibi görünüyor. Bu, belgelenmiş taban seviyesidir. ConvertOcrPdfAsync Ve ImageExtractTextAsync en azından bekleyin DefaultOcrMaxWaitBu da 10 dakika demek, bu yüzden onlara kendi sürelerini verin. cancellationToken Arayan kişi daha erken vazgeçmek isterse.

401 numaralı yol Pdf4meException.ResponseStatusCode. Anahtar mevcut ancak reddedildi. Onu yeniden oluşturun. PDF4me gösterge paneli ve değişkenin işlem tarafından görülebildiğini doğrulayın. Windows'ta, set Oturumlar arasında kalıcı değildir, bu nedenle şunu kullanın: setx ve yeni bir terminal açın.

ArgumentException Herhangi bir şey ağa ulaşmadan önce. Yerel kontrol başarısız oldu, çoğunlukla boş bir belge söz konusu; bu da okunan dosyanın sıfır bayt döndürdüğü anlamına gelir. Dosya yolunu ve dosyanın başka bir işlem tarafından kilitlenmediğini doğrulayın.

Dosya yolunu belirttiniz ancak dosyaya hiçbir şey olmadı. Dize argümanı, bir blob referansı veya bir https URLAsla yerel bir yol değil. Dosyayı okuyun ve baytlarını iletin.

CreateThumbnailAsync Bulunamadı. 1.x sürümlerindeki yöntem adları 2.0 sürümünde mevcut değil. Küçük resimler artık farklı. CreateImagesAsync ile bir ImageActionGöç tablosuna bakın.

Model veya enum türünde derleme hatası. Seçenek nesneleri ve sonuç modelleri şunlardır: Pdf4me.Client.Generated.ModelsBir eylemin gerçekleştirdiği çoğu numaralandırma şu şekildedir: Pdf4me.Clientİkisini de içe aktarın.

Sıkça sorulan sorular​

PDF4me .NET SDK ücretsiz mi?​

O Pdf4me.Client paket ücretsizdir ve MIT Lisanslıdır, bu nedenle kurulumu veya dağıtımı ücretsizdir. Paket, bir istemci yazılımıdır. PDF4me APIBu, ücretsiz bir katmanı ve bunun üzerinde ücretli planları olan, barındırılan bir hizmettir; dolayısıyla belge işleme kaynak tüketir. API Hesabınıza kredi yüklenir. Bağlantı kurduğunuz kodun hiçbir maliyeti yoktur; işlem ücreti hesaplanır.

PDF4me .NET istemcisi açık kaynaklı mı?​

Evet. Müşteri şu platformda yayınlanmaktadır: MIT Lisans ve kaynağı şuradadır: github.com/pdf4me/pdf4me-clientapi-dotnetKatkıda bulunmayı planlıyorsanız, dikkate almanız gereken bir uyarı var: src/Pdf4me.Client/Generated/ tarafından üretilmiştir Kiota -den OpenAPI Açıklama her yeniden oluşturmada tamamen değiştirilir, bu nedenle ağaçta yanlış olan herhangi bir şey için yama yapmak yerine bir sorun bildirin. İstemci ve etrafındaki bölüm dosyaları elle yazılmıştır ve bir çekme isteği için doğru yerdir.

Hangi .NET sürümleri Pdf4me.Client Destek?​

Sürüm 2.0.0 hedefleri .NET 8, .NET 9 ve .NET 10, artı .NET Standart 2.0, yani aynı zamanda şu platformlarda da çalışır: .NET Çerçeve 4.6.2 ve sonrası. .NET 4.5.2 ve 4.6.1 numaralı çerçeveler 1.x sürümü tarafından destekleniyordu, ancak 2.0 sürümü tarafından desteklenmemektedir.

C# kullanarak HTML'yi PDF'ye nasıl dönüştürürüm?​

Arama ConvertHtmlToPdfAsync ile HTML dosyanın baytları veya ConvertUrlToPdfAsync ile URL ve döndürülen dizeyi yazın. byte[] Diske:

byte[] fromHtml = await client.ConvertHtmlToPdfAsync(File.ReadAllBytes("page.html"));
byte[] fromUrl = await client.ConvertUrlToPdfAsync("https://example.com");
File.WriteAllBytes("page.pdf", fromUrl);

İşleme servis üzerinde gerçekleştiği için, yerel bir kütüphane ile bu işlemi yapmanın olağan maliyeti olan tarayıcı motorunu kurmaya, konteynerleştirmeye veya yamalamaya gerek yoktur.

C# kullanarak PDF dosyasını nasıl okuyabilirim?​

"Okumak" kelimesinin ne anlama geldiğine bağlı. GetPdfMetadataAsync bir döndürür DocMetadata sayfa sayısıyla birlikte PDF sürüm. ExtractTextByExpressionAsync, GetTextByPositionAsync Ve GetTextAndCoordinatesAsync Metni dışarı çekin, pozisyonları içeren sonuncusu. ExtractTableFromPdfAsync Tablo halindeki içeriği işler ve ConvertOcrPdfAsync taranmış bir şey yapar PDF Önce aranabilir olanlar. Bu işlemler, bir model yerine tür belirtilmiş modeller döndürür. byte[].

C# dilinde kütüphane kullanmadan PDF oluşturabilir miyim?​

Yazabilirsiniz PDF Byte formatını elle yazmak ve tek bir sayfa düz metin için bu makul bir uygulamadır. Ancak, yazı tipleri, kodlamalar, sıkıştırma ve çapraz referans tablosunun doğru olması gerektiğinden ve okuyucuların biçimsel hatalara ne kadar tolerans gösterdikleri değiştiğinden, bu durum hızla makul olmaktan çıkar. Pratikte seçim, gönderdiğiniz ve yamalarını güncellediğiniz yerel bir işleme kütüphanesi ile bir başka kütüphane arasında yapılır. API Bu tür istemcilerde, render işlemi sunucu tarafında gerçekleşir. PDF Teknik özellikler şu şekilde yayınlanmıştır: ISO 32000-2 Eğer boyutunu görmek istiyorsanız.

Bundan sonra nereye gideceğiz?​