O projeto pdftoprinter permite imprimir arquivos pdf usa pdftoprinter util. O pacote contém pdftoprinter_m.exe e copia -o para a pasta de saída antes do evento de construção. Também fornece a classe PDFTOPRINTERPRINTER que executa PDFTOPRIRINT_M.EXE dentro de um método "print" em um processo separado com tempo limite padrão 1 minuto (o tempo limite pode ser anulado pelo terceiro argumento). O método "Print" executa a nova instância do PDFTOPRINTR_M.EXE por chamada. Por padrão, a nova impressão não será iniciada, enquanto a anterior da mesma instância do PDFTOprInterprint não estiver concluída. Mas você pode usar o nível de concorrência definido usando o construtor com argumentos.
Nota: O nível de simultaneidade funciona dentro da instância do PDFTOprInterprint.
Uso de amostra:
Use impressora local
var filePath = @"c:pathtopdffile.pdf" ;
var printerName = "Vendor Color Printer Name" ;
var printer = new PDFtoPrinterPrinter ( ) ;
printer . Print ( new PrintingOptions ( printerName , filePath ) ) ;Use impressora de rede com tempo limite
var filePath = @"c:pathtopdffile.pdf" ;
var networkPrinterName = @"\myprintserverprinter1" ;
var printTimeout = new TimeSpan ( 0 , 30 , 0 ) ;
var printer = new PDFtoPrinterPrinter ( ) ;
printer . Print ( new PrintingOptions ( networkPrinterName , filePath ) , printTimeout ) ;Use impressora de rede com 5 impressão de simultaneidade. Nesse caso, até 5 instâncias de pdftoprinter_m.exe serão iniciadas simultaneamente
var filePath = @"c:pathtopdffile.pdf" ;
var networkPrinterName = @"\myprintserverprinter1" ;
var allowedCocurrentPrintings = 5 ;
var printer = new PDFtoPrinterPrinter ( allowedCocurrentPrintings ) ;
for ( var i = 0 ; i < 10 ; i ++ )
{
wrapper . Print ( new PrintingOptions ( networkPrinterName , filePath ) ) ;
}Se você precisar excluir arquivos após a impressão, poderá usar "CleanupFilesPrinter":
var filePath = @"c:pathtopdffile.pdf" ;
var networkPrinterName = @"\myprintserverprinter1" ;
var printer = new CleanupFilesPrinter ( new PDFtoPrinterPrinter ( ) ) ;
printer . Print ( new PrintingOptions ( networkPrinterName , filePath ) ) ; O pacote pdftoprinter está disponível apenas em máquinas Windows. Se um aplicativo faz referência à estrutura do Net5.0 e, posteriormente, será necessário alterar o "TargetFramework" para Net [versão] .0-Windows em um arquivo CSPROJ . Por exemplo
<Project Sdk="Microsoft.NET.Sdk.Web">
<PropertyGroup>
<TargetFramework>net7.0-windows</TargetFramework>
</PropertyGroup>
</Project>