回答
您很可能需要完整版Adobe Acrobat。 (與免費版本相反,Adobe Reader。)
其實我需要某種命令行工具進行批量轉換或某些API能夠動態轉換。 – user285677 2010-08-10 15:46:10
您應該將此要求添加到問題的詳細信息中。 – JYelton 2010-08-10 15:57:57
Pdf 1.1與pdf 1.4是前向兼容的。 pdf 1.1中的所有內容都將與pdf 1.4一起工作 - 它由規範保證。讓我們假設你有一些合理的理由,爲什麼這對你來說不夠好(例如,假設你有一個不符合規範的工具,它會使用PDF並在任何小於1.4的文件上爆炸)。
我們可以關注版本之間的主要語法差異。
所有的PDF文件頭1024字節都有一個標頭。在大多數情況下,這是第一行,但不能保證(我在看你的GhostScript!)。頭看起來像這樣在PDF 1.1:
%PDF-1.1
在PDF 1.4,它看起來像這樣:
%PDF-1.4
所以從理論上講,所有你需要的是一個工具,它會對着前1024個字節爲「%PDF-1.1」文件並將其更改爲「%PDF-1.4」。你可以使用sed,perl等來爲你做這樣的事情。你可以用C寫,你會受到誘惑,做這樣的事情:
#define PDFHEADERSIZE 1024
bool ChangeFileToNewPdfVersion(char *file)
{
char *replacePoint = NULL;
FILE *fp = fopen(file, "rw");
char buf[PDFHEADERSIZE + 1];
buf[PDFHEADERSIZE] = '\0';
if (fread(buf, 1, PDFHEADERSIZE, fp) != PDFHEADERSIZE) { fclose(fp); return false; }
fseek(fp, 0, SEEK_SET);
if ((replacePoint = strstr(buf, "%PDF-1.1")) == NULL) { fclose(fp); return false; }
replacePoint[7] = '4';
if (fwrite(buf, 1, PDFHEADERSIZE, fp) != PDFHEADERSIZE) { fclose(fp); return false; }
fflush(fp);
fclose(fp);
return;
}
將工作在大多數情況下,明智的。如果文件啓動,它將不起作用,例如,0字節將用作數據塊中的空終止符。
一個更好的選擇(真的)會是拼湊一個簡單的狀態機來找到%PDF-1。通過一次讀取1個字節,直到它找到它或傳遞1017(1024減去標題長度),然後讀取下一個字節,如果它是'1',則追回一個字節並寫入'4'。
您需要擔心的唯一其他事情是PDF 1.4建議文檔目錄應該包含帶有文件版本的版本密鑰。由於在規範中將其定義爲可選,因此您可以放心地忽略它。
所以這會解決你的問題。然而,我不認爲你應該這樣做。真。
您應該花些時間閱讀部分PDF規範,特別是關於版本號和兼容性的第I.2節。
Adobe規範包含以下實現注意事項: 14.Acrobat查看器也接受 %的表頭!PS-Adobe-N.n PDF-M。m 也可能值得去尋找這種形式。 – Bobrovsky 2010-08-11 18:38:33
- 1. 將事件從.net 1.1轉換爲.net 2.0或更高版本
- 2. 如何在PHP中將PDF版本1.5轉換爲版本1.4
- 3. 將PDF從servlet轉換爲舊版本?
- 4. ImageMagick從圖像創建PDF版本1.4?
- 5. Cassandra 1.1及更高版本與JNA
- 6. 編輯PDF的更高的版本比1.4 Zend_Pdf
- 7. Cassandra 3.0及更高版本需要Java 8u40或更高版本
- 8. 將MahApps.Metro從版本0.13.1更新到更高版本
- 9. iOS App更新版本1.1
- 10. WiFi Direct爲Android 2.3或更高版本
- 11. 使用Xcode 6或更高版本或Application Loader 2.9.1或更高版本提交您的版本
- 12. 如何將項目從Framework版本2.0重建到版本1.1?
- 13. 在安裝j2se 1.4或更高版本時遇到問題
- 14. 如何將熊貓從版本0.17.1升級到更高版本?
- 15. Java 3D錯誤:需要OpenGL 1.2或更高版本(GL_VERSION = 1.1)
- 16. 在node.js上強制使用TLS 1.1或更高版本
- 17. 使用php轉換PDF版本1.7到版本1.6
- 18. 將J2EE 1.3應用程序轉換爲Java EE 5或更高版本
- 19. Qt SDK版本1.0和版本1.1
- 20. 如何將xslt版本2.0轉換爲版本1.0
- 21. 將curl_version()轉換爲版本字符串的24位版本號
- 22. 如何將StyleCop規則從版本4.3或4.5轉換爲4.6?
- 23. CentOS如何將ANT版本更新至1.8.x或更高版本?
- 24. 使用PHP或Javascript檢查iOS版本是否爲3.0或更高版本
- 25. SLF4J錯誤:這SLF4J的版本需要log4j的版本1.2.12或更高版本
- 26. oracle jinitiator版本過低請安裝版本1.1.8.2或更高版本
- 27. 此版本的cli只與角度版本2.3.1或更高版本兼容
- 28. 如何將HTML網頁轉換爲PDF版本
- 29. 使用最新版本將iText XML轉換爲PDF
- 30. 錯誤:此版本的PyQt5需要sip 4.19.1或更高版本
你能描述一下你爲什麼需要這個嗎? 1.1與所有Acrobat版本兼容。 – plinth 2010-08-10 17:55:00
沒有關於這種轉換目標的更多細節,這個問題完全不清楚。 – Bobrovsky 2010-08-10 21:08:22
目標非常簡單。將pdf從版本1.1轉換爲1.4 – user285677 2010-08-11 09:18:38