便攜式文檔格式文件預覽操作的制作方法
【專利摘要】一種用于操作數字文件的方法,包括下述步驟:處理來自遠程服務器的文檔的所有頁面、以生成用于圖像的在線顯示的頁面圖像,在經由網絡連接至遠程服務器的本地計算機上顯示文檔的頁面圖像的預覽,暫時保存用戶修改的信息,根據用戶修改只改變本地計算機上的頁面圖像的預覽而不修改遠程服務器上的文檔本身,以及如果修改被確認,那么檢索所保存的用戶修改的信息并且根據用戶修改來修改文檔。
【專利說明】便攜式文檔格式文件預覽操作
【技術領域】
[0001]本發明涉及操作數字文件的方法,并且特別地涉及操作便攜式文檔格式(PDF)文件的預覽。
【背景技術】
[0002]現今大量的數字文件被在線傳送和在線處理。例如,運營“網絡存儲”服務器的在線文件管理和分布服務供應商可以接收由已經登錄到網絡存儲服務器上的用戶上傳的TOF形式的文檔,即PDF文件。網絡存儲服務器通常為用戶提供網絡瀏覽器來在線預覽PDF文件,以用于驗證和操作的目的。
[0003]為了做到這一點,網絡存儲服務器需要首先將文檔的PDF頁面處理成圖像如標簽圖像文件格式(TIFF)圖像或聯合圖像專家組(JPEG)圖像。然后網絡存儲服務器生成文檔的原始頁面圖像的縮略圖圖像,并且在網絡瀏覽器上顯示該縮略圖。當用戶在網絡瀏覽器上瀏覽這些縮略圖時,允許用戶修改文檔,例如旋轉頁面、裁剪頁面、刪除頁面、合并頁面坐寸ο
[0004]當用戶滿意對TOF文件做的修改時,用戶可以提交文件以用于由網絡存儲進行進一步處理,例如,將文件存儲在數據庫中或以硬拷貝的形式打印文件。
[0005]通常在用戶在網絡瀏覽器上預覽縮略圖的情況下對文檔的某些頁面進行修改時,網絡存儲服務器將使用對文檔的這些頁面做出的改變重新處理原來的PDF文檔。例如,如果文檔的頁面被旋轉,那么服務器將使用旋轉后的頁面重新處理PDF文件,然后重新生成旋轉后的頁面的圖像。
[0006]需要一種簡單且實用的解決方案,其可以提供對由用戶在線上傳至網絡服務器的PDF文件的預覽進行操作的新方法,其中用戶可以在提交文件以用于進一步處理之前做出修改。
【發明內容】
[0007]上面提及的傳統在線PDF頁面預覽處理的一個問題在于其總是引起繁重的服務器負荷,這是因為每次用戶對文檔做出修改,服務器都需要重新處理PDF文件并且重新生成用于向用戶顯示所修改的文檔的頁面圖像和縮略圖。
[0008]此外,用戶在預覽對文檔做出的修改后常常改變想法。例如,當用戶裁剪頁面時,服務器需要對裁剪重新處理PDF文件,并且重新生成所裁剪的頁面的圖像和縮略圖以用于在網絡瀏覽器上將其顯示給用戶。然而,在預覽所裁剪的頁面后,用戶可能決定不裁剪頁面,服務器需要再次重新處理沒有裁剪過的PDF文件,并且重新生成未裁剪的頁面的圖像和縮略圖、以用于在網絡瀏覽器上將其顯示給用戶。作為結果,以裁剪的頁面對PDF文件的第一次再處理完全浪費了。這進一步增加了服務器的開銷。
[0009]本發明的實施方式涉及一種在數字文件被在線上傳至網絡服務器后對數字文件的預覽進行操作的新方法,以減少服務器處理負荷及開銷的使用和浪費。
[0010]本發明的一些實施方式提供了用于在用戶將PDF格式的文檔在線上傳至網絡服務器后對PDF文件的預覽進行操作的方法,其中用戶對所上傳的文件的文檔的頁面做出的修改僅針對在網絡瀏覽器上預覽的文檔頁面的縮略圖而作出,而不是針對文檔本身作出,直到用戶確認了該修改,以減少服務器處理負荷及開銷的使用和浪費。
[0011]本發明的一些實施方式還提供了用于在用戶將PDF格式的文檔在線上傳至網絡服務器后對PDF文件的預覽進行操作的方法,其中,在文檔頁面的縮略圖中立即顯示用戶對所上傳的文件的文檔的頁面做出的修改,使得用戶在對文檔本身做出任何修改之前能夠確認所做的改變或者做出進一步改變,這同樣為了減少服務器處理負荷和開銷的使用和浪費。
[0012]本發明的一些實施方式另外提供了用于在用戶將PDF格式的文檔在線上傳至網絡服務器后對PDF文件的預覽進行操作的方法,其中,只保存用戶對所上傳的文件的文檔的頁面做出的修改的信息,然而不對文檔本身作出任何改變、或者保存或處理對文檔的任何改變,直到用戶確認修改為止,從而進一步地減少服務器處理負荷及開銷的使用和浪費。
[0013]本發明的一些實施方式還提供了用于在用戶將PDF格式的文檔在線上傳至網絡服務器后對PDF文件的預覽進行操作的方法,其中,保存并且可以檢索用戶對所上傳的文件的文檔的頁面做出的修改的信息,以便用戶可以返回至可能在修改處理中被丟棄的更早的修改,而不針對修改的任何中間步驟重新處理文檔本身,這也是為了減少服務器處理負荷和開銷的使用和浪費。
[0014]將在下面的描述中闡述本發明的其他特征和優點,并且從該描述中將部分地清楚本發明的該其他特征和優點,或可通過實踐本發明來學習該其他特征和優點。將通過本發明的書面描述和權利要求以及附圖特別指出的結構來實現并獲得本發明的目標及其他優點。
[0015]為了實現這些和/或其他目標,如具體實施和廣泛描述的那樣,本發明的一個示例性實施方式提供了用于對上傳至或提供至網絡服務器以進行進一步處理的數字文件進行操作的方法。根據本發明的這個示例性實施方式,數字文件操作處理包括下述步驟:處理來自遠程服務器的文檔的所有頁面以生成用于圖像的在線顯示的頁面圖像;在經由網絡連接至遠程服務器的本地計算機上顯示文檔的頁面圖像的預覽;暫時保存用戶修改的信息;根據用戶修改只改變本地計算機上的頁面圖像的預覽而不修改遠程服務器上的文檔本身;以及如果修改被確認,那么檢索所保存的用戶修改的信息并且根據用戶修改來修改文檔。
[0016]在另一方面,本發明的另一示例性實施方式提供了計算機程序和其中存儲有用于控制數據處理設備的計算機程序的計算機可讀記錄介質(例如,存儲器或存儲裝置),計算機程序被配置成使數據處理設備執行上述方法。
[0017]應該理解的是,前面的總體描述以及下面的詳細描述二者是示例性和說明性的,并且意圖提供如所要求的本發明的進一步說明。
【專利附圖】
【附圖說明】
[0018]圖1是示出了根據本發明的一個實施方式的示例性在線環境的示意性框圖。
[0019]圖2是示出了根據本發明的一個實施方式的示例性數據處理設備如具有數據處理單元的計算機或服務器的示意性框圖。
[0020]圖3是示出了根據本發明的實施方式的示例性數據處理設備如具有數據處理器或控制器單元的打印機或復印機的示意性框圖。
[0021]圖4是示出了根據本發明的一個實施方式的示例性處理的流程圖。
【具體實施方式】
[0022]本發明的實施方式提供了用于在用戶將PDF格式的文檔在線上傳至網絡服務器后對網絡瀏覽器上的PDF文件的預覽進行操作的方法和系統,其中,用戶對所上傳的文件的文檔的頁面做出的任何修改只是針對文檔頁面的縮略圖,而不是針對文檔本身,直到用戶確認修改為止。并且,在文檔頁面的縮略圖中立即顯示任何用戶修改,使得用戶在對文檔本身做出任何修改之前能夠確認所做的改變或者做出進一步改變。此外,除非用戶確認修改,否則只保存用戶修改的信息而不對文檔本身做出改變或保存對文檔的改變或處理對文檔的改變。此外,可以檢索用戶修改的信息以便用戶可以返回至處理過程中做出的更早的修改,而服務器不針對任何中間修改重新處理文檔本身。所有這些特征有助于減少服務器處理負荷及開銷的使用和浪費。
[0023]參考圖1,圖1示出一框圖,該框圖示出了其中可以實現本發明的各種實施方式的示例性在線系統設置或布置10。示例性在線環境包括:服務器,如由在線數字文件分配、生產、存儲或管理服務供應商如出版商、書店、文件存放處等操作的網絡存儲服務器20 ;用戶或客戶計算機或終端30 ;由第三方內容供應商或網絡服務供應商運營的一個或更多個服務器40 ;以及由打印商店或打印機50操作的一個或更多個服務器。其中,上述設備借助于一個或更多個計算機網絡60如因特網或其他通信鏈路進行連接。
[0024]在線服務供應商的運營者使用服務器20來訪問網絡60并且與用戶或客戶、第三方內容供應商及打印機進行交互。用戶或客戶可以使用計算機或終端30或者類似的合適裝置如筆記本電腦、平板電腦、電子閱讀器或智能手機等來訪問計算機網絡10并且與在線服務供應商、第三方內容供應商以及打印機進行交互。同樣地,第三方內容供應商和打印商店管理者可以使用其各自的服務器40和服務器50來訪問網絡10并且彼此進行交互并且與在線服務供應商和用戶進行交互。
[0025]在線服務供應商通常提供使用戶能夠對在連接至服務器20和/或網絡60的內部或外部文件存儲器或者數據庫中存儲為電子文件的文檔進行搜索、訪問、上傳或下載的綜合在線服務。在線服務還可以接受用戶的請求來進一步處理文檔,比如以數字文件的形式分發文檔或者以硬拷貝的形式產生文檔。
[0026]打印商店或打印機可以是配備有用于產生打印的產品如書、小冊子以及其他印刷的出版物等的打印機和各種其他圖像再現機器的專業打印商店。打印商店或打印機可以提供與在線服務供應商類似的服務,尤其是在用戶提交按需打印(POD)命令來產生和購買打印的產品時。
[0027]計算機和服務器20、30、40和50可以是計算機、服務器計算機或者計算機或服務器系統如網絡服務器,在其中可以安裝并執行實現本發明的示例性實施方式的各種處理的計算機軟件程序和/或應用。
[0028]通常,這些計算機和服務器提供用戶接口(UI)或圖形用戶接口(⑶I),以使用戶或運營商能夠與計算機軟件程序及應用進行交互來進行處理的各個步驟。
[0029]在本應用中,術語“服務器”通常指代可以用于實現由本發明的實施方式提供的方法或者進行由本發明的實施方式提供的處理的任何計算機、服務器、服務器計算機、服務器實例、計算機或服務器系統、數據處理器、控制器、數據處理單元或設備或者任何合適的系統、設備或裝置以及在這樣的系統、設備或裝置中安裝或執行的任何計算機軟件程序或應用。
[0030]用戶通常通過在用戶自己的計算機或在用戶可以通過用戶計算機或終端訪問的服務器如服務器20、40或50中之一上使用計算機程序或應用來訪問計算機和服務器20、30,40 或 50。
[0031 ] 在本應用中,術語“用戶”通常指代使用本發明的實施方式提供的方法或相關設備的任何人。
[0032]此外,如果沒有特別說明,本申請中的術語“用戶”和“服務器”可以交換使用來指代使用服務器的用戶和/或由用戶用來執行根據本發明的示例性實施方式的數字文件操作處理的步驟的服務器。
[0033]圖1中顯示的在線環境的各個組件之間的物理位置或商業關系不重要。例如,在線服務供應商的服務器可以位于打印商店處或者是單獨的機構、組織或商業機構。
[0034]如較早提及的那樣,在一方面,本發明的示例性實施方式被實現為使數據處理設備執行本發明的方法的示例性實施方式的計算機可讀記錄介質(例如,存儲器或存儲裝置)。計算機可讀記錄介質在其中存儲有用于控制數據處理設備的計算機程序,其中,計算機程序被配置成使得數據處理設備執行如圖2所示的本發明的處理。
[0035]參考圖2,圖2示出一示意性框圖,該框圖示出了示例性的服務器100,通過該服務器100可實現本發明的各個實施方式。服務器100通常包括用戶輸入裝置110,該用戶輸入裝置110包含例如鍵盤和鼠標。輸入裝置110可以通過本地輸入/輸出(I/O)端口 120連接至服務器100以使運營商和/或用戶與服務器100交互。還可以提供本地1/0120以用于經由直接鏈路本地連接到其他電子設備,比如文件存儲器、顯示器和/或打印機。
[0036]服務器100通常還具有用于連接至計算機網絡如因特網的網絡I/O端口 130,以便服務器100可以與連接至計算機網絡的其他服務器遠程通信。
[0037]服務器100通常具有數據處理器/控制器單元140,如控制服務器100的功能和操作的中央處理器單元(CPU)。數據處理器/控制器單元140連接至各種存儲器裝置如隨機存取存儲器(RAM)裝置150、只讀存儲器(ROM)裝置160以及存儲裝置170如硬盤驅動器或固態存儲器。存儲裝置170可以是內部存儲器裝置或外部存儲器裝置比如文件存儲裝置。
[0038]用于實現本發明的各種實施方式的計算機軟件程序代碼和指令可以安裝或保存在一個或更多個這些存儲器裝置中。數據處理器/控制器單元140執行這些計算機軟件程序和指令來執行功能和進行操作以實施本發明的各種實施方式的處理步驟。
[0039]服務器100通常還包括可以連接至本地1/0120的顯示裝置180如視頻顯示器或顯示屏。輸入裝置110與顯示裝置180共同提供了用戶界面(UI),該用戶界面(UI)使用戶能夠與服務器100進行交互以執行根據本發明的各種實施方式的處理步驟。
[0040]輸入裝置110和顯示裝置180可以集成在一個單元如觸摸屏顯示單元中,來提供使用戶與服務器100交互的更簡單且方便的UI。
[0041]應理解,服務器100可以是任何適合的計算機或計算機系統。優選地由例如在線服務供應商使用的服務器100是網絡存儲服務器。然而,由一般公眾中的成員使用的服務器100可以是桌面計算機、膝上型電腦、筆記本計算機、上網本計算機、平板計算機、手持便攜式計算機或電子裝置、智能手機或任何具有合適的數據處理能力的合適的數據處理設備。
[0042]參考圖3,圖3示出了一示意性框圖,該框圖示出了以文檔再現裝置比如打印機或復印機200實現的另一示例性數據處理設備,從而也可以實施本發明的各種實施方式。
[0043]打印機或復印機200通常包括包含小鍵盤和顯示屏的綜合控制面板210,或者提供輸入功能和顯示功能二者的觸摸屏。
[0044]打印機或復印機200可以具有用于與其他本地裝置如計算機連接的本地I/O端口220。打印機或復印機200通常還具有用于連接至網絡如因特網的網絡I/O端口 230,以便打印機或復印機200可以與連接至因特網的其他計算機和服務器遠程通信。
[0045]打印機或復印機200通常具有控制打印機或復印機200的功能和操作的數據處理器/控制器單元240。數據處理器/控制器單元240連接至各種存儲器裝置如RAM裝置250、ROM裝置260及存儲裝置270如硬盤驅動器或固態存儲器。
[0046]存儲裝置270可以是內部存儲器裝置或外部存儲器裝置如硬盤驅動器。用于實現本發明的各種實施方式的計算機軟件程序和指令可以安裝或保存在一個或更多個這樣的存儲器裝置中。
[0047]數據處理器/控制器單元240執行這些計算機軟件程序和指令來執行功能并進行實現本發明的各種實施方式的處理步驟的操作。
[0048]應該理解的是,數據處理設備200可以是任何合適的文檔再現裝置或系統,如打印機、復印機、掃描儀、傳真機、一體式打印機、打印系統或具有合適的數據處理能力的任何合適的文檔再現裝置。
[0049]參考圖4,圖4示出了一流程圖,該流程圖示出根據本發明的一個實施方式的示例性處理。處理開始于步驟S10,在步驟SlO中,用戶打開可以存儲在遠程網絡存儲服務器或打印商店服務器的上傳的PDF文檔,因為用戶可能需要在用戶的本地計算機上預覽該文檔來查看例如該文檔是否是正確的文檔或者是否需要對文檔做任何改變。可以提前將文檔上傳至遠程服務器,并且為了打開文檔,用戶可能需要從服務器檢索文檔并且經由連接本地用戶計算機以及遠程網絡存儲服務器或打印商店服務器的網絡將文檔下載至用戶的本地計算機。用戶計算機為用戶提供網絡瀏覽器來在線預覽文檔以用于這樣的目的:例如驗證文檔的內容和/或修改文檔的外觀。
[0050]在步驟S12中,用戶計算機首先將文檔的頁面從PDF處理成例如TIFF圖像或JPEG圖像。可選地,如果未將文檔下載至用戶計算機,那么遠程服務器可以將文檔的頁面處理成圖像并且將頁面圖像發送至用戶計算機以用于由網絡瀏覽器進行顯示。在步驟S14中,用戶計算機生成文檔頁面圖像的縮略圖,并在用戶計算機上將網絡瀏覽器上的縮略圖作為預覽顯示給用戶。可選地,遠程服務器可以生成縮略圖并且將縮略圖發送至用戶計算機以用于網絡瀏覽器進行顯示。當用戶查看網絡瀏覽器上的縮略圖時,用戶可以在步驟S16中修改用戶計算機上的文檔的一個或更多個頁面,例如旋轉、調整大小、裁剪、刪除或合并頁面坐寸ο
[0051]用戶通過例如在用戶計算機上運行的網絡瀏覽器應用可以容易地處理這些優選地在用戶計算機上進行的步驟。當用戶成功地將PDF文檔上傳至服務器并且隨后PDF文檔被成功處理時,可以呈現給用戶若干個可用的動作的選項,如PDF文檔的一個或更多個頁面的旋轉、調整大小、裁剪、移除和合并。
[0052]例如,在步驟S14中,用戶可以首先通過適當地選擇可選擇的頁面元素如復選框,或者突出顯示由瀏覽器顯示的適當的圖像來選擇用戶希望修改的PDF文檔的頁面。當選擇了任何數目的頁面時,將以可選鏈接的形式對用戶呈現任何可用選項,如標準按鈕、圖像按鈕或鏈接按鈕。當用戶在所選擇的頁面上選擇動作時,關于這些修改的數據將會保存至服務器或者第三方,即,在步驟S18中,用戶計算機在例如用戶計算機的緩沖存儲器中,或者可選地在遠程網絡存儲服務器或打印商店服務器或者甚至第三方服務器的數據庫中暫時保存用戶修改的信息,例如旋轉文檔的第二頁的命令。在步驟S20中,用戶計算機只對預覽中的縮略圖做出改變而不對實際的PDF文件本身做任何修改。對縮略圖的改變是即時的,且在用戶計算機上將改變的縮略圖作為預覽顯示給用戶。通過刷新所選擇的頁面并且經由編碼對其進行操作在例如網絡瀏覽器上將變化立即顯示給用戶,但是此刻不將變化應用于原來的PDF文檔。通常縮略圖的尺寸更小并且分辨率更低,所以對縮略圖的任何改變需要少得多的服務器資源及開銷來改變它們。由于未對PDF文件做出改變,因此不存在對TOF文件的重新處理(例如,圖像生成),從而減少了計算機處理負荷及開銷的使用和浪費。
[0053]在步驟S22中,當用戶預覽用戶計算機上的修改過的縮略圖時,用戶可以確認或取消修改。如果用戶決定不作修改,那么在步驟S24中,用戶計算機丟棄預先保存的用戶修改的信息,并且不需要再做任何操作。
[0054]如果用戶對修改滿意并且確認修改,那么在步驟S26中,用戶計算機從其存儲器檢索預先保存的用戶修改的信息,例如旋轉文檔的第二頁的命令。如果用戶未確認并且離開頁面或關閉瀏覽器,則不將改變應用于PDF文檔。用戶必須選擇瀏覽器上顯示的適當的保存選項以永久地保存修改。
[0055]在步驟S28中,用戶計算機根據確認的用戶修改的信息例如旋轉文檔的第二頁來修改PDF文件。在步驟S30中,用戶計算機將修改過的PDF文檔發送至遠程網絡存儲服務器或打印商店服務器以進行存儲。
[0056]可選地,在步驟S32中,用戶計算機將所確認的用戶修改的信息發送至遠程網絡存儲服務器或打印商店服務器。在步驟S34中,遠程服務器根據所確認的用戶修改的信息修改PDF文件。
[0057]最后,步驟S36中,遠程服務器將所修改的PDF文件保存在存儲器中(這也發生在步驟S30后),以后可以對該存儲器進行訪問以檢索電子數字文檔或以硬拷貝形式進行打印。
[0058]可選擇地,服務器可以將PDF文件重新處理成圖像,該圖像將反映對PDF文件所做出的修改。可以不需要重新處理整個文件。例如,如果唯一的修改是旋轉文檔的第二頁,那么只需要重新處理文檔的第二頁,例如,針對所修改的PDF文件生成第二頁的新圖像。可以由用戶計算機上的網絡瀏覽器再次顯示重新處理過的頁面圖像。用戶可以提交修改過的文檔以進行進一步處理例如分配或打印。
[0059]如圖4中的虛線框所指示的,通常由用戶計算機執行上述步驟SlO至步驟S32,并且由遠程網絡存儲服務器或打印商店服務器執行步驟S34至步驟S36,其中,上面的虛線框指示通常由用戶計算機執行的步驟,而下面的虛線框指示通常由遠程服務器執行的步驟。當然如上面所指出的那樣,如果適合的話,也可以由遠程服務器進行上面的虛線框中的某些步驟,例如,步驟S12和步驟S28。
[0060]本發明方法的各種實施方式具有許多優點。例如,由于用戶對所上傳的文檔的頁面做出的任何修改只是縮略圖級別的“處理”,所以能夠幾乎即時顯示修改的預覽以使用戶能夠在對文檔本身做出任何修改之前確認做出的改變或者做出進一步改變。
[0061]此外,當用戶周旋于替代的修改效果時,所保存的用戶修改的信息可以使用戶在不丟失用戶修改處理的蹤跡的情況下回到之前嘗試的改變。
[0062]此外,由于只保存用戶修改的信息而不對文檔本身做出改變或保存或處理該改變,這減少了服務器處理負荷及開銷的使用和浪費。
[0063]對本領域普通技術人員明顯的是,在不背離本發明的精神或范圍的情況下可以在本發明的方法和相關設備中做出各種修改和變型。因此,意圖使本發明覆蓋在所附權利要求及其等同方案范圍內的修改和變化。
【權利要求】
1.一種用于操作數字文件的方法,包括下述步驟: 處理來自遠程服務器的文檔的所有頁面以生成用于圖像的在線顯示的頁面圖像; 在經由網絡連接至所述遠程服務器的本地計算機上顯示所述文檔的所述頁面圖像的預覽; 暫時保存用戶修改的信息; 根據所述用戶修改只改變所述本地計算機上的所述頁面圖像的預覽,而不修改所述遠程服務器上的所述文檔本身;以及 如果所述修改被確認,那么檢索所保存的所述用戶修改的信息并且根據所述用戶修改來修改所述文檔。
2.根據權利要求1所述的方法,其中,在由所述本地計算機提供的網絡瀏覽器中顯示所述預覽。
3.根據權利要求1或2所述的方法,還包括如下步驟:生成所述文檔的所述頁面圖像的縮略圖作為所述預覽。
4.根據權利要求1至3中任一項所述的方法,還包括下述步驟:如果所述修改未被確認,那么丟棄暫時保存的所述用戶修改的信息。
5.根據權利要求1至4中任一項所述的方法,其中,所述處理文檔以生成頁面圖像的步驟由所述本地計算機執行。
6.根據權利要求1至4中任一項所述的方法,其中,所述處理文檔以生成頁面圖像的步驟由所述遠程服務器執行。
7.根據權利要求6所述的方法,還包括將生成的所述頁面圖像通過所述網絡從所述遠程服務器發送至所述本地計算機的步驟。
8.根據權利要求1至7中任一項所述的方法,其中,所述根據所述用戶修改來修改所述文檔的步驟由所述遠程服務器執行。
9.根據權利要求1至7中任一項所述的方法,其中,所述根據所述用戶修改來修改所述文檔的步驟由所述本地計算機執行。
10.根據權利要求9所述的方法,還包括如下步驟:將所述修改的文檔通過所述網絡從所述本地計算機發送至所述遠程服務器。
【文檔編號】H04L29/08GK104050227SQ201410096287
【公開日】2014年9月17日 申請日期:2014年3月14日 優先權日:2013年3月15日
【發明者】丹尼爾·巴爾伯, 吳迪非 申請人:柯尼卡美能達美國研究所有限公司