請問如何寫PDF檔案 |
尚未結案
|
whatman
一般會員 ![]() ![]() 發表:3 回覆:10 積分:2 註冊:2002-04-15 發送簡訊給我 |
|
StrongLemon
高階會員 ![]() ![]() ![]() ![]() 發表:10 回覆:166 積分:105 註冊:2004-04-18 發送簡訊給我 |
您好: 我推薦你去以下網址
http://sourceforge.net/projects/delphidoc/
下載他的Source,
裡面有Source\Generator
UPDFWriter.pas
UPDFDoc.pas
然後整份可以Build起來,你就可以Trace看看流程。
至於整個PDF結構,你還是得去下載SDK..
不過我的建議是好多頁..光檔案結構就看到頭昏了.. 另一個選擇用別人寫好的元件,不過目前中文這部分似乎都沒有支援到。
http://www.est.hi-ho.ne.jp/takeshi_kanno/powerpdf/ 多用www.google.com.tw跟http://sourceforge.net/搜尋吧..
|
whatman
一般會員 ![]() ![]() 發表:3 回覆:10 積分:2 註冊:2002-04-15 發送簡訊給我 |
|
chengyilee
一般會員 ![]() ![]() 發表:0 回覆:3 積分:0 註冊:2005-01-14 發送簡訊給我 |
測了一下,不知對你有沒有幫助.
---------------------------------------------------------------
var AcroApp,AVDoc,PDDoc,field,acroForm,formApp,rect : variant;
PageNum:integer;
arrexp:array[1..2] of string;
begin
try
AcroApp := CreateOleObject('AcroExch.App');
AVDoc := CreateOleObject('AcroExch.AVDoc');
PDDoc := CreateOleObject('AcroExch.PDDoc');
formApp :=CreateOleObject('AFormAut.App');
AVDoc.Open('d:\sa.pdf', 'PDF title');
AVDoc := AcroApp.GetActiveDoc;
if AVDoc.IsValid then begin
PDDoc := AVDoc.GetPDDoc;
//PDDoc.SetInfo ('Title', '');
//PDDoc.SetInfo ('Author', '');
//PDDoc.SetInfo ('Subject', '');
//PDDoc.SetInfo ('Keywords', '');
//result := PDDoc.Save(1 or 4 or 32, PDFFilename);
//PDDoc.Close;
end;
// PDDoc := AVDoc.GetPDDoc;
// Get associated PDDoc
acroForm := formApp.Fields;
rect := CreateOleObject('AcroExch.Rect');
//Set values for rect - increases from right to left and bottom to top
rect.Left := 200;
rect.Right := 400;
rect.Bottom := 200;
rect.Top := 400; //field := acroForm.AddNewAnnot(-1, 'Text', rect);
//If (field.IsValid) Then
// field.SetTitle('Brand New Text Annotation');
// field.SetOpen(True);
// field.SetContents('This is an annotation of type Text');
//field := acroForm.Add('aaName', 'signature', 0, 100, 300, 400, 625);
// field.SetBorderColor('RGB',0.7, 0.5, 0.3, 0);
//field.TextSize :='12';
//field.DefaultValue := 'dere';
field := acroForm.Add('Submit Button', 'button', 0, 100, 50, 150,100);
field.BorderStyle := 'beveled';
field.SetButtonCaption('N', 'Submit');
field.SetBackgroundColor('G', 0.85, 0.85, 0, 0);
field.Highlight := 'push';
field := acroForm.Add('Name', 'text', 0, 100, 650, 450, 675);
//field.SetBorderColor('RGB',0.7, 0.5, 0.3, 0);
field.TextSize :='12';
//field.textfont:='新細明體';
field.TextFont := 'Times-Roman';
field.DefaultValue := 'Enter your full name here';
field.value:='PH01001';
field.isreadonly:=true;
field := acroForm.Add('Creation Date', 'text', 0, 375, 680, 450, 715);
field.SetBorderColor ('RGB', 0.7, 0.5, 0.3, 0);
field.TextSize := '12';
field.DefaultValue := '2000/01/01';
field.SetJavaScriptAction('keystroke', 'AFDate_KeystrokeEx(''yyyy/mm/dd'');');
field.SetJavaScriptAction('format', 'AFDate_FormatEx(''yyyy/mm/dd'');');
field := acroForm.Add('State', 'text', 0, 350, 590, 375, 615) ;
field.SetBorderColor('RGB', 0.7, 0.5, 0.3, 0);
field.TextSize := '12';
field.DefaultValue := 'CA';
field := acroForm.Add('Radio','radiobutton', 0, 150, 500, 165, 515);
field.SetBorderColor('RGB', 0.75, 0.55, 0.35, 0);
AcroApp.Show; //AcroApp.Hide;
// 決定是否顯示 Acrobat View
PageNum := PDDoc.GetNumPages;
// Get PDF total pages
// field := AcroApp.Add('Name', 'text', 0, 100, 650, 450, 675);
//field.ADD('Name', 'text', 0, 100, 650, 450, 675);
//field.SetBorderColor('RGB',0.7, 0.5, 0.3, 0);
//field.TextSize :='12';
//field.DefaultValue := 'Enter your full name here';
//AVDoc.PrintPagesSilent(0, PageNum, 0, 0, 0);
//showmessage('ok');
//AcroApp.MenuItemExecute('Edit');
//AcroApp.MenuItemExecute('SelectAll');
//AcroApp.MenuItemExecute('Edit');
//AcroApp.MenuItemExecute('Copy');
finally
PDDoc.Save(1, 'd:\tt.pdf');
PDDoc.Close;
AVDoc.Close(true); //If PDDoc & AVDoc are constructed the same file,
//Close PDDoc will destroy both.
//formApp.close;
AcroApp.exit;
end; chengyi
------
chengyi |
whatman
一般會員 ![]() ![]() 發表:3 回覆:10 積分:2 註冊:2002-04-15 發送簡訊給我 |
|
chengyilee
一般會員 ![]() ![]() 發表:0 回覆:3 積分:0 註冊:2005-01-14 發送簡訊給我 |
引言: 感謝您的幫助,小弟會在測試看看 小弟稍微看了一下您給的範例 發現小弟需要的部份好像沒有 小弟手上在處理的報表都要產生在WORD或EXCEL上,目前還需要產生到PDF中 這些報表都有固定格式(需要畫一些表格) 還有一些顯示上的需要,需要塞一些其他OLEObject到PDF中 不知道這兩個部份能否請chengyilee大大提供一下這個部份要如何處理 再次感謝您的幫助山不轉路轉,可以考慮用Crystal report 產生你所需要的表格後再利用Crystal report 轉成 PDF 檔.效果還滿不錯的. chengyi
------
chengyi |
chengyilee
一般會員 ![]() ![]() 發表:0 回覆:3 積分:0 註冊:2005-01-14 發送簡訊給我 |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |