PDFから画像ファイルを作成(GhostScriptLiteを使用)
複数ページ対応する為に、tiff形式にしました。
pdfを一旦、画像ファイル(tiff)に変換後
画像下部を白抜き編集した後に、再度pdfを作成しました。
pdfから画像を作成するのは、GhostScriptLiteを使用 Ver9.0
画像の編集は、PdfSharpを使用しました。
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.IO;
using PdfSharp;
using PdfSharp.Pdf;
using PdfSharp.Pdf.IO;
using PdfSharp.Drawing;
using System.Drawing;
using System.Drawing.Imaging;
namespace PDF得意先発注Clear
{
class Program
{
static void Main(string[] args)
{
if (args.Length == 0)
{
Console.WriteLine("コマンドライン引数はありません。");
return;
}
String vTempFile = args[0] + "_.bmp";
// ファイルを削除する
if (System.IO.File.Exists(vTempFile))
{
try { File.Delete(vTempFile); }
catch { };
}
if (System.IO.File.Exists(vTempFile))
{
try { File.Delete(vTempFile); }
catch { };
}
//PDFを画像に変換 PDFConvertはPDFtoImage.csにある
PDFConvert converter = new PDFConvert();
bool Converted = false;
//Setup the converter
converter.RenderingThreads = -1;
converter.TextAlphaBit = -1;
converter.OutputToMultipleFile = false;
converter.FirstPageToConvert = -1;
converter.LastPageToConvert = -1;
converter.FitPage = false;
converter.JPEGQuality = 100; //100は圧縮しない
//converter.OutputFormat = "jpeg";
converter.OutputFormat = "tifflzw";
Converted = converter.Convert(args[0].ToString(), vTempFile);
// Open the output document
PdfDocument outputDocument = new PdfDocument();
//複数ページに対応 2011/03/23
//画像の読み取り
var ReadImage = Image.FromFile(vTempFile);
//ディメンジョンリストを作成する
Guid[] DimensionList = ReadImage.FrameDimensionsList;
//ディメンジョンが続く限りループ
foreach(Guid dimens in DimensionList )
{
//フレームディメンジョンを作成し
var fd = new FrameDimension(dimens);
//ページ数を取得する
int Pages = ReadImage.GetFrameCount(fd);
//全頁処理対象
for (int frameIndex = 0; frameIndex < Pages; frameIndex++)
{
//アクティブフレームを切り替える
ReadImage.SelectActiveFrame(fd, frameIndex);
//新しいビットマップにコピーする
var img = new Bitmap(ReadImage);
img.SetResolution(ReadImage.HorizontalResolution, ReadImage.VerticalResolution);
//ページ追加
PdfPage page = outputDocument.AddPage();
using (XImage image = XImage.FromGdiPlusImage(img))
{
page.Width = image.PointWidth;
page.Height = image.PointHeight;
using (XGraphics gfx = XGraphics.FromPdfPage(page))
{
gfx.DrawImage(image, 0, 0);
var options = new XPdfFontOptions(PdfFontEmbedding.Always);
XPen pen = new XPen(XColors.White, Math.PI);
gfx.DrawRectangle(pen, XBrushes.White, 360, 640, 600, 870);
gfx.DrawRectangle(pen, XBrushes.White, 0, 720, 600, 870);
}
}
}
}
outputDocument.Save(args[0]);
ReadImage.Dispose();
//元ファイルを削除
File.Delete(vTempFile);
}
}
}
0 件のコメント:
コメントを投稿