Hallo,
ich hab folgendes Problem: Es sollen verschiedene PDF-Dokumente über einen eigenen, gegenüber dem Acrobat Reader eingeschränkten, PDF-Viewer angezeigt werden. Mit dem von Adobe mitgelieferten OCX-Control soweit erstmal machbar.
Jetzt sollen diese PDF-Dokumente aber beim drucken mit einem Stempel versehen werden.
Weiß irgendjemand ob und wie so etwas zu verwirklichen ist?
Ich hab versucht das PDF-Dokument in ein Bitmap zu kopieren, es dann eventuell zu patchen, aber der Ausdruck des Bitmaps war viel zu pixelig und ungenau (Einige Dokumente sind techn. Zeichnungen).
Bin über jede Hilfe dankbar.
Gruß
Michael
Prozedure PDF -> BMP:
<PRE>
procedure GetPDFThumb(const sFileName: WideString; nWidth, nHeight: Integer; var Bitmap: TBitmap);
var
PDRect,
PDDoc,
PDPage: Variant;
begin
if Bitmap = nil then
Exit;
PDDoc := CreateOleObject('AcroExch.PDDoc');
PDRect := CreateOleObject('AcroExch.Rect');
try
PDDoc.Open(sFileName);
PDPage := PDDoc.AcquirePage(0); //Get the first Page
PDRect.Top := 0;
PDRect.Left := 0;
PDRect.Right := PDPage.GetSize.x;
PDRect.Bottom := PDPage.GetSize.y;
Bitmap.Width := PDRect.Right;
Bitmap.Height := PDRect.Bottom;
//Move to the ClipBoard
PDPage.CopyToClipboard(PDRect, 0, 0, 100);
Bitmap.LoadFromClipboardFormat(cf_BitMap, ClipBoard.GetAsHandle(cf_Bitmap), 0);
//Resize
//Bitmap.Canvas.StretchDraw(Rect(0, 0, nWidth, nHeight), Bitmap);
//Bitmap.Width := nWidth;
//Bitmap.Height := nHeight;
//Originalgröße
Bitmap.Canvas.Draw(0,0,Bitmap);
Bitmap.Width := PDRect.Right - PDRect.Left;
Bitmap.Height := PDRect.Bottom - PDRect.Top;
except
end;
VarClear(PDRect);
VarClear(PDDoc);
end;
</PRE>
ich hab folgendes Problem: Es sollen verschiedene PDF-Dokumente über einen eigenen, gegenüber dem Acrobat Reader eingeschränkten, PDF-Viewer angezeigt werden. Mit dem von Adobe mitgelieferten OCX-Control soweit erstmal machbar.
Jetzt sollen diese PDF-Dokumente aber beim drucken mit einem Stempel versehen werden.
Weiß irgendjemand ob und wie so etwas zu verwirklichen ist?
Ich hab versucht das PDF-Dokument in ein Bitmap zu kopieren, es dann eventuell zu patchen, aber der Ausdruck des Bitmaps war viel zu pixelig und ungenau (Einige Dokumente sind techn. Zeichnungen).
Bin über jede Hilfe dankbar.
Gruß
Michael
Prozedure PDF -> BMP:
<PRE>
procedure GetPDFThumb(const sFileName: WideString; nWidth, nHeight: Integer; var Bitmap: TBitmap);
var
PDRect,
PDDoc,
PDPage: Variant;
begin
if Bitmap = nil then
Exit;
PDDoc := CreateOleObject('AcroExch.PDDoc');
PDRect := CreateOleObject('AcroExch.Rect');
try
PDDoc.Open(sFileName);
PDPage := PDDoc.AcquirePage(0); //Get the first Page
PDRect.Top := 0;
PDRect.Left := 0;
PDRect.Right := PDPage.GetSize.x;
PDRect.Bottom := PDPage.GetSize.y;
Bitmap.Width := PDRect.Right;
Bitmap.Height := PDRect.Bottom;
//Move to the ClipBoard
PDPage.CopyToClipboard(PDRect, 0, 0, 100);
Bitmap.LoadFromClipboardFormat(cf_BitMap, ClipBoard.GetAsHandle(cf_Bitmap), 0);
//Resize
//Bitmap.Canvas.StretchDraw(Rect(0, 0, nWidth, nHeight), Bitmap);
//Bitmap.Width := nWidth;
//Bitmap.Height := nHeight;
//Originalgröße
Bitmap.Canvas.Draw(0,0,Bitmap);
Bitmap.Width := PDRect.Right - PDRect.Left;
Bitmap.Height := PDRect.Bottom - PDRect.Top;
except
end;
VarClear(PDRect);
VarClear(PDDoc);
end;
</PRE>