我想在iOS中添加一個自動分頁符到libHaru PDF。自動分頁在libHaru PDF
我在應用程序中有幾個文本字段,其中包含用戶填充的數據。當我生成pdf時,首先測量要創建的文本的預期大小。如果它超過剩餘空間,我會觸發hpdf_new_page事件並將文本放在新頁面上。我想這只是部分自動。所以如果文本超出了當前頁面上的空間,它應該拆分並在新頁面上繼續,而不用檢查或執行任何操作。 不幸的是我在文檔中找不到像這樣的東西。
我想在iOS中添加一個自動分頁符到libHaru PDF。自動分頁在libHaru PDF
我在應用程序中有幾個文本字段,其中包含用戶填充的數據。當我生成pdf時,首先測量要創建的文本的預期大小。如果它超過剩餘空間,我會觸發hpdf_new_page事件並將文本放在新頁面上。我想這只是部分自動。所以如果文本超出了當前頁面上的空間,它應該拆分並在新頁面上繼續,而不用檢查或執行任何操作。 不幸的是我在文檔中找不到像這樣的東西。
使用fgets()進行行計數可能會有幫助。當你的打印程序中打開要打印的文件,每行可被複制到PDF文件,並檢查換頁符
或
如果行數已經達到了一個極限。
另一種可能的解決方案是對「while(getc(file)!= EOF)」使用字符數限制。
此鏈接使用libharu使用PCL命令打印基本文本文件以更改字體。 https://github.com/DaDaDadeo/GetCycle/blob/master/pcl_to_pdf.c
換行字符'\ f'(ascii 12)和61行將觸發一個新頁面。程序中還有其他條件限制新頁面,但總體思路已經說明。
結果與使用telnet raw 9100協議的打印機相同。 pcl命令僅限於幾個字體更改,所以它不會太複雜。
Libharu是一個相當低級的庫,我甚至無法期望在更新的版本中出現這種自動分頁的原因有很多。此後我陳述其中兩個:
爲什麼?
考慮您的字體非常大,只是一個字母(例如,一個廣爲「W」)不適合的頁面。我們應該在哪裏放置它?在下一頁?好的,我們添加新的頁面... oops,它不適合這個頁面 - 只要我們所有的頁面具有相同的大小。死路沒有任何好的,直接的出路。換句話說,這些案例應該有一個用戶定義的策略。 Almosy每一個天真的執行都會有這樣的角落案例。
libharu不知道其中它應該自動分割您的文本。它不知道你的語言的連字規則,它不知道它是否應該尊重空格(僅包含整個單詞),等等。您需要指定這些規則。
所以,你應該叫HPDF_Font_MeasureText爲您的文本字符串的某些部分,決定是否適合你的頁面(不包括邊距,頁腳 - 這也是出於libharu的內部知識)和渲染。並且請注意,根據文本的長度不存在簡單的文本大小公式。字符串「wwww」比「iiii」寬兩倍以上,當然如果你的字體不是單排列的。
好的,我會試試。但由於文本來自一個簡單的iOS文本字段,我不知道如果我得到格式命令... – kriz