0

C# アプリから印刷したい pdf ファイルがあります。プリンターが両面印刷に対応しているかどうかをコードで把握できましたが、コードから PDF を両面印刷することができました。通常のシンプレックス印刷のコードは次のとおりです。PDFの印刷ダイアログプリセットのメタデータを両面にチェックすることができました。しかし、それは機能しません。

            string verbToUse = "PrintTo";
            startInfo.Verb = verbToUse;
            startInfo.Arguments = workCenterPrinterName.Value.ToString();
            Process p = Process.Start(startInfo);
            p.WaitForExit(5000);//random time after which process will be killed
            if (p.HasExited == false)
            {
                p.Kill();
            }
4

2 に答える 2

0

多くの調査の後、私はこのコードを書きました。これは対処のきちんとしたコピーです。私は多くの研究を書き、いじることができました。より良い解決策を見つけることができず、自分の作品を投稿して他の人を助けることができませんでした。複数ページの tiff ファイルを印刷していますが、このコードは PDF でも機能します

using( Image img = Image.FromFile(@"c:\temp\testfile1.tif") ) {
printDocument.DocumentName = controlNumber;
printDocument.DefaultPageSettings.Margins = new Margins( 15, 0, 0, 0 );
printDocument.OriginAtMargins = true;
printDocument.PrinterSettings.PrinterName = request_printer;
printDocument.PrinterSettings.Duplex = Duplex.Default;
FrameDimension frames = new FrameDimension( img.FrameDimensionsList[ 0 ] );
int pages = img.GetFrameCount( frames );
if( printDocument.PrinterSettings.IsValid ) {
    try {
        printDocument.PrinterSettings.Duplex = Duplex.Default;
        int page = 0;
        printDocument.PrintPage += ( sender, e ) => {
                    img.SelectActiveFrame( frames, page );
                    Bitmap bmp = new Bitmap( img );
                    pictureBox.Image = bmp;
                    pictureBox.SizeMode = PictureBoxSizeMode.StretchImage;
                    printDocument.DefaultPageSettings.Landscape = false;
                    if( bmp.Width > bmp.Height ) {
                         printDocument.DefaultPageSettings.Landscape = true;
                    }

                    if( printDocument.PrinterSettings.IsValid ) {
                         if( e.PageSettings.PrinterSettings.CanDuplex ) {
                                e.PageSettings.PrinterSettings.Duplex = Duplex.Default;
                         }
                         e.Graphics.DrawImage( img, 0, 0 );
                         e.HasMorePages = page < 1;
                    }
             page++;
        };
        printDocument.Print();
        } catch (Exception ex) { }      
}
于 2014-03-04T15:26:06.443 に答える