Обрезать или обрезать раздел из PDF, используя C#. Net и Ghostscript - PullRequest
0 голосов
/ 17 января 2020

Я пытаюсь взять в PDF-файл, который имеет в центре векторную графику c, однако он содержит текст и другие логотипы вокруг страницы, которые мне не нужны. Мне нужно извлечь только векторную часть файла, так что ниже того, что я смог сделать, это создать CropBox и затем преобразовать поле кропа в растровое изображение.

Это приводит к извлечению графика c только в центре страницы, но недостатком является то, что это растровое изображение. После того, как я создаю PDF-файл, используя рамку для обрезки, если я открываю его в windows, он показывает только то, что мне нужно, однако, когда я затем импортирую его в CorelDraw или Adobe Illustrator, он все еще содержит все остальные данные, и, как я узнаю, в рамке для обрезания просто скрывается все else.

Итак, вопрос в том, как я могу go сделать это с помощью ghostscript или аналогичной бесплатной библиотеки c#, чтобы превратить мою секцию PDF с рамкой для обрезки в новый pdf с только этими данными?

 private string CropPDFToBitmap()
    {
        try
        {

            CheckOutputPathExists(); 

            string gsPath = @"C:\Program Files (x86)\gs\gs9.50\bin\gswin32c";
            string argo = $"-o {this.BaseFileLocation}\\cropped\\{RemoveExtension(TargetFileName)}.pdf -sDEVICE=pdfwrite -c \"[/CropBox[281 197 531 447]\" -c \" /PAGES pdfmark\" -f {this.BaseFileLocation}\\{RemoveExtension(TargetFileName)}.pdf";
            string ProductionFile = $"{ this.BaseFileLocation}\\bitmaps\\{RemoveExtension(TargetFileName)}.bmp";
            string bitmapArg = $" -dUseCropBox -dNOPAUSE -sDEVICE=bmp256 -r600 -o {ProductionFile} {this.BaseFileLocation}\\cropped\\{RemoveExtension(TargetFileName)}.pdf";
            // " -dUseCropBox -dNOPAUSE -sDEVICE=bmp256 -r600 -o C:\\final.bmp  C:\\cropped.pdf"
            //{this.BaseFileLocation}\cropped\{RemoveExtension(TargetFileName)}.pdf

            var cropProcess =  Process.Start(gsPath, argo);
            cropProcess.WaitForExit();
            var bitmapProcess = Process.Start(gsPath, bitmapArg);
            bitmapProcess.WaitForExit();


            return ProductionFile;
        }
        catch (Exception ex)
        {
            Debug.WriteLine("Failed {0}", ex.Message);
            throw new Exception(ex.Message);
        }
    }

1 Ответ

0 голосов
/ 20 января 2020

См. Мой ответ здесь:

Может ли ghostscript. net разделить файл PDF на несколько разделов?

CropBox в файле PDF, как вы заметили, только директива относительно того, какие части содержимого отображать по умолчанию. Если вы действительно хотите удалить контент, то вам нужно сделать что-то вроде подхода в этом ответе.

...