你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

MCU生成简单PDF文档  

[复制链接]
anobodykey 发布时间:2017-6-17 23:03
赞 5 收藏 22 评论152 发布时间:2017-6-17 23:03
152个回答
goodgsq1 回答时间:2019-2-28 09:35:20
真是牛人啊!
gxg001 回答时间:2019-3-14 22:35:23
楼主你好,请问r如何修改字体颜色和PDF页面尺寸?谢谢!
zushm 回答时间:2019-3-15 21:40:12
不错的库文件, 合泰有款单片机集成了pdf库。也很牛逼。
zttx 回答时间:2019-3-16 21:30:45
厉害,学习中。。。
gxg001 回答时间:2019-3-20 21:58:12
我的怎么不行呢?为啥生成的pdf都是空白的?
  1. int main(void)
    8 g. U+ U) u2 K, u! t+ C# x- R- `
  2. {         
    $ N/ R4 ]7 P( ~: J) |
  3.         u32 total,free;4 k% c: B2 L! M, ~5 f' p
  4.         u8 t=0;       
    ; t8 J/ _# ^, ?3 ]
  5.         u8 res=0;
    3 V- g' a$ r/ R% j# s: }- D
  6.     FIL        fil;
    ; W1 l& J% ?6 S8 P
  7.         UINT a,b,c,d, e;
    ' Z0 g1 b  S) K: y
  8.         BYTE buf[1024];
    ( |3 g% \' N% {( f- D! U% a
  9.          FRESULT resu;/ f( A0 o8 P$ [. e
  10.          FILINFO finfo;           _! p3 \. ~. @& ~" b3 E
  11.          
    " P7 I+ d6 i8 {+ r0 X0 e
  12.     FRESULT error;, o8 s. X/ o* U3 e$ e- P
  13.    
    ( z" `8 J" v% @
  14.         LPDF_Doc pdf;
    1 I: g& h, p7 N% p
  15.         LPDF_Page page[300];
    ! J9 b, ?% U$ f& J$ R) p% p, L) P5 U
  16.     LPDF_Image image;
    : b& @3 ?" d( {# \3 [. ~
  17.     LPDF_UINT16 width = 0,height = 0, i = 0,j = 0,m=0;  
    1 w! }2 j! Z1 T2 i) C5 z6 Y, G
  18. ( T1 k6 u" y6 l$ c
  19.         delay_init();                     //延时函数初始化          % o/ U9 U- {1 b) U1 G7 I
  20.         NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);//设置中断优先级分组为组2:2位抢占优先级,2位响应优先级
    , P# s1 ~+ A( a; C) N/ e* N
  21.         uart_init(115200);                 //串口初始化为115200
    8 [; g6 u5 m1 M- {
  22.         usmart_dev.init(72);                //初始化USMART                % ]5 D$ P  l; K% l
  23.         LED_Init();                                          //初始化与LED连接的硬件接口
      y; J2 O8 {+ X2 |' J6 D. t5 b$ Z
  24.         KEY_Init();                                        //初始化按键
    : u8 l% W( k) l" I9 W
  25.         LCD_Init();                                           //初始化LCD   
    : ^& u9 D# _) E2 c& c( r% H* ^- a! {( u
  26. //        SPI_Flash_Init();                                //初始化W25Q128
    , ~  l4 T4 {& g3 {# t! b) w
  27.         mem_init(SRAMIN);                    //初始化内部内存池
    9 z- P9 ]6 A" l: u
  28.         POINT_COLOR=RED;                        //设置字体为红色
    - E6 V$ X# Z# n' R" U5 E
  29.         LCD_ShowString(30,50,200,16,16,"WarShip STM32");        3 f! [) ~; P7 V+ L1 Z- g
  30.         LCD_ShowString(30,70,200,16,16,"FATFS TEST");       
    0 d6 T8 R" L' j3 x1 E
  31.         LCD_ShowString(30,90,200,16,16,"ATOM@ALIENTEK");) K0 K2 p* V; j' H2 t
  32.         LCD_ShowString(30,110,200,16,16,"2015/1/20");
    ( \) j; B; D4 Y3 }; D
  33.         LCD_ShowString(30,130,200,16,16,"Use USMART for test");) e) I  `/ X: |  W. y/ v
  34.         while(SD_Initialize())//检测不到SD卡- A6 b/ `  m" o3 w, E2 r: i* J% k5 Z
  35.         {
    ! I/ S* n. V- B  M' }0 u
  36.                 printf("SD Card Error!\r\n");2 ~4 E  y/ r% ^. Y: Z4 g
  37.                 delay_ms(500);                                        0 k& j* T: U1 m! r7 f# W; Q& u7 x
  38.                 printf("Please Check!\r\n ");2 |6 [) g" P8 i. R+ D
  39.                 delay_ms(500);- N* D& r5 I' c) A/ j  r
  40.                 LED0=!LED0;//DS0闪烁& h+ U( B+ n, t* Y3 u0 f4 |- _( C
  41.         }! t' \2 ?# a& k! J
  42.         exfuns_init();                                                        //为fatfs相关变量申请内存                                 1 f$ f9 L! |: j7 Y) z
  43.           f_mount(fs[0],"0:",0);                                         //挂载SD卡 , R! A  t5 N$ U6 u/ t# w2 D# f$ v
  44. //         res=f_mount(fs[1],"1:",1);                                 //挂载FLASH.       
    8 X$ f$ T$ I8 Z7 R: i% A
  45. //        if(res==0X0D)//FLASH磁盘,FAT文件系统错误,重新格式化FLASH
    1 n+ A7 m/ r7 m# B
  46. //        {
    * |& g8 f- I. S# O
  47. //                LCD_ShowString(30,150,200,16,16,"Flash Disk Formatting...");        //格式化FLASH
      e# k* d8 C; o% j% S
  48. //                res=f_mkfs("1:",1,4096);//格式化FLASH,1,盘符;1,不需要引导区,8个扇区为1个簇6 I  G# v/ h1 ~
  49. //                if(res==0)
    ' [. {# t3 V: ?0 Y- ^
  50. //                {" @/ t3 ~6 o: v& \2 |
  51. //                        f_setlabel((const TCHAR *)"1:ALIENTEK");        //设置Flash磁盘的名字为:ALIENTEK
    4 |4 B' |5 e) d( a' j
  52. //                        LCD_ShowString(30,150,200,16,16,"Flash Disk Format Finish");        //格式化完成
    0 O. y. H3 R4 @. r+ _3 Q) V  P
  53. //                }else LCD_ShowString(30,150,200,16,16,"Flash Disk Format Error ");        //格式化失败
    1 @: q8 @3 @" L3 e2 L. y4 g
  54. //                delay_ms(1000);
    8 D& m7 ?: A) ^/ N; M- B' z1 w
  55. //        }                                                                                                            * J7 y5 Y) `+ R, {, \
  56.         LCD_Fill(30,150,240,150+16,WHITE);                //清除显示                          
    % ~# k0 G9 l4 D
  57.         while(exf_getfree("0",&total,&free))        //得到SD卡的总容量和剩余容量8 x5 \3 B6 f' Y  y0 C! y
  58.         {
      y) k8 R. l4 q# P  C* T
  59.                 LCD_ShowString(30,150,200,16,16,"SD Card Fatfs Error!");$ o0 o/ q- N/ u
  60.                 delay_ms(200);
    2 [* P8 }8 ^+ q# X& S/ f
  61.                 LCD_Fill(30,150,240,150+16,WHITE);        //清除显示                          
    . p: W5 E' b+ s/ Y
  62.                 delay_ms(200);  u/ a2 N' ?2 U. L
  63.                 LED1=!LED1;//DS0闪烁8 Z. C: Z3 r2 K1 b. i  d1 ?" S" m
  64.         }                                        3 `4 [6 y' a: f0 R
  65.   
    8 V4 {& L3 {+ v4 w2 H( {+ q8 ]
  66.    
    7 F  V* G# ?/ z" u' h+ d4 Q
  67.     #if (_FS_RPATH >= 2U)9 E' B& t% `# V- N$ W
  68.     error = f_chdrive((char const *)&driverNumberBuffer[0U]);$ G; o: a; G8 _( x1 o, a
  69.     if (error)9 s3 I: ]6 o# n8 H
  70.     {
    5 |0 F7 t2 x; |0 S$ y
  71.         PRINTF("Change drive failed.\r\n");
    . P% u1 _" J5 T$ c4 X$ u, o
  72.         return -1;4 K( A3 W' M: }
  73.     }
    " o, U3 u, t- e* C, m- h5 x
  74. #endif
    : L0 X/ w' O$ e! n5 l) a
  75.    
    ; U( M+ N! t) t1 T$ n" r" c4 \
  76.     pdf = LPDF_New();
    0 ]/ w5 o& O  X7 K
  77. //   for(j = 0; j < 70; j++)
    ' O* m3 R% b' [
  78.     {
    % |' S5 Y6 B% a9 k8 V) K# A0 D% Q
  79.                 page[j] = LPDF_AddPage(pdf);$ g( O: q, ]6 M8 v4 R' I# b
  80.                 width = LPDF_Page_GetWidth(page[j]);- r( ~( J5 H  e$ j7 d& f: L! H5 h
  81.                 height = LPDF_Page_GetHeight(page[j]);7 s; p& ?, {/ c5 M3 c- k
  82.         //    LPDF_Page_SetRGBFill(page[0], 1.0, 0.0, 0.0);      // 红色0 [" [0 e8 a" F; H: u, U" y
  83.                 LPDF_Page_SetRGBFill(page[j], 0.0, 0.0, 0.0);      // 黑色      
    & ^0 z+ c, N3 p; p
  84.                 LPDF_Page_BeginText(page[j]);
    + s3 Q- g4 x; `0 p0 e3 `. Z, V
  85.                
    5 o. [$ {/ d# e  y/ |/ c& s4 s& K
  86.                 LPDF_Page_MoveTextPos(page[j], 20, height-10);    9 X2 y% ?0 ~, x1 w% L
  87.                 LPDF_Page_SetFontAndSize(page[j],"SimSun",6);  V  R, F. k3 \: K5 M4 a6 |1 |
  88.                 LPDF_Page_ShowText(page[j], "日期       时间    温度℃   湿度%");     
    ! c" N+ j) o7 r! ]9 n/ F1 L5 ~4 l
  89.                
    8 H* e# |! F% l, \; d. G& }4 x2 k
  90.                 LPDF_Page_MoveTextPos(page[j], -10, -8);/ k, p: x! E+ [# J
  91.                
    , p7 d  E. B, d; F4 `/ L
  92.                 for(i = 0; i < 35;i++)- v2 o. c. w9 k! W
  93.                 {' T4 z% K# V* }
  94.                         LPDF_Page_SetFontAndSize(page[j], font_list[8], 8);
    7 b; ?1 w9 C5 V% ?  E# g
  95.                         LPDF_Page_ShowText(page[j], "2019/3/18   20:56     13.9       44");% _7 @2 s/ Z1 H: V: Z6 ]8 {$ W
  96.                         LPDF_Page_MoveTextPos(page[j], 0, -8);& M9 Y5 t: T+ f+ ]# p
  97.                 }
    & P8 \' s: ]* F' Y5 ~8 i( u
  98.                 LPDF_Page_EndText(page[j]);+ F  z- \( _, |
  99. & f0 E7 r1 U! C; y2 u
  100.                 LPDF_Page_SetLineWidth(page[j],0.5);
    0 E1 {: u( z! @: r" x
  101.                 LPDF_Page_MoveTo(page[j], width-205, height-5);
    - ]$ C# M: A) k
  102.                 LPDF_Page_LineTo(page[j], width-85, height-5);) {3 e+ u' V0 i/ I, n' G5 s
  103.                 LPDF_Page_LineTo(page[j], width-85, height-292);/ X# B# v  ]; s  {
  104.                 LPDF_Page_LineTo(page[j], width-205, height-292);
    * ]. N2 v. |2 \: a) k6 B
  105.                 LPDF_Page_LineTo(page[j], width-205, height-5);5 G. Y0 k- r' o8 @! C1 n, k6 e- V
  106.                
    9 l+ B. t6 c& l- l! ]
  107.                 LPDF_Page_MoveTo(page[j], width-165, height-5);* r" P8 O6 w9 l! H! l- r
  108.                 LPDF_Page_LineTo(page[j], width-165, height-292);& w' ~: Q: F. V* \# O4 v
  109.                 ! g5 a6 _6 Z8 }
  110.                 LPDF_Page_MoveTo(page[j], width-140, height-5);
    8 w' r+ L$ f3 G& U$ |$ n1 }
  111.                 LPDF_Page_LineTo(page[j], width-140, height-292);1 h4 Y4 y) t: h6 s9 w$ A
  112.                
    . C7 s6 p. x9 X& \& y6 q
  113.                 LPDF_Page_MoveTo(page[j], width-115, height-5);# V9 }' z; H  t' h8 o+ W
  114.                 LPDF_Page_LineTo(page[j], width-115, height-292);- ~! k8 Q) |9 \) z0 ^) K6 g
  115.                 & @4 j( W5 m" |* e1 b+ Q
  116.                 for(m = 0; m < 35;m++)' C& C3 H  v: e! Z! Q: e$ E
  117.                 {
    1 ~- P% m( ~" c! H
  118.                         LPDF_Page_MoveTo(page[j], width-205, height-(12+m*8));  [: U) z$ ]. A
  119.                         LPDF_Page_LineTo(page[j], width-85, height-(12+m*8));1 {1 s1 O2 N% ^2 v% I. ?
  120.                 }
    0 D' m- |( M. G! ]5 S9 m
  121.                 LPDF_Page_Stroke(page[j]);4 B% G% e9 d  l4 N" v: q1 g# q

  122. $ o" s/ T9 H* i- r+ Q8 [3 y' f
  123.                 LPDF_Page_SaveContext(page[j]);
    % r7 @& |% h: f5 C2 z+ |/ F
  124.     }    * I# u5 ~+ L7 _0 T4 E# b9 D
  125.         ) p  C7 ]9 |9 ~0 ^, B/ Y8 G
  126.     LPDF_SaveToFile(pdf, "Data.pdf");
    + }4 N5 O8 V9 a
  127. 0 E; J( O* @$ n. W" h' Y, D
  128.         printf("OVER...\n");
    ' L2 r* O( q1 _5 d: P% h
  129. 7 v* r4 |$ z9 E: u& w! z8 p
  130.         while(1)
    0 C$ C5 v; J& y0 q) ~" l! H
  131.         {+ ~* ~6 `7 y+ S  @' j0 Q' p7 T
  132.                 t++;
    - r. b; y7 b4 `1 i; m% Q
  133.                 delay_ms(200);                                            * o7 A$ D+ A; s) K% b
  134.                 LED0=!LED0;4 x, ?2 z7 v  q$ u; P9 p' L. k
  135.         }
    + Q- {- |! u$ y. n: x
  136. }
    ! h- z) P7 z, @# f4 l
复制代码
mingriyoutianya 回答时间:2019-4-13 21:01:22
zushm 发表于 2019-3-15 21:40
/ y8 V* {8 A& F不错的库文件, 合泰有款单片机集成了pdf库。也很牛逼。
" x1 s9 @1 V3 G- v3 _3 j
请问合泰哪种型号单片机集成了pdf库
w2000abc 回答时间:2019-6-18 15:42:35
楼主功底真好!感谢分享!
不吃肉的羊 回答时间:2019-7-8 23:56:15
移植到STM32,HAL库,STM32F103R,W25Qxx
6 |9 S2 `( C4 v. Mhttp://github.com/Jun1172/stm32_pdflib_msc_storage
byronsong 回答时间:2019-7-9 08:30:15
多谢分享
eeseuads 回答时间:2019-7-17 19:42:27
赞赞赞赞
菜鸟Y疯狂 回答时间:2019-8-22 09:52:25
先给楼主赞一个。再问下,楼主有试过在pdf中生成折线图吗?
浅唱浅唱 回答时间:2019-9-26 10:25:53
楼主您好,请教下插上USB为啥会出现无法格式化USB呢
浅唱浅唱 回答时间:2019-9-26 17:29:00
不吃肉的羊 发表于 2019-7-8 23:56
2 _% c) ?  j7 `7 m9 Z3 `2 ?* m" k移植到STM32,HAL库,STM32F103R,W25Qxx
6 ~' m  k& s- t4 D1 M( `" L! yhttp://github.com/Jun1172/stm32_pdflib_msc_storage

; M# M- @' G8 f2 a您这可以吗?试着不行啊
linuxdaxia 回答时间:2019-9-26 19:02:01
666666
tanic 回答时间:2019-9-26 19:09:20
厉害了  收藏一波
关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
人形机器人运动控制、感知与智能配电
半导体创新技术与应用方向
EE架构与软件定义汽车
12V/48V 汽车智能配电(SPD)
区域控制单元(ZCU)与分区架构
关注我们
st-img 微信公众号
st-img 手机版