Announcements
Attention for Customers without Multi-Factor Authentication or Single Sign-On - OTP Verification rolls out April 2025. Read all about it here.

PrintToFile creates invalid pdf using "Adobe PDF" driver

Anonymous

PrintToFile creates invalid pdf using "Adobe PDF" driver

Anonymous
Not applicable

The following code works fine for "Microsoft Print to PDF" driver, but doesn't work for "Adobe PDF" driver. The "Adobe PDF" driver creates pdf documents, but they can't be opened.

 

using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
using Inventor;
using System.IO;

namespace ConsoleApp1
{
    public class Program
    {
        public static void Main(string[] args)
        {
            var inputDrawing = args[0];
            var outputDir = args[1];

            var inventorAppType = Type.GetTypeFromProgID("Inventor.Application");
            var inventor = (Application)System.Activator.CreateInstance(inventorAppType);
            if (inventor == null)
            {
                throw new ArgumentNullException(nameof(inventor));
            }

            var drawingDocument = (DrawingDocument)inventor.Documents.Open(inputDrawing);
            if (!Directory.Exists(outputDir))
            {
                Directory.CreateDirectory(outputDir);
            }

            for (var i = 1; i<= drawingDocument.Sheets.Count; i++)
            {
                var sheet = drawingDocument.Sheets[i];
                var printManager = (DrawingPrintManager)drawingDocument.PrintManager;

                printManager.PaperSize = PaperSizeEnum.kPaperSizeA3;
                printManager.ScaleMode = PrintScaleModeEnum.kPrintBestFitScale;
                printManager.Orientation = PrintOrientationEnum.kLandscapeOrientation;
                printManager.Printer = "Adobe PDF";
                //printManager.Printer = "Microsoft Print to PDF";
                printManager.PrintRange = PrintRangeEnum.kPrintSheetRange;
                printManager.SetSheetRange(i, i);

                var outputFilename = $"{System.IO.Path.GetFileNameWithoutExtension(inputDrawing)}_{i}.pdf";
                var outputPath = System.IO.Path.Combine(outputDir, outputFilename);
                printManager.PrintToFile(outputPath);

            }

            drawingDocument.Close(true);
            inventor.Quit();
        }
    }
}

  

0 Likes
Reply
388 Views
0 Replies
Replies (0)