全國最多中醫師線上諮詢網站-台灣中醫網
發文 回覆 瀏覽次數:2795
推到 Plurk!
推到 Facebook!

請問如何寫PDF檔案

尚未結案
whatman
一般會員


發表:3
回覆:10
積分:2
註冊:2002-04-15

發送簡訊給我
#1 引用回覆 回覆 發表時間:2004-12-28 18:53:05 IP:61.63.xxx.xxx 未訂閱
小弟目前需要直接將資料輸出成PDF檔案,不要透過報表去轉 在站上搜尋以後找到了需要將一個OCX Import進來 但是沒有看到相關的用法 在其他的討論區是有找到一些相關的 但是都是要安裝其他的元件 我有去註冊成為Acrobat的會員 但是他所提供的SDK跟Sample的部份還是沒有辦法下載 不知道有沒有大大知道要如何寫PDF的檔案 或是哪裡有Sample可以參考的 非常感謝
StrongLemon
高階會員


發表:10
回覆:166
積分:105
註冊:2004-04-18

發送簡訊給我
#2 引用回覆 回覆 發表時間:2004-12-29 02:44:42 IP:211.74.xxx.xxx 未訂閱
您好:    我推薦你去以下網址 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.twhttp://sourceforge.net/搜尋吧..
whatman
一般會員


發表:3
回覆:10
積分:2
註冊:2002-04-15

發送簡訊給我
#3 引用回覆 回覆 發表時間:2004-12-29 09:24:46 IP:61.63.xxx.xxx 未訂閱
感謝您提供的資訊 因為這是個商業用途的專案 所以希望避免使用其他的元件 造成版權上的問題,及發布上的問題 因此才會想要使用Acrobat所提供的ocx來處理 小弟會在繼續找看看其他的資料 再次感謝您提供的資料
chengyilee
一般會員


發表:0
回覆:3
積分:0
註冊:2005-01-14

發送簡訊給我
#4 引用回覆 回覆 發表時間:2005-01-14 10:34:53 IP:220.130.xxx.xxx 未訂閱
測了一下,不知對你有沒有幫助. --------------------------------------------------------------- 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

發送簡訊給我
#5 引用回覆 回覆 發表時間:2005-01-14 16:56:19 IP:61.63.xxx.xxx 未訂閱
感謝您的幫助,小弟會在測試看看 小弟稍微看了一下您給的範例 發現小弟需要的部份好像沒有 小弟手上在處理的報表都要產生在WORD或EXCEL上,目前還需要產生到PDF中 這些報表都有固定格式(需要畫一些表格) 還有一些顯示上的需要,需要塞一些其他OLEObject到PDF中 不知道這兩個部份能否請chengyilee大大提供一下這個部份要如何處理 再次感謝您的幫助
chengyilee
一般會員


發表:0
回覆:3
積分:0
註冊:2005-01-14

發送簡訊給我
#6 引用回覆 回覆 發表時間:2005-01-16 02:25:01 IP:61.66.xxx.xxx 未訂閱
引言: 感謝您的幫助,小弟會在測試看看 小弟稍微看了一下您給的範例 發現小弟需要的部份好像沒有 小弟手上在處理的報表都要產生在WORD或EXCEL上,目前還需要產生到PDF中 這些報表都有固定格式(需要畫一些表格) 還有一些顯示上的需要,需要塞一些其他OLEObject到PDF中 不知道這兩個部份能否請chengyilee大大提供一下這個部份要如何處理 再次感謝您的幫助
山不轉路轉,可以考慮用Crystal report 產生你所需要的表格後再利用Crystal report 轉成 PDF 檔.效果還滿不錯的. chengyi
------
chengyi
chengyilee
一般會員


發表:0
回覆:3
積分:0
註冊:2005-01-14

發送簡訊給我
#7 引用回覆 回覆 發表時間:2005-01-16 13:48:46 IP:61.66.xxx.xxx 未訂閱
抱歉,沒幫上忙,有進一歩消息希望也讓我瞭解一下. 不過如果你要在上面畫表格,好像挺麻煩的, 如果有其它工具(Crystal)輔助你完成,你可以考慮一下. chengyi
------
chengyi
系統時間:2024-06-20 19:52:28
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!